Exemple #1
0
        static void Main(string[] args)
        {
            Logger      logger  = LogManager.GetCurrentClassLogger();
            ServiceSA1C service = new ServiceSA1C();

            service.LoadSettings();
            var baseConfig = from conf in service.config.basesConfig
                             where conf.Name == "ТестОбмена"
                             select conf;

            if (baseConfig.Count() == 0)
            {
            }

            BaseConfig bc = baseConfig.First();

            //var baseConfig = service.GetBaseConfig();
            string pathToPravila = Directory.GetCurrentDirectory() + @"\ПравилаОбменаДанными.xml";

            using (_1Cv8 v8 = new _1Cv8(bc.baseInfo))
            {
                try
                {
                    v8.Connect();
                    v8.SaveUniversalXML("ОбменУправлениеТорговлейРозничнаяТорговля", "002", pathToPravila);
                }
                catch (Exception error)
                {
                    string e = error.Message;
                }
            }
        }
Exemple #2
0
        void SelectPlanName()
        {
            //проверим, все ли заполнено
            if (baseInfo.User == String.Empty)
            {
                MessageBox.Show("Не указанно имя пользователя");
                return;
            }

            List <object> planList = new List <object>();

            //получаем планы обмена
            using (_1Cv8 v8 = new _1Cv8(baseInfo))
            {
                try
                {
                    v8.Connect();
                    foreach (dynamic plan in v8.Object1C.Метаданные.ПланыОбмена)
                    {
                        planList.Add(plan.Имя);
                    }

                    ItemSelectPageViewModel itemSelectPage = new ItemSelectPageViewModel(this, "NameOfPlan", planList, "Укажите план обмена:");
                    base.Workspaces = itemSelectPage;
                }
                catch (Exception error)
                {
                    MessageBox.Show(error.Message);
                    //обрабатываем ошибку
                }
            }
        }
        /// <summary>
        /// Выгрузка измененеий из 1Сv8
        /// </summary>
        /// <param name="settingsFile">Имя настройки</param>
        /// <returns>описание ошибки или "ok"</returns>
        public void SaveChanges(string settingName)
        {
            Logger       logger   = LogManager.GetCurrentClassLogger();
            LogEventInfo theEvent = new LogEventInfo(LogLevel.Debug, logger.Name, settingName + ": Начало выгрузки изменений");

            theEvent.Properties["SettingsName"] = settingName;
            logger.Log(theEvent);
            //logger.Debug(settingName+": Начало выгрузки изменений");

            var baseConfig = GetBaseConfig(settingName);

            SetCurrentStatus(settingName, Job.LocalSave, JobStatus.Process);
            OnExchangeProcess(GetCurrentStatus(settingName));

            using (_1Cv8 v8 = new _1Cv8(baseConfig.baseInfo))
            {
                try
                {
                    v8.Connect();
                    if (baseConfig.IsUniversalExchangeXML)
                    {
                        v8.SaveUniversalXML(baseConfig.NameOfPlan, baseConfig.CodeOfNode, baseConfig.filenameRules);
                    }
                    else
                    {
                        v8.SaveChanges(baseConfig.NameOfPlan, baseConfig.CodeOfNode);
                    }
                    SetCurrentStatus(settingName, Job.LocalSave, JobStatus.Complite);
                }
                catch (Exception error)
                {
                    string e = "";
                    if (error.InnerException != null)
                    {
                        e = error.InnerException.Message;
                    }
                    else
                    {
                        e = error.Message;
                    }
                    //v8.Dispose();
                    theEvent = new LogEventInfo(LogLevel.Error, logger.Name, e);
                    theEvent.Properties["SettingsName"] = settingName;
                    logger.Log(theEvent);
                    //logger.Error(e);
                    SetCurrentStatus(settingName, Job.LocalSave, JobStatus.Error, e);
                }
            }

            theEvent = new LogEventInfo(LogLevel.Info, logger.Name, settingName + ": Конец выгрузки изменений");
            theEvent.Properties["SettingsName"] = settingName;
            logger.Log(theEvent);
            //logger.Info(settingName+": Конец выгрузки изменений");

            baseConfig = GetBaseConfig(settingName);
            baseConfig.LastExchangeDate = DateTime.Now;
            SaveSettings();

            OnExchangeProcess(GetCurrentStatus(settingName));
        }
