private void btnPrepareAct_Click(object sender, EventArgs e)
        {
            if (grdData.CurrentRow == null)
            {
                return;
            }

            int nID = (int)grdData.CurrentRow.Cells["grcID"].Value;

            // проверить, закрыта ли уже копия
            CellContentSnapshot oCellContentSnapshotTemp = new CellContentSnapshot();

            oCellContentSnapshotTemp.ID = nID;
            oCellContentSnapshotTemp.FillData();
            if (oCellContentSnapshotTemp.ErrorNumber != 0 || oCellContentSnapshotTemp.MainTable == null || oCellContentSnapshotTemp.MainTable.Rows.Count != 1)
            {
                RFMMessage.MessageBoxError("Ошибка при проверке копии...");
                return;
            }
            if (Convert.IsDBNull(oCellContentSnapshotTemp.MainTable.Rows[0]["DateEnd"]))
            {
                RFMMessage.MessageBoxError("Копия еще не закрыта...");
                return;
            }

            StartForm(new frmCCSPrepareInventoryAct(nID));
        }
        public frmCellsContentsSnapshots()
        {
            oCellContentSnapshotList = new CellContentSnapshot();
            oCellContentSnapshotCur  = new CellContentSnapshot();
            if (oCellContentSnapshotList.ErrorNumber != 0 ||
                oCellContentSnapshotCur.ErrorNumber != 0)
            {
                IsValid = false;
            }

            if (IsValid)
            {
                InitializeComponent();
            }
        }
        private void btnCreate_Click(object sender, EventArgs e)
        {
            // проверить, нет ли уже незакрытой копии
            CellContentSnapshot oCellContentSnapshotTemp = new CellContentSnapshot();

            oCellContentSnapshotTemp.FilterIsClosed = false;
            oCellContentSnapshotTemp.FillData();
            if (oCellContentSnapshotTemp.ErrorNumber != 0 || oCellContentSnapshotTemp.MainTable == null)
            {
                RFMMessage.MessageBoxError("Ошибка при проверке существующих копий...");
                return;
            }
            if (oCellContentSnapshotTemp.MainTable.Rows.Count > 0)
            {
                RFMMessage.MessageBoxError("Существуют незакрытые копии...\n\rОткрытие новой копии невозможно.");
                return;
            }

            if (RFMMessage.MessageBoxYesNo("Открыть новую копию?") != DialogResult.Yes)
            {
                return;
            }

            oCellContentSnapshotTemp.ClearFilters();
            string sNote = "";

            if (StartForm(new frmInputBoxString("Примечание для копии:", sNote)) == DialogResult.Yes)
            {
                Refresh();
                sNote = GotParam[0].ToString();
                if (oCellContentSnapshotTemp.Create(0, ((RFMFormMain)Application.OpenForms[0]).UserID, sNote))
                {
                    grdData_Restore();
                    if (oCellContentSnapshotTemp.ID.HasValue && oCellContentSnapshotTemp.ID > 0)
                    {
                        grdData.GridSource.Position = grdData.GridSource.Find(oCellContentSnapshotList.ColumnID, Convert.ToInt32(oCellContentSnapshotTemp.ID));
                    }
                }
            }
        }
        private void btnClose_Click(object sender, EventArgs e)
        {
            if (grdData.CurrentRow == null)
            {
                return;
            }

            int nID = (int)grdData.CurrentRow.Cells["grcID"].Value;

            // проверить, не закрыта ли уже копия
            CellContentSnapshot oCellContentSnapshotTemp = new CellContentSnapshot();

            oCellContentSnapshotTemp.ID = nID;
            oCellContentSnapshotTemp.FillData();
            if (oCellContentSnapshotTemp.ErrorNumber != 0 || oCellContentSnapshotTemp.MainTable == null || oCellContentSnapshotTemp.MainTable.Rows.Count != 1)
            {
                RFMMessage.MessageBoxError("Ошибка при проверке копии...");
                return;
            }
            if (!Convert.IsDBNull(oCellContentSnapshotTemp.MainTable.Rows[0]["DateEnd"]))
            {
                RFMMessage.MessageBoxError("Копия уже закрыта...");
                return;
            }

            // проверить состояние ревизий
            Inventory oInventory = new Inventory();

            // нет ли незакрытых ревизий среди привязанных?
            oInventory.FilterCellContentSnapshotID = nID;
            oInventory.FilterConfirmed             = false;
            oInventory.FillData();
            if (oInventory.ErrorNumber != 0 || oInventory.MainTable == null)
            {
                RFMMessage.MessageBoxError("Ошибка при проверке незавершенных ревизий...");
                return;
            }
            if (oInventory.MainTable.Rows.Count > 0)
            {
                if (RFMMessage.MessageBoxYesNo("Обнаружены незавершенные ревизии, связанные с текущей копией остатков......\n" +
                                               "Все-таки закрыть текущую копию остатков?") != DialogResult.Yes)
                {
                    return;
                }
            }

            // нет ли неоткрытых ревизий, подготовленных в ближайшем прошлом
            oInventory.ClearFilters();
            oInventory.FilterStarted = false;
            oInventory.FilterDateBeg = DateTime.Now.Date.AddDays(-7);
            oInventory.FillData();
            if (oInventory.ErrorNumber != 0 || oInventory.MainTable == null)
            {
                RFMMessage.MessageBoxError("Ошибка при необработанных ревизий...");
                return;
            }
            if (oInventory.MainTable.Rows.Count > 0)
            {
                if (RFMMessage.MessageBoxYesNo("Обнаружены необработанные ревизии, оформленные в ближайший прошедший период...\n" +
                                               "Все-таки закрыть текущую копию остатков?") != DialogResult.Yes)
                {
                    return;
                }
            }
            //
            // все проверили, можно закрывать

            if (RFMMessage.MessageBoxYesNo("Закрыть текущую копию?") != DialogResult.Yes)
            {
                return;
            }

            if (oCellContentSnapshotTemp.Close(nID, ((RFMFormMain)Application.OpenForms[0]).UserID))
            {
                grdData_Restore();
            }
        }