Skip to content

Commit

Permalink
Добавил возможность сохранения свойств конфигурации, с использованием…
Browse files Browse the repository at this point in the history
… нового ключа параметра запуска configPropsPath
  • Loading branch information
ImHunter committed Oct 4, 2023
1 parent d33f7f1 commit 3ee2054
Showing 1 changed file with 139 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,37 +23,142 @@
|""ЗапрашиватьПодтверждениеПриЗавершенииПрограммы"", Ложь);");
Исключение
// Данного модуля и метода может не быть в конфигурации
КонецПопытки;
КонецПопытки;

КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)

Если Не ЭтоКонфигурацияНаБазеБСПСервер() Тогда
ПрекратитьРаботуСистемы();
//Сообщить("Заглушка - завершаем работу системы");
Возврат;
КонецЕсли;
КонецЕсли;

ПараметрыЗапуска = СтрРазделить(ПараметрЗапуска, ";", Ложь);
СтрокаПоиска = "exitCodePath=";
Для каждого Стр из ПараметрыЗапуска Цикл
Если СтрНайти(Стр, СтрокаПоиска) > 0 Тогда
ПутьКФайлуРезультата = СтрЗаменить(Стр, СтрокаПоиска, "");
Сообщить("Путь файла лога " + ПутьКФайлуРезультата);
УдалитьФайлРезультата();
Прервать;
КонецЕсли;
КонецЦикла;
ОпределитьПутиИзПараметраЗапуска();
Если Не ПустаяСтрока(ПутьКФайлуРезультата) Тогда
УдалитьФайлБезопасно(ПутьКФайлуРезультата);
Сообщить("Путь файла лога " + ПутьКФайлуРезультата);
КонецЕсли;
Если Не ПустаяСтрока(ПутьКФайлуСвойствКонфигурации) Тогда
УдалитьФайлБезопасно(ПутьКФайлуСвойствКонфигурации);
Сообщить("Путь файла свойств конфигурации " + ПутьКФайлуСвойствКонфигурации);
ЗаписатьСвойстваКонфигурации();
КонецЕсли;

ПодключитьОбработчикОжидания("ПроверитьНеобходимостьЗавершенияПрограммы", 10, Истина);
ПодключитьОбработчикОжидания("ПроверитьЛегальностьОбновления", 2);
Если СуществуетПодсистемаМультиязычность() Тогда
ПодключитьОбработчикОжидания("ПроверитьРегиональныеНастройки", 2);
ПроверитьРегиональныеНастройки();
КонецЕсли;
КонецЕсли;

ПроверитьНеобходимостьЗавершенияПрограммы();
ПроверитьЛегальностьОбновления();
КонецПроцедуры
ПроверитьЛегальностьОбновления();

КонецПроцедуры

&НаКлиенте
Процедура ОпределитьПутиИзПараметраЗапуска()

ОписанияПутей = Новый Структура;
ОписанияПутей.Вставить("ПутьКФайлуРезультата", "exitCodePath");
ОписанияПутей.Вставить("ПутьКФайлуСвойствКонфигурации", "configPropsPath");

ПараметрыЗапуска = СтрРазделить(ПараметрЗапуска, ";", Ложь);
Для Каждого ЧастьПараметраЗапуска из ПараметрыЗапуска Цикл

Для Каждого ЭлементОписанияПути Из ОписанияПутей Цикл

Если Не ПустаяСтрока(ЭтаФорма[ЭлементОписанияПути.Ключ]) Тогда
Продолжить;
КонецЕсли;

СтрокаПоиска = ЭлементОписанияПути.Значение + "=";
ПозицияКлючаПути = СтрНайти(ВРег(ЧастьПараметраЗапуска), ВРег(СтрокаПоиска));

