void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                if (dataGridView1.Columns[e.ColumnIndex] == мастерColumn)
                {
                    this.Validate();
                    bindingSource1.EndEdit();

                    dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
                    temp uRow = bindingSource1.Current as temp;
                    клМастер.мастер = uRow.мастер;
                    клМастер.выбран = false;
                    выбор_мастера ВыборМастера = new выбор_мастера();
                    ВыборМастера.ShowDialog();
                    if (клМастер.выбран)
                    {
                        uRow.мастер      = клМастер.мастер;
                        uRow.фио_мастера = клМастер.фио;
                        try
                        {
                            подключения upRow = de.подключения.Single(n => n.подключение == uRow.подключение);
                            upRow.мастер = клМастер.мастер;
                            de.SaveChanges();
                            клМастер.изменен = true;
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("Сбой записи...");
                        }
                    }
                }
            }
        }
        void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                if (dataGridView1.Columns[e.ColumnIndex] == датаColumn)
                {
                    dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
                    подключения uRow = bindingSource1.Current as подключения;
                    клКалендарь.выбран = false;
                    клКалендарь.дата   = uRow.дата_дог;
                    календарь выборДаты = new календарь();
                    выборДаты.button3.Visible = false;
                    выборДаты.ShowDialog();
                    if (клКалендарь.выбран)
                    {
                        uRow.дата_дог = клКалендарь.дата.Value;
                        dataGridView1.Refresh();

                        label1.Visible = true;
                    }
                }
                if (dataGridView1.Columns[e.ColumnIndex] == дата_сColumn)
                {
                    dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
                    подключения uRow = bindingSource1.Current as подключения;
                    клКалендарь.выбран = false;
                    клКалендарь.дата   = uRow.дата_с;
                    календарь выборДаты = new календарь();
                    выборДаты.button3.Visible = false;
                    выборДаты.ShowDialog();
                    if (клКалендарь.выбран)
                    {
                        uRow.дата_с = клКалендарь.дата.Value;
                        dataGridView1.Refresh();
                        label1.Visible = true;
                    }
                }
                if (dataGridView1.Columns[e.ColumnIndex] == мастерColumn)
                {
                    dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
                    подключения uRow = bindingSource1.Current as подключения;
                    клМастер.мастер = uRow.мастер;
                    клМастер.выбран = false;
                    выбор_мастера выборМастера = new выбор_мастера();
                    выборМастера.ShowDialog();
                    if (клМастер.выбран)
                    {
                        uRow.мастер = клМастер.мастер;
                        if (de.Entry(uRow).State == EntityState.Unchanged)
                        {
                            de.Entry(uRow).State = EntityState.Modified;
                            // не работает в добавленой строке.
                        }
                        dataGridView1.Refresh();
                        label1.Visible = true;
                    }
                }
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            клУслуга.выбран = false;
            выбор_услуги ВыборУслуги = new выбор_услуги();

            ВыборУслуги.ShowDialog();
            if (клУслуга.выбран)
            {
                клМастер.выбран = false;
                выбор_бригады выборМастера = new выбор_бригады();
                выборМастера.ShowDialog();
                if (клМастер.выбран)
                {
                    int[] aa = new int[2];
                    aa[0] = 0;
                    aa[1] = 0;
                    int maxNum = 0;
                    if (de.подключения.Any())
                    {
                        maxNum = de.подключения.Max(n => n.номер_пп);
                        aa[0]  = maxNum;
                    }
                    if (de.подключения.Local.Any())
                    {
                        maxNum = de.подключения.Local.Max(n => n.номер_пп);
                        aa[1]  = maxNum;
                    }
                    maxNum = aa.Max();

                    подключения NewRow = new подключения();
                    NewRow.дата_дог    = DateTime.Today;
                    NewRow.дата_с      = DateTime.Today;
                    NewRow.клиент      = клКлиент.клиент;
                    NewRow.мастер      = клМастер.мастер;
                    NewRow.номер_дог   = "";
                    NewRow.номер_пп    = maxNum + 1;
                    NewRow.услуга      = клУслуга.услуга;
                    NewRow.подключение = Guid.NewGuid();
                    int строка = bindingSource1.Add(NewRow);
                    bindingSource1.Position = строка;
                }
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Cursor          = Cursors.WaitCursor;
            клКлиент.выбран = false;
            выбор_клиента ВыборКлиента = new выбор_клиента();

            ВыборКлиента.ShowDialog();
            if (клКлиент.выбран)
            {
                клУслуга.выбран = false;
                выбор_услуги ВыборУслуги = new выбор_услуги();
                ВыборУслуги.ShowDialog();
                if (клУслуга.выбран)
                {
                    клМастер.выбран = false;
                    выбор_бригады выборМастера = new выбор_бригады();
                    выборМастера.Text = "Выберите мастера";
                    выборМастера.ShowDialog();
                    if (клМастер.выбран)
                    {
                        int maxNum = 0;
                        if (de.подключения.Local.Any())
                        {
                            maxNum = de.подключения.Local.Max(n => n.номер_пп);
                        }
                        подключения NewRow = new подключения();
                        NewRow.дата_дог    = DateTime.Today;
                        NewRow.дата_с      = DateTime.Today;
                        NewRow.клиент      = клКлиент.клиент;
                        NewRow.мастер      = клМастер.мастер;
                        NewRow.номер_дог   = "";
                        NewRow.номер_пп    = maxNum + 1;
                        NewRow.услуга      = клУслуга.услуга;
                        NewRow.подключение = Guid.NewGuid();
                        int строка = bindingSource1.Add(NewRow);
                        bindingSource1.Position = строка;
                    }
                }
            }
            Cursor = Cursors.Default;
            последний_номер();
            dataGridView1.Focus();
        }
        private void button6_Click(object sender, EventArgs e)
        {
            Cursor = Cursors.WaitCursor;
            записать();

            подключения uRow = bindingSource1.Current as подключения;

            клУслуга.услуга = uRow.услуга;
            клУслуга.наимен = uRow.услуги.наимен;
            клКлиент.клиент = uRow.клиент;
            клКлиент.deRow  = uRow.клиенты;
            клУслуга.deRow  = uRow.услуги;
            клКлиент.фио    = uRow.сотрудники.фио;


            оплаченные1просмотр формаОплатить = new оплаченные1просмотр();

            формаОплатить.Text = "Оплаты за " + клУслуга.наимен.Trim() + " " + клКлиент.фио;
            формаОплатить.ShowDialog();

            dataGridView1.Focus();

            Cursor = Cursors.Default;
        }
        private void button4_Click(object sender, EventArgs e)
        {
            клШаблон.выбран = false;
            выбор_шаблона выборШаблона = new выбор_шаблона();

            выборШаблона.ShowDialog();
            if (клШаблон.выбран)
            {
                //DataSet.подключенияRow uRow = (подключенияBindingSource.Current as DataRowView).Row as DataSet.подключенияRow;

                подключения uRow = bindingSource1.Current as подключения;

                Word.Application oWord = new Word.Application();

                string curDir = System.IO.Directory.GetCurrentDirectory();

                //object шаблон = curDir + @"\Договор_домофон.dot";
                string шаблон = curDir + @"\" + клШаблон.путь.Trim();
                if (!System.IO.File.Exists(шаблон.ToString()))
                {
                    MessageBox.Show("Нет файла " + шаблон.ToString());
                    return;
                }

                Word.Document o = oWord.Documents.Add(Template: шаблон);
                //  oWord.Application.Visible = true;
                if (o.Bookmarks.Exists("номер1"))
                {
                    o.Bookmarks["номер1"].Range.Text = uRow.номер_дог.Trim() + uRow.номер_пп.ToString();
                }
                if (o.Bookmarks.Exists("номер2"))
                {
                    o.Bookmarks["номер2"].Range.Text = uRow.номер_дог.Trim() + uRow.номер_пп.ToString();
                }
                if (o.Bookmarks.Exists("номер3"))
                {
                    o.Bookmarks["номер3"].Range.Text = uRow.номер_дог.Trim() + uRow.номер_пп.ToString();
                }
                if (o.Bookmarks.Exists("номер4"))
                {
                    o.Bookmarks["номер4"].Range.Text = uRow.номер_дог.Trim() + uRow.номер_пп.ToString();
                }
                if (o.Bookmarks.Exists("дата1"))
                {
                    o.Bookmarks["дата1"].Range.Text = uRow.дата_дог.ToLongDateString();
                }
                if (o.Bookmarks.Exists("дата2"))
                {
                    o.Bookmarks["дата2"].Range.Text = uRow.дата_дог.ToLongDateString();
                }
                if (o.Bookmarks.Exists("дата3"))
                {
                    o.Bookmarks["дата3"].Range.Text = uRow.дата_дог.ToLongDateString();
                }
                if (o.Bookmarks.Exists("дата4"))
                {
                    o.Bookmarks["дата4"].Range.Text = uRow.дата_дог.ToLongDateString();
                }
                if (o.Bookmarks.Exists("фио1"))
                {
                    o.Bookmarks["фио1"].Range.Text = " " + клКлиент.deRow.фамилия.Trim()
                                                     + " " + клКлиент.deRow.имя.Trim()
                                                     + " " + клКлиент.deRow.отчество.Trim();
                }
                if (o.Bookmarks.Exists("фио2"))
                {
                    o.Bookmarks["фио2"].Range.Text = " " + клКлиент.deRow.фамилия.Trim()
                                                     + " " + клКлиент.deRow.имя.Trim()
                                                     + " " + клКлиент.deRow.отчество.Trim();
                }
                //string наименКорпуса = "";
                //if (uRow.корпус.Trim().Length == 0)
                //{
                //}
                //else
                //{
                //    наименКорпуса = " корпус " + uRow.корпус.Trim();
                //}
                if (o.Bookmarks.Exists("адрес1"))
                {
                    o.Bookmarks["адрес1"].Range.Text = " " + клКлиент.deRow.адрес.Trim();
                }
                //+ " дом " + uRow.номер.ToString().Trim()
                //+ наименКорпуса
                //+ " квартира " + uRow.квартира.ToString().Trim();

                if (o.Bookmarks.Exists("адрес2"))
                {
                    o.Bookmarks["адрес2"].Range.Text = " " + клКлиент.deRow.адрес.Trim();
                }
                //+ " дом " + uRow.номер.ToString().Trim()
                //+ наименКорпуса
                //+ " квартира " + uRow.квартира.ToString().Trim();

                if (o.Bookmarks.Exists("телефон1"))
                {
                    o.Bookmarks["телефон1"].Range.Text = " " + клКлиент.deRow.телефон.Trim();
                }
                if (o.Bookmarks.Exists("телефон2"))
                {
                    o.Bookmarks["телефон2"].Range.Text = " " + клКлиент.deRow.телефон.Trim();
                }

                клTemp.Caption            = o.ActiveWindow.Caption;
                oWord.Application.Visible = true;
            }
        }
        private void button5_Click(object sender, EventArgs e)
        {
            //   if (comboBox1.SelectedIndex < 0)
            //   {
            //       MessageBox.Show("Выберите мастера...");
            //       comboBox1.Focus();
            //       return;
            //   }
            ////   string КодМастера = comboBox1.SelectedValue.ToString();
            //   сотрудники sRow = comboBox1.SelectedItem as сотрудники;

            if (bindingSource1.Count > 0 && de.подключения.Local.Any(n => n.в_задание))
            {
                подключения tRow = bindingSource1.Current as подключения;
                //клМастер.мастер = tRow.мастер;
                //клМастер.выбран = false;
                //выбор_бригады выборМастера = new выбор_бригады();
                //выборМастера.Text = "Выберите мастера";
                //выборМастера.ShowDialog();
                //if (клМастер.выбран || выборМастера.DialogResult == DialogResult.OK)
                //{


                //    foreach (подключения uRow in de.подключения.Local
                //    .Where(n => n.в_задание))
                //    {
                //        uRow.мастер = клМастер.мастер;
                //        uRow.сотрудники = de.сотрудники.Local.Single(n => n.сотрудник == клМастер.мастер);
                //    }
                //    dataGridView1.Refresh();

                Cursor = Cursors.WaitCursor;

                string curDir = System.IO.Directory.GetCurrentDirectory();

                string шаблон = curDir + @"\задание_договор.docx";

                if (!System.IO.File.Exists(шаблон.ToString()))
                {
                    MessageBox.Show("Нет файла " + шаблон.ToString());
                    Cursor = Cursors.Default;
                    return;
                }

                var    template = new System.IO.FileInfo(шаблон);
                string tempFile = curDir + @"\temp\temp.docx";
                try
                {
                    клTemp.закрытьWord();
                }
                catch
                {
                    MessageBox.Show("Сохраните файл Word...");
                }

                try
                {
                    template.CopyTo(tempFile, true);
                }
                catch
                {
                    MessageBox.Show("Закройте файл Word...");
                    return;
                }

                try
                {
                    using (WordprocessingDocument package = WordprocessingDocument.Open(tempFile, true))
                    {
                        //  int строкаРаб = 0;

                        var tables = package.MainDocumentPart.Document.Body.Elements <Table>();
                        //Table table1 = tables.First();
                        //Table table2 = tables.Last();
                        Table table1 = tables.ElementAt(0);
                        Table table2 = tables.ElementAt(1);

                        //string фио = de.сотрудник.Single(n => n.сотрудник1 == КодМастера).фио;
                        //string должность = de.сотрудник.Single(n => n.сотрудник1 == КодМастера).должность;

                        string текст = "Задание на подключение согласно договора";
                        // + клМастер.deRow.должность.Trim() + "    " + клМастер.deRow.фио;
                        клXML.ChangeTextInCell(table1, 0, 0, текст + "    " + DateTime.Today.ToLongDateString());

                        TableRow lastRow = table2.Elements <TableRow>().Last();

                        //var queryTemp = dsTemp.квартиры.ToArray();
                        //if (checkBox2.Checked)
                        //{
                        //    queryTemp = queryTemp
                        //        .Where(n => n.отключить || n.подключить || n.повторно).ToArray();
                        //}

                        int j = 0;

                        foreach (подключения kRow in de.подключения.Local
                                 .Where(n => n.в_задание))
                        {
                            j++;
                            TableRow newRow1 = lastRow.Clone() as TableRow;


                            table2.AppendChild <TableRow>(newRow1);


                            клXML.ChangeTextInCell(table2, j, 0, kRow.адрес);

                            клXML.ChangeTextInCell(table2, j, 1, kRow.клиенты.фио);

                            клXML.ChangeTextInCell(table2, j, 2, kRow.клиенты.телефон);
                            клXML.ChangeTextInCell(table2, j, 3, kRow.услуги.обозначение);

                            if (kRow.в_задание)
                            {
                                клXML.ChangeTextInCell(table2, j, 4, "V");
                            }
                            else
                            {
                                клXML.ChangeTextInCell(table2, j, 4, "");
                            }
                        }


                        j++;
                        клXML.ChangeTextInCell(table2, j, 0, "Всего");
                        клXML.ChangeTextInCell(table2, j, 1, "квартир");
                        клXML.ChangeTextInCell(table2, j, 2, (j - 1).ToString());
                        клXML.ChangeTextInCell(table2, j, 3, "");
                        клXML.ChangeTextInCell(table2, j, 4, "");
                        //клXML.ChangeTextInCell(table2, j, 5, "");
                        //клXML.ChangeTextInCell(table2, j, 6, "");
                        //клXML.ChangeTextInCell(table2, j, 7, "");
                    }
                }

                catch
                {
                    MessageBox.Show("Закройте файл Word...");
                    return;
                }



                клTemp.закрытьWord();


                клXML.просмотрWord(tempFile);

                Cursor = Cursors.Default;
            }
            else
            {
                MessageBox.Show("Отметьте адреса для подключения");
            }
            dataGridView1.Focus();
        }
        private void подключен4услугам_Load(object sender, EventArgs e)
        {
            buttonЗвонок.Text = "Звонок на " + клКлиент.deRow.телефон;
            try
            {
                foreach (услуги uRow in de.услуги
                         .OrderBy(n => n.виды_услуг.порядок)
                         .ThenBy(n => n.порядок))
                {
                    temp newTemp = new temp();
                    newTemp.услуга = uRow.услуга;
                    newTemp.наимен = uRow.наимен;
                    if (uRow.клиенты.Any(n => n.клиент == клКлиент.клиент))
                    {
                        newTemp.подключена = true;
                    }
                    if (uRow.примечания.Any(n => n.клиент == клКлиент.клиент))
                    {
                        newTemp.прим = uRow.примечания.Last(n => n.клиент == клКлиент.клиент).прим;
                    }
                    if (uRow.отключения.Any(n => n.клиент == клКлиент.клиент))
                    {
                        newTemp.откл = uRow.отключения.Where(n => n.клиент == клКлиент.клиент).Max(n => n.дата_с);
                    }

                    if (uRow.повторы.Any(n => n.клиент == клКлиент.клиент))
                    {
                        newTemp.подк = uRow.повторы
                                       .Where(n => n.клиент == клКлиент.клиент)
                                       .Max(n => n.дата_с);

                        if (newTemp.откл != null)
                        {
                            if (newTemp.откл > newTemp.подк)
                            {
                                newTemp.подк = null;
                            }
                        }
                    }
                    if (uRow.подключения.Any(n => n.клиент == клКлиент.клиент))
                    {
                        подключения pRow = uRow.подключения
                                           .Where(n => n.клиент == клКлиент.клиент)
                                           .OrderBy(n => n.дата_с).Last();

                        newTemp.номер_пп = pRow.номер_пп;
                        newTemp.от       = pRow.дата_с;
                    }


                    var query = de.оплачено
                                .Where(n => n.услуга == uRow.услуга)
                                .Where(n => n.оплаты.клиент == клКлиент.клиент);



                    if (query.Any())
                    {
                        int gm = query
                                 .Max(n => n.год * 100 + n.месяц);

                        int мГод   = (int)gm / 100;
                        int мМесяц = (gm - мГод * 100);
                        newTemp.год   = мГод;
                        newTemp.месяц = мМесяц;
                    }


                    tempList.Add(newTemp);
                }
                bindingSource1.DataSource = tempList;
                клСетка.задать_ширину(dataGridView1);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Сбой загрузки " + ex.Message);
            }
            клиенты kRow = de.клиенты.Single(n => n.клиент == клКлиент.клиент);

            if (kRow.звонки.Any())
            {
                DateTime последний_звонок = kRow.звонки.Max(n => n.дата);
                textBox1.Text = последний_звонок.ToShortDateString() + " " + последний_звонок.ToShortTimeString();
                if (последний_звонок.Date == DateTime.Today)
                {
                    textBox1.ForeColor = Color.Green;
                }
            }

            //         dataGridView1.CellEndEdit += dataGridView1_CellEndEdit;
            dataGridView1.CellValueChanged += dataGridView1_CellValueChanged;
            //  tempList.ListChanged += tempList_ListChanged;
            //bindingSource1.ListChanged += bindingSource1_ListChanged;
        }