Exemple #4
0
        void SelectNodeName()
        {
            if (NameOfPlan == String.Empty)
            {
                MessageBox.Show("Не указан план обмена");
                return;
            }

            List <object> nodeList = new List <object>();

            //получаем планы обмена
            using (_1Cv8 v8 = new _1Cv8(baseInfo))
            {
                try
                {
                    v8.Connect();
                    //dynamic result = v8.Object1C.ПланыОбмена.Get("Полный");//.Выбрать();
                    dynamic refPlane = v8.GetProperty(v8.Object1C.ПланыОбмена, NameOfPlan);
                    dynamic thisNode = refPlane.ЭтотУзел();
                    dynamic result   = refPlane.Выбрать();
                    while (result.Следующий())   //ПланыОбмена
                    {
                        if (thisNode.Наименование != result.Наименование)
                        {
                            nodeList.Add(result.Наименование);
                            //nodeList.Add(new { result.Наименование, result.Код });
                        }
                    }


                    //TODO: придумать как передавать в список наименования, а получать код
                    ItemSelectPageViewModel itemSelectPage = new ItemSelectPageViewModel(this, "CodeOfNode", nodeList, "Укажите узел обмена:");
                    base.Workspaces = itemSelectPage;
                }
                catch (Exception error)
                {
                    MessageBox.Show(error.Message);
                    //обрабатываем ошибку
                }
            }
        }
        /// <summary>
        /// Загрузка измененеий в 1С
        /// </summary>
        /// <param name="settingsFile">Имя настройки</param>
        /// <returns>описание ошибки или "ok"</returns>
        public void LoadChanges(string settingName)
        {
            Logger       logger   = LogManager.GetCurrentClassLogger();
            LogEventInfo theEvent = new LogEventInfo(LogLevel.Debug, logger.Name, settingName + ": Начало загрузки изменений");

            theEvent.Properties["SettingsName"] = settingName;
            logger.Log(theEvent);
            //logger.Debug();

            bool configChanged = false;
            bool isError       = false;

            var baseConfig = GetBaseConfig(settingName);

            SetCurrentStatus(settingName, Job.LocalLoad, JobStatus.Process);
            OnExchangeProcess(GetCurrentStatus(settingName));


            using (_1Cv8 v8 = new _1Cv8(baseConfig.baseInfo))
            {
                try
                {
                    //logger.Info("Connect");
                    v8.Connect();
                    //logger.Info("Load");
                    if (baseConfig.IsUniversalExchangeXML)
                    {
                        v8.LoadUniversalXML();
                    }
                    else
                    {
                        v8.LoadChanges();
                    }
                }
                catch (Exception error)
                {
                    string e = "";
                    if (error.InnerException != null)
                    {
                        e = error.InnerException.Message;
                        //сделаем такую проверку, т.к. она быстрее и не может выдать ошибку
                        if (e.Contains("обновление конфигурации"))
                        {
                            configChanged = true;
                        }
                    }
                    else
                    {
                        e = error.Message;
                    }

                    isError = true;
                    SetCurrentStatus(settingName, Job.LocalLoad, JobStatus.Error, e);
                    theEvent = new LogEventInfo(LogLevel.Error, logger.Name, e);
                    theEvent.Properties["SettingsName"] = settingName;
                    logger.Log(theEvent);
                }
            }

            //если требуется обновление конфигурации БД
            if (configChanged)
            {
                theEvent = new LogEventInfo(LogLevel.Info, logger.Name, settingName + ": Обновляем конфигурацию");
                theEvent.Properties["SettingsName"] = settingName;
                logger.Log(theEvent);
                //logger.Info(settingName+": Обновляем конфигурацию");
                _1Cv8 v8 = new _1Cv8(baseConfig.baseInfo);

                string isUpdate = v8.UpdateDB(config.DinamycUpdateDB,
                                              config.DisableUser);
                v8.Dispose();

                //и необходимо заного загрузить данные
                if (isUpdate == "ok")
                {
                    LoadChanges(settingName);
                    return;                     //выйдем
                }

                SetCurrentStatus(settingName, Job.LocalLoad, JobStatus.Error, isUpdate);
            }

            if (!isError)
            {
                theEvent = new LogEventInfo(LogLevel.Info, logger.Name, settingName + ": Конец загрузки изменений");
                theEvent.Properties["SettingsName"] = settingName;
                logger.Log(theEvent);
                //logger.Info(settingName+": Конец загрузки изменений");
                SetCurrentStatus(settingName, Job.LocalLoad, JobStatus.Complite);
            }

            baseConfig = GetBaseConfig(settingName);
            baseConfig.LastExchangeDate = DateTime.Now;
            SaveSettings();
            OnExchangeProcess(GetCurrentStatus(settingName));
        }