Если ПозицияКлючаПути > 0 Тогда
ПутьКФайлу = Сред(ЧастьПараметраЗапуска, ПозицияКлючаПути + СтрДлина(СтрокаПоиска));
Если СтрНачинаетсяС(ПутьКФайлу, """") Тогда
ПутьКФайлу = Сред(ПутьКФайлу, 2);
КонецЕсли;
Если СтрЗаканчиваетсяНа(ПутьКФайлу, """") Тогда
ПутьКФайлу = Лев(ПутьКФайлу, СтрДлина(ПутьКФайлу) - 1);
КонецЕсли;
ЭтаФорма[ЭлементОписанияПути.Ключ] = ПутьКФайлу;
Прервать;
КонецЕсли;

КонецЦикла;

КонецЦикла;

КонецПроцедуры

&НаКлиенте
Процедура ЗаписатьСвойстваКонфигурации()

Попытка
ТекстовыйФайл = Новый ТекстовыйДокумент();
ТекстовыйФайл.УстановитьТекст(ТекстСвойствКонфигурации());
ТекстовыйФайл.Записать(ПутьКФайлуСвойствКонфигурации, КодировкаТекста.UTF8);
Исключение
ТекстСообщения = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписатьВЖурналРегистрации(ТекстСообщения);
КонецПопытки;

КонецПроцедуры

&НаСервереБезКонтекста
Функция ТекстСвойствКонфигурации()

ЗаписываемыеСвойства = Новый Структура;

// Заполним часть свойств из метаданных конфигурации
ЗаписываемыеСвойства.Вставить("АвторскиеПрава");
ЗаписываемыеСвойства.Вставить("АдресИнформацииОКонфигурации");
ЗаписываемыеСвойства.Вставить("АдресИнформацииОПоставщике");
ЗаписываемыеСвойства.Вставить("АдресКаталогаОбновлений");
ЗаписываемыеСвойства.Вставить("ВариантВстроенногоЯзыка");
ЗаписываемыеСвойства.Вставить("Версия");
ЗаписываемыеСвойства.Вставить("Имя");
ЗаписываемыеСвойства.Вставить("ИспользоватьОбычныеФормыВУправляемомПриложении");
ЗаписываемыеСвойства.Вставить("ИспользоватьУправляемыеФормыВОбычномПриложении");
ЗаписываемыеСвойства.Вставить("Комментарий");
ЗаписываемыеСвойства.Вставить("КраткаяИнформация");
ЗаписываемыеСвойства.Вставить("Поставщик");

ЗаполнитьЗначенияСвойств(ЗаписываемыеСвойства, Метаданные);

// Дополним свойства другими данными
ЗаписываемыеСвойства.Вставить("КонфигурацияИзменена", КонфигурацияИзменена());

// Почистим записываемые данные
ПустыеКлючи = Новый Массив;
ДопустимыеТипы = Новый ОписаниеТипов("Булево, Строка, Дата, Число");

Для Каждого ЭлементСвойств Из ЗаписываемыеСвойства Цикл
Если ЭлементСвойств.Значение = Неопределено Тогда
ПустыеКлючи.Добавить(ЭлементСвойств.Ключ);
Продолжить;
КонецЕсли;
Если Не ДопустимыеТипы.СодержитТип(ТипЗнч(ЭлементСвойств.Значение)) Тогда
ЗаписываемыеСвойства.Вставить(ЭлементСвойств.Ключ, Строка(ЭлементСвойств.Значение));
КонецЕсли;
КонецЦикла;

Для Каждого ПустойКлюч Из ПустыеКлючи Цикл
ЗаписываемыеСвойства.Удалить(ПустойКлюч);
КонецЦикла;

// Сериализуем свойства в JSON
ЗаписьJSON = Новый ЗаписьJSON();
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ЗаписываемыеСвойства);
ТекстСвойствКонфигурации = ЗаписьJSON.Закрыть();

Возврат ТекстСвойствКонфигурации;

КонецФункции

&НаКлиенте
Процедура ПроверитьНеобходимостьЗавершенияПрограммы() Экспорт
Expand Down Expand Up @@ -148,7 +253,11 @@

Если НеобходимоОжидание И Не МожноЗавершатьРаботу И СчетчикОжиданияРезультатов <= МаксИтерацийОжиданияРезультатов Тогда
СчетчикОжиданияРезультатов = СчетчикОжиданияРезультатов + 1;
ПодключитьОбработчикОжидания("ПроверитьНеобходимостьЗавершенияПрограммы", 10, Истина);
ПодключитьОбработчикОжидания("ПроверитьНеобходимостьЗавершенияПрограммы", 10, Истина);
Если СчетчикОжиданияРезультатов <= МаксИтерацийОжиданияРезультатов Тогда
Сообщить("Ожидание при завершении программы. Итерация " +
СчетчикОжиданияРезультатов + " из " + МаксИтерацийОжиданияРезультатов);
КонецЕсли;
КонецЕсли;

МожемЗавершатьРаботу = Ложь;
Expand All @@ -161,10 +270,8 @@
КонецЕсли;

Если МожемЗавершатьРаботу И НеобходимоОжидание Тогда
Сообщить(""+ТекущаяДата() + " - "+"Завершаем работу");

Сообщить("" + ТекущаяДата() + " - " + "Завершаем работу");
ПодключитьОбработчикОжидания("ЗавершитьРаботу", 1, Истина);

КонецЕсли;

КонецПроцедуры
Expand Down Expand Up @@ -252,21 +359,26 @@
Возврат;
КонецЕсли;

ТекстовыйФайл = Новый ТекстовыйДокумент;
ТекстовыйФайл.УстановитьТекст("0");
ТекстовыйФайл.Записать(ПутьКФайлуРезультата, КодировкаТекста.UTF8);
Попытка
ТекстовыйФайл = Новый ТекстовыйДокумент;
ТекстовыйФайл.УстановитьТекст("0");
ТекстовыйФайл.Записать(ПутьКФайлуРезультата, КодировкаТекста.UTF8);
Исключение
ТекстСообщения = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписатьВЖурналРегистрации(ТекстСообщения);
КонецПопытки;

КонецПроцедуры

&НаКлиенте
Процедура УдалитьФайлРезультата()
Процедура УдалитьФайлБезопасно(ПутьКФайлу = Неопределено)

Если ПутьКФайлуРезультата = "" Тогда
Если ПустаяСтрока(ПутьКФайлу) Тогда
Возврат;
КонецЕсли;

Попытка
УдалитьФайлы(ПутьКФайлуРезультата);
УдалитьФайлы(ПутьКФайлу);
Исключение
ТекстСообщения = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписатьВЖурналРегистрации(ТекстСообщения);
Expand Down

0 comments on commit 3ee2054

Please sign in to comment.