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; } } }
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)); }
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)); }