public static dynamic ConnectionString()
        {
            var com1S = new V83.COMConnector
            {
                PoolCapacity = 10,
                PoolTimeout = 60,
                MaxConnections = 2
            };

            //Result = com1S.Connect(@"File='\\srvkb\SolidWorks Admin\TEMP\1C_Test';Usr='******';pwd='';");
            //Result = com1S.Connect(@"File='C:\1C_test_base';Usr='******';pwd='';");
            Result = com1S.Connect("srvr='Srvprog'; ref='Yurchenko_new'; usr='******'; pwd='1'");
            return Result;
        }
Example #2
0
        public IEnumerable <string> GetBases()
        {
            var agent = new V83.COMConnector().ConnectAgent($"tcp://{serverRef}");

            V83.IClusterInfo cluster = (V83.IClusterInfo)agent.GetClusters().GetValue(0);
            agent.Authenticate(cluster, adminUser, adminPass);
            var bases = agent.GetInfoBases(cluster);

            List <string> listBases = new List <string>();

            foreach (V83.IInfoBaseShort item in bases)
            {
                listBases.Add(item.Name);
            }

            return(listBases);
        }
Example #3
0
File: Common.cs Project: ipgip/Shop
 public static void Connect1C(string cs)
 {
     try
     {
         con = new V83.COMConnector
         {
             PoolCapacity   = 10,
             PoolTimeout    = 60,
             MaxConnections = 2
         };
         Base = con.Connect(cs);
     }
     catch (Exception err)
     {
         MessageBox.Show(err.Message);
         return;
     }
 }
Example #4
0
        public void ClearSessions(string baseName, int delay)
        {
            V83.IInfoBaseShort currentBase = null;

            var agent = new V83.COMConnector().ConnectAgent($"tcp://{serverRef}");

            V83.IClusterInfo cluster = (V83.IClusterInfo)agent.GetClusters().GetValue(0);
            agent.Authenticate(cluster, adminUser, adminPass);
            var bases = agent.GetInfoBases(cluster);

            foreach (V83.IInfoBaseShort item in bases)
            {
                if (item.Name.ToString().ToLower() == baseName.ToLower())
                {
                    currentBase = item;
                    break;
                }
            }

            if (currentBase != null)
            {
                var sessions = agent.GetInfoBaseSessions(cluster, currentBase);

                short i = 0;
                foreach (var s in sessions)
                {
                    i++;
                }

                if (i > 0)
                {
                    Thread.Sleep(delay);
                }

                foreach (V83.ISessionInfo session in sessions)
                {
                    ClearSession(agent, cluster, session);
                }
            }
            else
            {
                throw new System.Exception("Не найдена база на сервере!");
            }
        }
Example #5
0
        public Form1()
        {
            InitializeComponent();

            //MessageBox.Show("Start");
            splitContainer1.Panel1MinSize    = pictureBox1.Height;
            splitContainer1.SplitterDistance = flowLayoutPanel1.Height;

            pictureBox4.Visible = !Program.LicenseFlag;

            timer1.Interval = Properties.Settings.Default.Duration;
            timer1.Stop();
            try
            {
                Browser = new ChromiumWebBrowser(Properties.Settings.Default.Site)
                {
                    BackColor = Color.White,
                    Name      = "Br",
                    TabIndex  = 1,
                    Dock      = DockStyle.Fill
                };
                con = new V83.COMConnector
                {
                    PoolCapacity   = 10,
                    PoolTimeout    = 60,
                    MaxConnections = 2
                };
                CreateBazbyPanel();
            }
            catch (Exception err)
            {
                MessageBox.Show($"{err.Message}");
            }
            panel1.Controls.Add(Browser);
            Browser.Visible = false;
            panel1.Controls.Add(Baz);
            Baz.Visible = true;
        }
