private void razdelitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DataGridView grid = (DataGridView)contextMenuStripCELL.SourceControl;

            if (grid.SelectedRows.Count == 1)
            {
                DataRowView curent_row        = (DataRowView)grid.SelectedRows[0].DataBoundItem;
                ___BASA__DataSet.ZurnalRow cr = (___BASA__DataSet.ZurnalRow)curent_row.Row;
                DelimVremya dv         = new DelimVremya();
                int         curent_per = dv.periodDefault = cr.period;
                dv.startTime = cr.time;
                dv.Tag       = this;
                if (dv.ShowDialog() == DialogResult.OK)
                {
                    cr.period = new_per_delim;
                    if (where_zap_whill_delim)
                    {
                        ___BASA__DataSet.Zurnal.AddZurnalRow(data_new_delim, curent_per - new_per_delim, (int)grid.Tag, "", cr.dataZap, 0, "", "");
                    }
                    else
                    {
                        ___BASA__DataSet.Zurnal.AddZurnalRow(data_new_delim, curent_per - new_per_delim, (int)grid.Tag, cr.zap, cr.dataZap, cr.PID, cr.PS, cr.zapTag);
                        cr.PID = 0; cr.zapTag = ""; cr.zap = ""; cr.PS = "";
                    }
                    setupDATESadd(cr.dataZap, cr.DID);
                }
            }
        }
        private void addTimeEndToolStripMenuItem_Click(object sender, EventArgs e)
        {
            addedPeriodToBegin = 0;
            addedPeriodToEnd   = 0;

            DataGridView curGrid = (DataGridView)((ContextMenuStrip)((ToolStripMenuItem)sender).Owner).SourceControl;

            if (curGrid.Rows.Count > 0)
            {
                DateTime dateOfDay = findDataForGrid(curGrid);

                DateTime minT   = DateTime.MaxValue;
                DateTime maxT   = DateTime.MinValue;
                int      maxPer = 0;
                foreach (___BASA__DataSet.ZurnalRow dr in ___BASA__DataSet.Zurnal.Select("DID=" + curGrid.Tag.ToString() + " AND dataZap='" + dateOfDay + "'"))
                {
                    if (dr.time.TimeOfDay.TotalMinutes > maxT.TimeOfDay.TotalMinutes)
                    {
                        maxT   = dr.time;
                        maxPer = dr.period;
                    }
                    if (dr.time.TimeOfDay.TotalMinutes < minT.TimeOfDay.TotalMinutes)
                    {
                        minT = dr.time;
                    }
                }
                AddTime at = new AddTime();
                at.Tag       = this;
                at.endTime   = maxT.AddMinutes(maxPer);
                at.beginTime = minT;
                if (at.ShowDialog() == DialogResult.Yes)
                {
                    if (addedPeriodToEnd != 0)
                    {
                        ___BASA__DataSet.ZurnalRow addedRow = ___BASA__DataSet.Zurnal.NewZurnalRow();
                        addedRow.dataZap = dateOfDay;
                        addedRow.PID     = 0;
                        addedRow.zap     = addedRow.zapTag = addedRow.PS = "";
                        addedRow.DID     = (int)curGrid.Tag;
                        addedRow.period  = addedPeriodToEnd;
                        addedRow.time    = maxT.AddMinutes(maxPer);
                        ___BASA__DataSet.Zurnal.AddZurnalRow(addedRow);
                        setupDATESadd(addedRow.dataZap, (int)curGrid.Tag);
                    }
                    if (addedPeriodToBegin != 0)
                    {
                        ___BASA__DataSet.ZurnalRow addedRow = ___BASA__DataSet.Zurnal.NewZurnalRow();
                        addedRow.dataZap = dateOfDay;
                        addedRow.PID     = 0;
                        addedRow.zap     = addedRow.zapTag = addedRow.PS = "";
                        addedRow.DID     = (int)curGrid.Tag;
                        addedRow.period  = addedPeriodToBegin;
                        addedRow.time    = minT.AddMinutes(-addedPeriodToBegin);
                        ___BASA__DataSet.Zurnal.AddZurnalRow(addedRow);
                        setupDATESadd(addedRow.dataZap, (int)curGrid.Tag);
                    }
                }
            }
        }
        private void cutToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DataGridView curGrid = (DataGridView)contextMenuStripCELL.SourceControl;

            if (curGrid.SelectedRows.Count == 1)
            {
                cutRow = (___BASA__DataSet.ZurnalRow)((DataRowView)((DataGridView)contextMenuStripCELL.SourceControl).SelectedRows[0].DataBoundItem).Row;
                pasteToolStripMenuItem.Enabled = true;
                setupDATESadd(cutRow.dataZap, cutRow.DID);
            }
        }
        private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DataGridView curGrid = (DataGridView)contextMenuStripCELL.SourceControl;

            if (curGrid.SelectedRows.Count == 1 && cutRow != null)
            {
                DataGridViewRow r = curGrid.SelectedRows[0];
                addZap((___BASA__DataSet.ZurnalRow)((DataRowView)r.DataBoundItem).Row, cutRow.PID, cutRow.zap, cutRow.PS, cutRow.zapTag);
                addZap(cutRow, 0, "", "", "");
                cutRow = null;
                pasteToolStripMenuItem.Enabled = false;
            }
        }
        private void dayParamToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DataGridView curGrid = (DataGridView)((ContextMenuStrip)((ToolStripMenuItem)sender).Owner).SourceControl;
            bool         pusto   = true;

            foreach (DataGridViewRow r in curGrid.Rows)
            {
                if (((DataRowView)r.DataBoundItem)["zap"].ToString() != "")
                {
                    pusto = false;
                    break;
                }
            }

            if (pusto ||
                (!pusto & MessageBox.Show("Выбранный день содержат записи. Изменение параметров дня приведет к потере всех записей.\rДля изменения продолжительности смены с сохранением записей воспользуйтесь функциями \"Объединить\\разделить время\", \"Продлить смену\".\rПродолжить?", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1) == DialogResult.Yes))
            {
                DateTime dateOfDay = findDataForGrid(curGrid);

                dayParam dp = new dayParam();
                dp.Tag = this;
                if (dp.ShowDialog() == DialogResult.Yes)
                {
                    foreach (DataRow ddrr in ___BASA__DataSet.Zurnal.Select("DID=" + curGrid.Tag.ToString() + " AND dataZap='" + dateOfDay + "'"))
                    {
                        ddrr.Delete();
                    }
                    int N_ofDayItem = (int)(endDay.TimeOfDay.TotalMinutes - begDay.TimeOfDay.TotalMinutes) / perDay;

                    DateTime ts = begDay;
                    for (int i = 1; i <= N_ofDayItem; i++)
                    {
                        ___BASA__DataSet.ZurnalRow r = ___BASA__DataSet.Zurnal.NewZurnalRow();
                        r.time    = ts;
                        r.period  = perDay;
                        r.DID     = (int)curGrid.Tag;
                        r.PS      = r.zapTag = r.zap = "";
                        r.dataZap = dateOfDay;
                        r.PID     = 0;
                        ___BASA__DataSet.Zurnal.AddZurnalRow(r);

                        ts = ts.AddMinutes(perDay);
                    }
                    setupDATESadd(dateOfDay, (int)curGrid.Tag);
                }
            }
        }
        void addZap(___BASA__DataSet.ZurnalRow row, int pid, string z, string ps, string zapTag)
        {
            row.PID = pid;
            if (z.Length > 255)
            {
                MessageBox.Show("Длина записи превышает допустимые 255 символов. Запись будет усечена.");
                z = z.Remove(255);
            }
            if (ps.Length > 255)
            {
                ps = ps.Remove(255);
            }

            row.zap    = z;
            row.PS     = ps;
            row.zapTag = zapTag;

            setupDATESadd(row.dataZap, row.DID);

            griddColors();
        }