Example #6
0
        private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;
            string           MsgString;

            //создаем пустую базу

            string UpdBase = Dir.Text + @"\UpdBase";

            //string UpdBase = @"C:\UpdBase";
            if (!CreateEmptyBase(UpdBase))
            {
                MsgString = "Не удалось скачать обновления (ошибка подключения)" + Environment.NewLine;
                worker.ReportProgress(100, MsgString);
                return; // "Не удалось скачать обновления (ошибка подключения)";
            }

            //создаем СОМ-соединение

            V83.COMConnector com1s = new V83.COMConnector();
            com1s.PoolCapacity   = 10;
            com1s.PoolTimeout    = 60;
            com1s.MaxConnections = 2;

            string path_connect_file = "File='" + UpdBase + "';";


            try
            {
                DB1C = com1s.Connect(path_connect_file);

                MsgString = "Подключение выполнено успешно" + Environment.NewLine;
                worker.ReportProgress(1, MsgString);
            }
            catch
            {
                MessageBox.Show("Не удалось подключиться");

                MsgString = "Не удалось скачать обновления (ошибка подключения)" + Environment.NewLine;
                worker.ReportProgress(100, MsgString);
                return;// "Не удалось скачать обновления";
            }

            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if ((bool)row.Cells["Up"].Value == true)
                {
                    worker.ReportProgress(1, "");

                    //обнуляем переменные
                    num  = "";
                    NVer = "";
                    u    = false;

                    int Str = row.Index;

                    if ((row.Cells["Address"].Value.ToString() == "") | (row.Cells["Reliz"].Value.ToString() == "") | (row.Cells["Konfig"].Value.ToString() == "") | (row.Cells["Platform"].Value.ToString() == ""))
                    {
                        MsgString = "Проверьте, заполнены ли все поля" + Environment.NewLine;
                        worker.ReportProgress(100, MsgString);
                        break;
                    }

                    string Login_user;
                    if (row.Cells["User"].Value == null)
                    {
                        Login_user = "";
                    }
                    else
                    {
                        Login_user = row.Cells["User"].Value.ToString();
                    }

                    string Pas_user     = row.Cells["Pass"].Value.ToString();
                    string file_db_user = row.Cells["Address"].Value.ToString();
                    string ThisVer      = row.Cells["Reliz"].Value.ToString();
                    string confName     = row.Cells["Konfig"].Value.ToString();
                    string platform     = row.Cells["Platform"].Value.ToString();
                    string Code         = row.Cells["Code"].Value.ToString();


                    MsgString = "===== Начато обновление базы " + file_db_user + " =====" + Environment.NewLine;
                    worker.ReportProgress(10, MsgString);

                    List <string> PathUpd = UpdateUserBase(ThisVer, confName, platform, sender); //получаем пути обновлений
                    //обновляем
                    if (PathUpd.Count > 0)
                    {
                        string Result = BatFile(Login_user, Pas_user, file_db_user, PathUpd, sender);

                        if (u && (Code != "")) //выполнено без ошибок И значение получено из БД
                        {
                            //передаем обратно версию обновления
                            using (Service service = new Service())
                            {
                                service.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap12;
                                service.Credentials = new System.Net.NetworkCredential(WS_login, WS_pass);

                                var NumRequest = service.ReturnReliz(Code, NVer);
                            }
                        }
                        SendMessage(Result, sender);

                        MsgString = "===== Обновление завершено =====" + Environment.NewLine;
                        worker.ReportProgress(100, MsgString);
                    }
                    else
                    {
                        MsgString = "Обновление не выполнено" + Environment.NewLine;
                        worker.ReportProgress(100, MsgString);
                    }
                }
            }

            //удаляем СОМ

            if (Directory.Exists(UpdBase))
            {
                try
                {
                    Directory.Delete(UpdBase, true);
                }
                catch { }
            }

            backgroundWorker2.Dispose();
        }
Example #7
0
        private void FindByBarcode(string Code)
        {
            int QQ = 0;

            Bazlabel.Text = "Соединяемся с сервером";
            while (QQ == 0)
            {
                dynamic r;
                if (Connection == null)
                {
                    label1.Text   = "Соединяемся с сервером";
                    Bazlabel.Text = "Соединяемся с сервером";
                    Connection    = ConnectToServer();
                }

                if (Connection != null)
                {
                    // Сервер жив?
                    try
                    {
                        r  = Connection.ПолучитьСоединенияИнформационнойБазы();
                        QQ = r.Количество;
                    }
                    catch (Exception /*err*/)
                    {
                        //MessageBox.Show("reconnect");
                        label1.Text   = "Соединение с сервером";
                        Bazlabel.Text = "Соединение с сервером";
                        Connection    = null;
                        con           = null;
                        GC.Collect();
                        con = new V83.COMConnector
                        {
                            PoolCapacity   = 10,
                            PoolTimeout    = 60,
                            MaxConnections = 2
                        };
                    }
                    //    StringBuilder b = new StringBuilder();
                    //    foreach (var rr in r)
                    //    {
                    //        b.AppendLine($"{rr.ComputerName} {rr.ApplicationName} {rr.ConnectionStarted} {rr.SessionNumber} {rr.ConnectionNumber} {rr.User.Name}");
                    //    }
                    //    //MessageBox.Show($"{b}");
                }
            }

            if (Code != string.Empty)
            {
                label1.Text   = $"Ищем {Code}";
                Bazlabel.Text = $"Ищем {Code}";
            }
            else
            {
                label1.Text   = "Поднесите штрихкод товара к сканеру";
                Bazlabel.Text = "Поднесите штрихкод товара к сканеру";
            }

            try
            {
                // розничная цена
                dynamic TP = Connection.Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию(Properties.Settings.Default.PriceType);


                Cursor = Cursors.WaitCursor;
                // Штрихкод
                dynamic Q = Connection.NewObject("Query");
                Q.Текст = "ВЫБРАТЬ Штрихкоды.Владелец КАК CсылкаНаНоменклатуру, Штрихкоды.Штрихкод как Код " +
                          "ИЗ РегистрСведений.Штрихкоды КАК Штрихкоды " +
                          "ГДЕ Штрихкоды.Штрихкод = &Code и Штрихкоды.Владелец ССЫЛКА Справочник.Номенклатура;";
                if (Code != string.Empty)
                {
                    Q.УстановитьПараметр("Code", Code);
                    label1.Text   = $"Ищем {Code}";
                    Bazlabel.Text = $"Ищем {Code}";
                }
                else
                {
                    label1.Text   = "Поднесите штрихкод товара к сканеру";
                    Bazlabel.Text = "Поднесите штрихкод товара к сканеру";
                    return;
                }

                dynamic res = Q.Выполнить();
                dynamic l   = res.Выбрать();
                if (l.Количество > 0)
                {
                    while (l.Следующий())
                    {
                        //Title
                        label1.Text = $"{l.CсылкаНаНоменклатуру.Наименование}";
                        //label1.Text = $"{l.CсылкаНаНоменклатуру.Код} {l.CсылкаНаНоменклатуру.Наименование}";
                        label1.TextAlign = ContentAlignment.TopLeft;

                        // Picture
                        dynamic pp = null;
                        try
                        {
                            pp = Connection.Обработки.APPLIX_RU_ХДВИ_ЗМ.Создать().ХранилищеДополнительнойИнформации_ПолучитьДанныеФайла(l.CсылкаНаНоменклатуру.ОсновноеИзображение);
                        }
                        catch (Exception)
                        {
                            pp = l.CсылкаНаНоменклатуру.ОсновноеИзображение.Хранилище.Get();
                        }

                        if (pp != null)
                        {
                            Bitmap pp1 = PictureFrom1C(Connection, pp);

                            pictureBox3.Image = pp1;
                            pictureBox3.Dock  = DockStyle.Fill;
                            tableLayoutPanel1.SetColumnSpan(pictureBox3, 2);
                            tableLayoutPanel1.SetRowSpan(pictureBox3, 1);
                        }
                        else
                        {
                            pictureBox3.Image = Properties.Resources.bazby;
                            pictureBox3.Dock  = DockStyle.Fill;
                            tableLayoutPanel1.SetColumnSpan(pictureBox3, 2);
                            tableLayoutPanel1.SetRowSpan(pictureBox3, 2);
                        }
                        label2.Text = $"{l.CсылкаНаНоменклатуру.ДополнительноеОписаниеНоменклатуры}";

                        // Цена
                        dynamic P = Connection.NewObject("Query");
                        P.Text = "select ЕстьNull(Цена,0) Price " +
                                 "from РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаПолучения) " +
                                 "where Номенклатура = &Goods and ТипЦен = &TP;";
                        P.УстановитьПараметр("ДатаПолучения", DateTime.Today);
                        P.УстановитьПараметр("Goods", l.CсылкаНаНоменклатуру);
                        P.УстановитьПараметр("TP", TP);
                        decimal Price = 0m;
                        dynamic PRes  = P.Выполнить().Выбрать();
                        while (PRes.Следующий())
                        {
                            Price       = PRes.Price;
                            label3.Text = $"Цена: {Price:C2}";
                        }
                        // Скидки
                        dynamic DiscountQuery = Connection.NewObject("Query");
                        DiscountQuery.Text =
                            "select ЕстьNull(sum(ПроцентСкидкиНаценки),0) as Dis " +
                            "from  РегистрСведений.СкидкиНаценкиНоменклатуры " +
                            "where Номенклатура.Ссылка = &Goods " +
                            "   and Активность " +
                            "	and ДатаОкончания >= &Date "+
                            "   and Условие = Значение(Перечисление.УсловияСкидкиНаценки.ПоКоличествуТовара) ";
                        DiscountQuery.УстановитьПараметр("Goods", l.CсылкаНаНоменклатуру);
                        DiscountQuery.УстановитьПараметр("Date", DateTime.Today);
                        dynamic DiscountRes = DiscountQuery.Execute().Select();

                        decimal Discount = 0;
                        if (DiscountRes.Next())
                        {
                            Discount           = DiscountRes.Dis;
                            DiscountLabel.Text = "Цена со скидкой:" + Environment.NewLine + $"{((100 - Discount) / 100 * Price):C2}";
                        }
                        DiscountLabel.Visible = (Discount != 0);

                        Baz.Visible = false;
                        tableLayoutPanel1.Visible = true;
                        timer1.Interval           = Properties.Settings.Default.Duration;
                        timer1.Start();
                    }
                }
                else
                {
                    timer1.Stop();
                    label1.Text               = "Поднесите штрихкод товара к сканеру";
                    Bazlabel.Text             = "Поднесите штрихкод товара к сканеру";
                    label2.Text               = string.Empty;
                    label3.Text               = string.Empty;
                    pictureBox3.Image         = Properties.Resources.bazby;
                    label1.TextAlign          = ContentAlignment.MiddleCenter;
                    label3.Text               = string.Empty;
                    tableLayoutPanel1.Visible = false;
                    Baz.Visible               = true;
                }
            }
            catch (Exception err)
            {
                MessageBox.Show($"FindByBarcode: {err.Message}");
                return;
            }
            finally
            {
                Cursor = Cursors.Default;
                nullButton.Focus();
                //if (Connection != null)
                //{
                //    Connection = null;
                //    //con = null;
                //}
            }
        }