1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-02-03 13:22:19 +02:00

Переработка автоматических процессов

This commit is contained in:
Anton Titovets 2024-08-07 12:46:01 +03:00
parent 69d743d92b
commit ae1c349cc0
10 changed files with 5469 additions and 4515 deletions

View File

@ -1,220 +1,134 @@
Функция ПолучитьСопоставлениеФайлов()
#Использовать "./internal"
Сопоставление = Новый Соответствие();
ФайлыМодулей = НайтиФайлы("./src/ru/", "*.bsl", Истина);
Признак = "// OneScript: ";
Перем ПутьPackagedef;
Перем ОсновнойПутьИсходников;
Перем СоответствиеЗамен;
Перем ПутьПакета;
Перем Версия;
Перем Языки;
Перем КаталогСловарей;
Перем ФайлыПеревода;
Перем ФайлыРазбораСловаря;
Перем ФайлыФорматирования;
Перем Корень;
Перем ОсновнойЯзык;
Для Каждого Файл Из ФайлыМодулей Цикл
Процедура ПриСозданииОбъекта()
ТекущийФайл = Файл.ПолноеИмя;
ТекстФайла = Новый ТекстовыйДокумент();
ТекстФайла.Прочитать(ТекущийФайл, "UTF-8");
ДанныеПроекта = ОбщиеМетоды.ПолучитьДанныеПроекта();
Для Н = 1 По ТекстФайла.КоличествоСтрок() Цикл
// Основные
Корень = ДанныеПроекта["root"];
КаталогПакета = ДанныеПроекта["packageSrc"];
ОсновнойЯзык = ДанныеПроекта["mainLang"];
Версия = ДанныеПроекта["version"];
Языки = ДанныеПроекта["additionalLangs"];
КаталогСловарей = ДанныеПроекта["dictionariesSrc"];
ТекущаяСтрока = СокрЛП(ТекстФайла.ПолучитьСтроку(Н));
Если Не ЗначениеЗаполнено(ТекущаяСтрока) Тогда
Прервать;
КонецЕсли;
Если СтрНайти(ТекущаяСтрока, Признак) > 0 Тогда
ПутьOS = СтрЗаменить(ТекущаяСтрока, Признак, "");
ПутьOS = СокрЛП(ПутьOS);
ПутьOS = СтрЗаменить(ПутьOS, "./", "./src/ru/");
Сопоставление.Вставить(ТекущийФайл, ПутьOS);
КонецЕсли;
КонецЦикла;
КонецЦикла;
ОбновитьLibConfig(Сопоставление);
Возврат Сопоставление;
КонецФункции
Функция ПолучитьСоответствиеЗамен()
ОсновнойПутьИсходников = Корень + ОсновнойЯзык + "/";
ПутьПакета = ОсновнойПутьИсходников + КаталогПакета;
ПутьPackagedef = ПутьПакета + "packagedef";
// Замены для OneScript
СоответствиеЗамен = Новый Соответствие();
СоответствиеЗамен.Вставить("// #Использовать" , "#Использовать");
СоответствиеЗамен.Вставить("//#Использовать" , "#Использовать");
СоответствиеЗамен.Вставить("УстановитьБезопасныйРежим(Истина);" , "");
СоответствиеЗамен.Вставить("УстановитьБезопасныйРежим(Ложь);" , "");
СоответствиеЗамен.Вставить("// !OInt " , "");
// Файлы перевода
ФайлыРазбораСловаря = ОпределитьНаборФайловДляСловаря();
ФайлыПеревода = ОпределитьНаборФайловПеревода();
Возврат СоответствиеЗамен;
КонецПроцедуры
Процедура ОсновнаяОбработка() Экспорт
СоответствиеМодулей = МетодыКонвертации.ПолучитьСопоставлениеФайлов(ОсновнойПутьИсходников);
МетодыВерсионирования.ОбновитьНомераВерсий(ПутьPackagedef, Версия);
МетодыВерсионирования.ОбновитьLibConfig(СоответствиеМодулей, ПутьПакета);
МетодыКонвертации.ПортироватьНабор(СоответствиеМодулей, СоответствиеЗамен);
МетодыСловарей.СоздатьНаборСловарей(ФайлыРазбораСловаря, Языки, КаталогСловарей);
МетодыПеревода.ПеревестиПроект(КаталогСловарей, Корень, ОсновнойЯзык, Языки, ФайлыПеревода);
ФайлыФорматирования = ОпределитьНаборФайловФорматирования();
МетодыФорматирования.ОтформатироватьНабор(ФайлыФорматирования);
КонецПроцедуры
Функция ОпределитьНаборФайловДляСловаря()
ВсеФайлы = НайтиФайлы(ОсновнойПутьИсходников, "*", Истина);
МассивФайлов = Новый Массив;
Для Каждого ФайлПроекта Из ВсеФайлы Цикл
Признак =
СтрНайти(ФайлПроекта.ПолноеИмя, "cli\data") = 0
И СтрНайти(ФайлПроекта.ПолноеИмя, "cli/data") = 0
И Не ФайлПроекта.ЭтоКаталог();
Если Признак Тогда
МассивФайлов.Добавить(ФайлПроекта);
КонецЕсли;
КонецЦикла;
Возврат МассивФайлов;
КонецФункции
Процедура ВыполнитьОбработку()
ОбновитьНомерВерсии();
Сообщить("Начало конвертации OPI -> OInt");
Сообщить("------------------------------");
Функция ОпределитьНаборФайловФорматирования()
Начало = ТекущаяДата();
// Наборы файлов
ВсеФайлы = НайтиФайлы(ОсновнойПутьИсходников, "*", Истина);
МассивФайлов = Новый Массив;
Для Каждого ФайлПроекта Из ВсеФайлы Цикл
СоответствиеМодулей = ПолучитьСопоставлениеФайлов();
Признак =
(ФайлПроекта.Расширение = "os"
Или ФайлПроекта.Расширение = "bsl")
И СтрНайти(ФайлПроекта.ПолноеИмя, "cli/") = 0
И СтрНайти(ФайлПроекта.ПолноеИмя, "cli\") = 0;
Для Каждого ПараМодулей Из СоответствиеМодулей Цикл
Сообщить(Символы.ПС);
ПортироватьФайл(ПараМодулей.Ключ, ПараМодулей.Значение);
Если Признак Тогда
МассивФайлов.Добавить(ФайлПроекта);
КонецЕсли;
КонецЦикла;
Сообщить("------------------------------");
Сообщить("Обработка завершена! Длительность - " + Строка(ТекущаяДата() - Начало));
КонецПроцедуры
#Область СлужебныеПроцедурыИФункции
Процедура ПортироватьФайл(Знач Файл1С, Знач ФайлОС)
ФайлМодуля = Новый Файл(Файл1С);
МодульОС = Новый Файл(ФайлОС);
ИмяМодуля = МодульОС.Имя;
Если ФайлМодуля.Существует() Тогда
ВыводСообщенияПроцесса(ИмяМодуля, "Начало обработки файла");
Иначе
ВыводСообщенияПроцесса(ИмяМодуля, "Файл не существует. Пропускаем");
Возврат;
КонецЕсли;
Модуль = ПрочитатьМодуль(Файл1С, ИмяМодуля);
Если СтрДлина(Модуль) = 0 Тогда
ВыводСообщенияПроцесса(ИмяМодуля, "Модуль пустой. Пропускаем");
Возврат;
КонецЕсли;
ОбработатьЗаменыМодуля(ИмяМодуля, Модуль);
ЗаписатьМодуль(ФайлОС, Модуль, ИмяМодуля);
КонецПроцедуры
Функция ПрочитатьМодуль(Знач ФайлМодуля, Знач ИмяМодуля)
ВыводСообщенияПроцесса(ИмяМодуля, "Начало чтения текста модуля");
ЧтениеТекста = Новый ЧтениеТекста(ФайлМодуля, "UTF-8");
Модуль = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();
ВыводСообщенияПроцесса(ИмяМодуля, "Модуль прочитан. Длина - " + Строка(СтрДлина(Модуль)));
Возврат Модуль;
Возврат МассивФайлов;
КонецФункции
Процедура ЗаписатьМодуль(Знач ФайлМодуля, Знач Модуль, Знач ИмяМодуля)
ВыводСообщенияПроцесса(ИмяМодуля, "Начало записи модуля");
ТекстовыйДокумент = Новый ТекстовыйДокумент();
ТекстовыйДокумент.УстановитьТекст(Модуль);
ТекстовыйДокумент.Записать(ФайлМодуля);
ВыводСообщенияПроцесса(ИмяМодуля, "Модуль записан");
КонецПроцедуры
Процедура ВыводСообщенияПроцесса(Знач ИмяФайла, Знач Действие)
Длина = 30;
Пока СтрДлина(ИмяФайла) < Длина Цикл
ИмяФайла = ИмяФайла + " ";
КонецЦикла;
Сообщить("Конвертация | " + ИмяФайла + " | " + Действие);
КонецПроцедуры
Процедура ОбработатьЗаменыМодуля(Знач ИмяМодуля, Модуль)
ВыводСообщенияПроцесса(ИмяМодуля, "Начало произведения замен");
СоответствиеЗамен = ПолучитьСоответствиеЗамен();
Для Каждого Замена Из СоответствиеЗамен Цикл
Модуль = СтрЗаменить(Модуль, Замена.Ключ, Замена.Значение);
КонецЦикла;
ВыводСообщенияПроцесса(ИмяМодуля, "Окончание произведения замен");
КонецПроцедуры
Процедура ОбновитьНомерВерсии()
ПутьПД = "./src/ru/OInt/packagedef";
ПутьКФ = "./src/ru/OPI/src/Configuration/Configuration.mdo";
Версия = "";
ЧтениеДанныхКонфигурации = Новый ЧтениеXML();
ЧтениеДанныхКонфигурации.ОткрытьФайл(ПутьКФ);
Пока ЧтениеДанныхКонфигурации.Прочитать() Цикл
Если Строка(ЧтениеДанныхКонфигурации.Имя) = "version" Тогда
ЧтениеДанныхКонфигурации.Прочитать();
Версия = Строка(ЧтениеДанныхКонфигурации.Значение);
Прервать;
КонецЕсли;
КонецЦикла;
Признак = ".Версия(""";
Packagedef = Новый ТекстовыйДокумент();
Packagedef.Прочитать(ПутьПД);
Для Н = 1 По Packagedef.КоличествоСтрок() Цикл
ТекущаяСтрока = СокрЛП(Packagedef.ПолучитьСтроку(Н));
Если СтрНайти(ТекущаяСтрока, Признак) Тогда
Packagedef.ЗаменитьСтроку(Н, " .Версия(""" + Версия + """)");
Packagedef.Записать(ПутьПД);
Возврат;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ОбновитьLibConfig(Знач СоответствиеКовертации)
Документ = Новый ТекстовыйДокумент();
Документ.ДобавитьСтроку("<package-def>");
Макет = " <module name=""%1"" file=""%2""/>";
Для Каждого Модуль Из СоответствиеКовертации Цикл
ТекущийМодуль = Модуль.Значение;
ФайлМодуля = Новый Файл(ТекущийМодуль);
ПутьМодуля = СтрЗаменить(ТекущийМодуль, "./src/ru/OInt/", "");
Бибилотека = ФайлМодуля.ИмяБезРасширения;
Если Бибилотека = "OPI_Тесты" Тогда
Продолжить;
КонецЕсли;
ТекущаяСтрока = СтрШаблон(Макет, Бибилотека, СокрЛП(ПутьМодуля));
Документ.ДобавитьСтроку(ТекущаяСтрока);
КонецЦикла;
Функция ОпределитьНаборФайловПеревода()
Документ.ДобавитьСтроку("</package-def>");
Документ.Записать("./src/ru/OInt/lib.config");
// Наборы файлов
ВсеФайлы = НайтиФайлы(ОсновнойПутьИсходников, "*", Истина);
МассивФайлов = Новый Массив;
Для Каждого ФайлПроекта Из ВсеФайлы Цикл
КонецПроцедуры
Признак =
СтрНайти(ФайлПроекта.ПолноеИмя, "cli") = 0
И СтрНайти(ФайлПроекта.ПолноеИмя, "packagedef") = 0
И Не ФайлПроекта.ЭтоКаталог();
Если Признак Тогда
МассивФайлов.Добавить(ФайлПроекта);
КонецЕсли;
#КонецОбласти
КонецЦикла;
Возврат МассивФайлов;
КонецФункции
ПриСозданииОбъекта();
ОсновнаяОбработка();
ВыполнитьОбработку();

View File

@ -0,0 +1,87 @@
Функция ПрочитатьФайлJSON(Знач Путь) Экспорт
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.ОткрытьФайл(Путь);
Данные = ПрочитатьJSON(ЧтениеJSON, Истина);
ЧтениеJSON.Закрыть();
Возврат Данные;
КонецФункции
Процедура ЗаписатьФайлJSON(Знач Путь, Знач Данные) Экспорт
Запись = Новый ЗаписьJSON;
ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто);
Запись.ОткрытьФайл(Путь, , , ПараметрыЗаписиJSON);
ЗаписатьJSON(Запись, Данные);
Запись.Закрыть();
КонецПроцедуры
Функция ПолучитьАлфавит() Экспорт
Алфавит = Новый Массив;
Алфавит.Добавить("а");
Алфавит.Добавить("б");
Алфавит.Добавить("в");
Алфавит.Добавить("г");
Алфавит.Добавить("д");
Алфавит.Добавить("е");
Алфавит.Добавить("ё");
Алфавит.Добавить("ж");
Алфавит.Добавить("з");
Алфавит.Добавить("и");
Алфавит.Добавить("й");
Алфавит.Добавить("к");
Алфавит.Добавить("л");
Алфавит.Добавить("м");
Алфавит.Добавить("н");
Алфавит.Добавить("о");
Алфавит.Добавить("п");
Алфавит.Добавить("р");
Алфавит.Добавить("с");
Алфавит.Добавить("т");
Алфавит.Добавить("у");
Алфавит.Добавить("ф");
Алфавит.Добавить("х");
Алфавит.Добавить("ц");
Алфавит.Добавить("ч");
Алфавит.Добавить("ш");
Алфавит.Добавить("щ");
Алфавит.Добавить("ъ");
Алфавит.Добавить("ы");
Алфавит.Добавить("ь");
Алфавит.Добавить("э");
Алфавит.Добавить("ю");
Алфавит.Добавить("я");
Возврат Алфавит;
КонецФункции
Функция ПолучитьМассивСимволов() Экспорт
МассивСимволов = Новый Массив();
МассивСимволов.Добавить(";");
МассивСимволов.Добавить(".");
МассивСимволов.Добавить(",");
МассивСимволов.Добавить(")");
МассивСимволов.Добавить("(");
МассивСимволов.Добавить("/");
МассивСимволов.Добавить("\");
МассивСимволов.Добавить("[");
МассивСимволов.Добавить("]");
МассивСимволов.Добавить("=");
МассивСимволов.Добавить("+");
МассивСимволов.Добавить("-");
МассивСимволов.Добавить("*");
МассивСимволов.Добавить("#");
МассивСимволов.Добавить(" ");
МассивСимволов.Добавить("_");
МассивСимволов.Добавить("""");
Возврат МассивСимволов;
КонецФункции

View File

@ -0,0 +1,49 @@
#Область СлужебныйПрограммныйИнтерфейс
Процедура ОбновитьНомераВерсий(Знач ПутьPackagedef, Знач Версия) Экспорт
Признак = ".Версия(""";
Packagedef = Новый ТекстовыйДокумент();
Packagedef.Прочитать(ПутьPackagedef);
Для Н = 1 По Packagedef.КоличествоСтрок() Цикл
ТекущаяСтрока = СокрЛП(Packagedef.ПолучитьСтроку(Н));
Если СтрНайти(ТекущаяСтрока, Признак) Тогда
Packagedef.ЗаменитьСтроку(Н, " .Версия(""" + Версия + """)");
Packagedef.Записать(ПутьPackagedef);
Возврат;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ОбновитьLibConfig(Знач СоответствиеКовертации, Знач ПутьПакета) Экспорт
Документ = Новый ТекстовыйДокумент();
Документ.ДобавитьСтроку("<package-def>");
Макет = " <module name=""%1"" file=""%2""/>";
Для Каждого Модуль Из СоответствиеКовертации Цикл
ТекущийМодуль = Модуль.Значение;
ФайлМодуля = Новый Файл(ТекущийМодуль);
ПутьМодуля = СтрЗаменить(ТекущийМодуль, ПутьПакета, "");
Бибилотека = ФайлМодуля.ИмяБезРасширения;
Если Бибилотека = "OPI_Тесты" Тогда
Продолжить;
КонецЕсли;
ТекущаяСтрока = СтрШаблон(Макет, Бибилотека, СокрЛП(ПутьМодуля));
Документ.ДобавитьСтроку(ТекущаяСтрока);
КонецЦикла;
Документ.ДобавитьСтроку("</package-def>");
Документ.Записать(ПутьПакета + "lib.config");
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,99 @@
#Область СлужебныйПрограммныйИнтерфейс
Процедура ПортироватьНабор(Знач Набор, Знач СоответствиеЗамен) Экспорт
Для Каждого Элемент Из Набор Цикл
ПортироватьФайл(Элемент.Ключ, Элемент.Значение, СоответствиеЗамен);
КонецЦикла;
КонецПроцедуры
Процедура ПортироватьФайл(Знач Файл1С, Знач ФайлОС, Знач СоответствиеЗамен) Экспорт
ФайлМодуля = Новый Файл(Файл1С);
Если Не ФайлМодуля.Существует() Тогда
Возврат;
КонецЕсли;
Модуль = ПрочитатьМодуль(Файл1С);
Если СтрДлина(Модуль) = 0 Тогда
Возврат;
КонецЕсли;
ОбработатьЗаменыМодуля(Модуль, СоответствиеЗамен);
ЗаписатьМодуль(ФайлОС, Модуль);
КонецПроцедуры
Функция ПолучитьСопоставлениеФайлов(Знач ОсновнойПутьИсходников) Экспорт
Сопоставление = Новый Соответствие();
ФайлыМодулей = НайтиФайлы(ОсновнойПутьИсходников, "*.bsl", Истина);
Признак = "// OneScript: ";
Для Каждого Файл Из ФайлыМодулей Цикл
ТекущийФайл = Файл.ПолноеИмя;
ТекстФайла = Новый ТекстовыйДокумент();
ТекстФайла.Прочитать(ТекущийФайл, "UTF-8");
Для Н = 1 По ТекстФайла.КоличествоСтрок() Цикл
ТекущаяСтрока = СокрЛП(ТекстФайла.ПолучитьСтроку(Н));
Если Не ЗначениеЗаполнено(ТекущаяСтрока) Тогда
Прервать;
КонецЕсли;
Если СтрНайти(ТекущаяСтрока, Признак) > 0 Тогда
ПутьOS = СтрЗаменить(ТекущаяСтрока, Признак, "");
ПутьOS = СокрЛП(ПутьOS);
ПутьOS = СтрЗаменить(ПутьOS, "./", ОсновнойПутьИсходников);
Сопоставление.Вставить(ТекущийФайл, ПутьOS);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Возврат Сопоставление;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ПрочитатьМодуль(Знач ФайлМодуля)
ЧтениеТекста = Новый ЧтениеТекста(ФайлМодуля, "UTF-8");
Модуль = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();
Возврат Модуль;
КонецФункции
Процедура ЗаписатьМодуль(Знач ФайлМодуля, Знач Модуль)
ТекстовыйДокумент = Новый ТекстовыйДокумент();
ТекстовыйДокумент.УстановитьТекст(Модуль);
ТекстовыйДокумент.Записать(ФайлМодуля);
КонецПроцедуры
Процедура ОбработатьЗаменыМодуля(Модуль, СоответствиеЗамен)
Для Каждого Замена Из СоответствиеЗамен Цикл
Модуль = СтрЗаменить(Модуль, Замена.Ключ, Замена.Значение);
КонецЦикла;
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,247 @@
Перем ТаблицаСловаря;
Перем КаталогОригинала;
Процедура ПеревестиПроект(Знач КаталогСловарей, Знач Корень, Знач ОсновнойЯзык, Знач Языки, Знач ФайлыПеревода) Экспорт
ТаблицаСловаря = Новый ТаблицаЗначений();
ТаблицаСловаря.Колонки.Добавить("Ключ");
ТаблицаСловаря.Колонки.Добавить("Значение");
ТаблицаСловаря.Колонки.Добавить("Длина");
ТаблицаСловаря.Колонки.Добавить("ИмяМодуля");
ПутьОригинала = Корень + ОсновнойЯзык;
КаталогОригинала = Новый Файл(ПутьОригинала);
КаталогОригинала = КаталогОригинала.ПолноеИмя;
Для Каждого Язык Из Языки Цикл
ПеревестиПоСловарю(КаталогСловарей, Язык, ФайлыПеревода, Корень);
КонецЦикла;
КонецПроцедуры
Процедура ПеревестиПоСловарю(Знач КаталогСловарей, Знач Язык, Знач Файлы, Знач Корень);
ПутьПеревода = Корень + Язык;
ПутьСловаря = КаталогСловарей + Язык + ".json";
Словарь = Новый Файл(ПутьСловаря);
Если Не Словарь.Существует() Тогда
Возврат;
КонецЕсли;
КаталогПриемник = Новый Файл(ПутьПеревода);
ПутьКСловарю = Словарь.ПолноеИмя;
Язык = Словарь.ИмяБезРасширения;
ПолучитьТаблицуСловаря(ПутьКСловарю);
СкопироватьФайлы(Файлы, КаталогПриемник);
ФайлыМодулей = НайтиФайлы(ПутьПеревода, "*", Истина);
Для Каждого ФайлМодуля Из ФайлыМодулей Цикл
Если ФайлМодуля.ЭтоКаталог() Тогда
Продолжить;
КонецЕсли;
ПеревестиМодуль(ФайлМодуля.ПолноеИмя);
КонецЦикла;
ПеревестиИменаФайлов(ФайлыМодулей);
КонецПроцедуры
Процедура ПеревестиИменаФайлов(ВсеФайлыЛокализации)
ОтборИменМодулей = Новый Структура("ИмяМодуля", Истина);
СтрокиИмен = ТаблицаСловаря.НайтиСтроки(ОтборИменМодулей);
УдаляемыеКаталоги = Новый Массив;
Для Каждого ФайлЛокализации Из ВсеФайлыЛокализации Цикл
Если Не ФайлЛокализации.ЭтоКаталог() Тогда
Продолжить;
КонецЕсли;
ТекущийПуть = ФайлЛокализации.ПолноеИмя;
НовыйПуть = ТекущийПуть;
Для Каждого Имя Из СтрокиИмен Цикл
НовыйПуть = СтрЗаменить(НовыйПуть, Имя.Ключ, Имя.Значение);
КонецЦикла;
ФайлНовогоПути = Новый Файл(НовыйПуть);
Если Не ФайлНовогоПути.Существует() Тогда
УдаляемыеКаталоги.Добавить(ТекущийПуть);
СоздатьКаталог(НовыйПуть);
КонецЕсли;
КонецЦикла;
Для Каждого ФайлЛокализации Из ВсеФайлыЛокализации Цикл
Если ФайлЛокализации.ЭтоКаталог() Тогда
Продолжить;
КонецЕсли;
ТекущийПуть = ФайлЛокализации.ПолноеИмя;
НовыйПуть = ТекущийПуть;
Для Каждого Имя Из СтрокиИмен Цикл
НовыйПуть = СтрЗаменить(НовыйПуть, Имя.Ключ, Имя.Значение);
КонецЦикла;
ФайлНовогоПути = Новый Файл(НовыйПуть);
Если Не ФайлНовогоПути.Существует() Тогда
ПереместитьФайл(ТекущийПуть, НовыйПуть);
КонецЕсли;
КонецЦикла;
Для Каждого Каталог Из УдаляемыеКаталоги Цикл
УдалитьФайлы(Каталог);
КонецЦикла;
КонецПроцедуры
Процедура ПеревестиМодуль(ПутьКМодулю)
ДокументМодуля = Новый ТекстовыйДокумент();
ДокументМодуля.Прочитать(ПутьКМодулю, "UTF-8");
Для Н = 1 По ДокументМодуля.КоличествоСтрок() Цикл
ТекущаяСтрока = СокрЛП(ДокументМодуля.ПолучитьСтроку(Н));
Если Не ЗначениеЗаполнено(ТекущаяСтрока) Тогда
Продолжить;
КонецЕсли;
Пока СтрНайти(ТекущаяСтрока, " ") <> 0 Цикл
ТекущаяСтрока = СтрЗаменить(ТекущаяСтрока, " ", " ");
КонецЦикла;
ВыводимаяСтрока = СтрЗаменить(ДокументМодуля.ПолучитьСтроку(Н), СокрЛП(ДокументМодуля.ПолучитьСтроку(Н)), ТекущаяСтрока);
ДокументМодуля.ЗаменитьСтроку(Н, ВыводимаяСтрока);
КонецЦикла;
ТекстМодуля = ДокументМодуля.ПолучитьТекст();
Для Каждого Элемент Из ТаблицаСловаря Цикл
ТекущееЗначение = Элемент.Значение;
Пока СтрДлина(ТекущееЗначение) < Элемент.Длина Цикл
ТекущееЗначение = ТекущееЗначение + " ";
КонецЦикла;
ТекстМодуля = СтрЗаменить(ТекстМодуля, Элемент.Ключ, Элемент.Значение);
КонецЦикла;
ОбработатьНесовпаденияOneScript(ТекстМодуля, ПутьКМодулю);
ДокументМодуля.УстановитьТекст(ТекстМодуля);
ДокументМодуля.Записать(ПутьКМодулю);
КонецПроцедуры
Процедура ПолучитьТаблицуСловаря(ПутьКСловарю)
Сообщить("Чтение словаря " + ПутьКСловарю);
ТаблицаСловаря.Очистить();
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.ОткрытьФайл(ПутьКСловарю);
ДанныеСловаря = ПрочитатьJSON(ЧтениеJSON, Истина);
ЧтениеJSON.Закрыть();
Для Каждого Элемент Из ДанныеСловаря Цикл
НоваяСтрокаСловаря = ТаблицаСловаря.Добавить();
НоваяСтрокаСловаря.Ключ = Элемент.Ключ;
НоваяСтрокаСловаря.Значение = Элемент.Значение;
НоваяСтрокаСловаря.Длина = СтрДлина(Элемент.Ключ);
НоваяСтрокаСловаря.ИмяМодуля = СтрНайти(Элемент.Ключ, "OPI_") <> 0;
КонецЦикла;
ТаблицаСловаря.Сортировать("Длина УБЫВ");
ПутьКСловарюКлючевыхСлов = "./service/dictionaries/en_post.json";
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.ОткрытьФайл(ПутьКСловарюКлючевыхСлов);
СоответствиеКС = ПрочитатьJSON(ЧтениеJSON, Истина);
ЧтениеJSON.Закрыть();
Для Каждого КлючевоеСлово Из СоответствиеКС Цикл
НоваяСтрокаСловаря = ТаблицаСловаря.Добавить();
НоваяСтрокаСловаря.Ключ = КлючевоеСлово.Ключ;
НоваяСтрокаСловаря.Значение = КлючевоеСлово.Значение;
НоваяСтрокаСловаря.Длина = СтрДлина(КлючевоеСлово.Ключ);
НоваяСтрокаСловаря.ИмяМодуля = Ложь;
КонецЦикла;
КонецПроцедуры
Процедура СкопироватьФайлы(Знач МассивФайлов, Знач КаталогПриемник)
ПутьПриемник = КаталогПриемник.ПолноеИмя;
Если КаталогПриемник.Существует() Тогда
УдалитьФайлы(ПутьПриемник);
КонецЕсли;
СоздатьКаталог(ПутьПриемник);
Для Каждого Файл Из МассивФайлов Цикл
Если Файл.ЭтоКаталог() Тогда
ПолноеИмяИсточник = Файл.ПолноеИмя;
ПолноеИмяПриемник = ПутьПриемник + СтрЗаменить(Файл.ПолноеИмя, КаталогОригинала, "");
СоздатьКаталог(ПолноеИмяПриемник);
КонецЕсли;
КонецЦикла;
Для Каждого Файл Из МассивФайлов Цикл
Если Не Файл.ЭтоКаталог() Тогда
ПолноеИмяИсточник = Файл.ПолноеИмя;
ПолноеИмяПриемник = ПутьПриемник + СтрЗаменить(Файл.ПолноеИмя, КаталогОригинала, "");
КопироватьФайл(ПолноеИмяИсточник, ПолноеИмяПриемник);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ОбработатьНесовпаденияOneScript(ТекстМодуля, ПутьКМодулю)
СоответствиеОшибок = Новый Соответствие();
СоответствиеОшибок.Вставить("ConcatBinaryData" , "ConcatenateBinaryData");
СоответствиеОшибок.Вставить("GetTestList" , "ПолучитьСписокТестов");
СоответствиеОшибок.Вставить("Exists" , "Exist");
СоответствиеОшибок.Вставить("SetBodyFromBinaryData", "SetBodyFromBinary");
СоответствиеОшибок.Вставить("GetBodyAsBinaryData" , "ПолучитьТелоКакДвоичныеДанные");
СоответствиеОшибок.Вставить("FileCopy" , "CopyFile");
ФайлМодуля = Новый Файл(ПутьКМодулю);
Если СтрНайти(ФайлМодуля.Имя, ".os") <> 0 Тогда
Для Каждого Ошибка Из СоответствиеОшибок Цикл
ТекстМодуля = СтрЗаменить(ТекстМодуля, Ошибка.Ключ, Ошибка.Значение);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
//ПриСозданииОбъекта();

View File

@ -0,0 +1,267 @@
#Использовать "./internal"
Перем МассивСимволов;
#Область СлужебныйПрограммныйИнтерфейс
Процедура СоздатьНаборСловарей(Знач ФайлыМодулей, Знач Языки, Знач КаталогСловарей) Экспорт
Для Каждого Язык Из Языки Цикл
ПутьСловаря = КаталогСловарей + Язык + ".json";
ФайлСловаря = Новый Файл(ПутьСловаря);
Если ФайлСловаря.Существует() Тогда
СоздатьСловарь(ФайлыМодулей, ПутьСловаря);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура СоздатьСловарь(Знач ФайлыМодулей, Знач ПутьСловаря) Экспорт
МассивСимволов = Инструменты.ПолучитьМассивСимволов();
СоответствиеСловаря = Инструменты.ПрочитатьФайлJSON(ПутьСловаря);
СписокСлов = Новый СписокЗначений();
Для Каждого Модуль Из ФайлыМодулей Цикл
ПолучитьМассивСловОригинала(Модуль.ПолноеИмя, СписокСлов);
КонецЦикла;
Для Каждого Слово Из СписокСлов Цикл
СловоОригинал = Слово.Значение;
СуществующийПеревод = СоответствиеСловаря[СловоОригинал];
Если Не ЗначениеЗаполнено(СуществующийПеревод) Тогда
СоответствиеСловаря.Вставить(СловоОригинал, "");
КонецЕсли;
КонецЦикла;
ЗаписатьJSONСловаря(СоответствиеСловаря, ПутьСловаря);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ЗаписатьJSONСловаря(СоответствиеСловаря, ПутьСловаря)
ТЗ = Новый ТаблицаЗначений();
ТЗ.Колонки.Добавить("Ключ");
ТЗ.Колонки.Добавить("Значение");
ТЗ.Колонки.Добавить("ДлинаКлюча");
ТЗ.Колонки.Добавить("Заполнено");
Для Каждого Элемент Из СоответствиеСловаря Цикл
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Ключ = Элемент.Ключ;
НоваяСтрока.Значение = Элемент.Значение;
НоваяСтрока.ДлинаКлюча = СтрДлина(Элемент.Ключ);
НоваяСтрока.Заполнено = ЗначениеЗаполнено(Элемент.Значение);
КонецЦикла;
ТЗ.Сортировать("Заполнено УБЫВ, ДлинаКлюча");
JSON = Новый ЗаписьJSON;
JSON.ОткрытьФайл(ПутьСловаря);
JSON.ЗаписатьНачалоОбъекта();
Для Каждого СтрокаТЗ Из ТЗ Цикл
JSON.ЗаписатьИмяСвойства(СтрокаТЗ["Ключ"]);
JSON.ЗаписатьЗначение(СтрокаТЗ["Значение"]);
КонецЦикла;
JSON.ЗаписатьКонецОбъекта();
JSON.Закрыть();
КонецПроцедуры
Процедура ПолучитьМассивСловОригинала(Знач ПутьКФайлу, СписокСлов)
Документ = Новый ТекстовыйДокумент();
Документ.Прочитать(ПутьКФайлу, "UTF-8");
Для Н = 1 По Документ.КоличествоСтрок() Цикл
ТекущаяСтрока = СокрЛП(Документ.ПолучитьСтроку(Н));
РазобратьСтрокуНаСлова(ТекущаяСтрока, СписокСлов);
КонецЦикла;
КонецПроцедуры
Процедура РазобратьСтрокуНаСлова(Знач ТекущаяСтрока, СписокСлов)
Если СтрНачинаетсяС(ТекущаяСтрока, "// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог") Тогда
Возврат;
КонецЕсли;
Если СтрНачинаетсяС(ТекущаяСтрока, "//") Тогда
РазобратьСтрокуКомментария(ТекущаяСтрока, СписокСлов);
Иначе
ЭтоВыражение = СтрНайти(ТекущаяСтрока, """") <> 0
Или СтрНайти(ТекущаяСтрока, "|") <> 0
Или СтрНайти(ТекущаяСтрока, "<") <> 0
Или СтрНайти(ТекущаяСтрока, ">") <> 0;
Если ЭтоВыражение Тогда
РазобратьВыражение(ТекущаяСтрока, СписокСлов);
Иначе
РазобратьОбычнуюСтроку(ТекущаяСтрока, СписокСлов);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура РазобратьСтрокуКомментария(ТекущаяСтрока, СписокСлов)
ТекущаяСтрока = СокрЛП(СтрЗаменить(ТекущаяСтрока, "//", ""));
ТекущаяСтрока = СтрЗаменить(ТекущаяСтрока, " - ", "$");
ТекущаяСтрока = СтрЗаменить(ТекущаяСтрока, ": [", "$");
МассивСтроки = СтрРазделить(ТекущаяСтрока, "$", Ложь);
Для Г = 0 По МассивСтроки.ВГраница() Цикл
ДобавитьСлово(СписокСлов, МассивСтроки[Г]);
КонецЦикла;
КонецПроцедуры
Процедура РазобратьВыражение(ТекущаяСтрока, СписокСлов)
ТекущаяСтрока = " " + ТекущаяСтрока;
ТекущаяСтрока = СтрЗаменить(ТекущаяСтрока, """", "$");
ТекущаяСтрока = СтрЗаменить(ТекущаяСтрока, "|", "$");
ТекущаяСтрока = СтрЗаменить(ТекущаяСтрока, "<", "$");
ТекущаяСтрока = СтрЗаменить(ТекущаяСтрока, ">", "$");
ТекущаяСтрока = СтрЗаменить(ТекущаяСтрока, "$$", """""");
МассивСтроки = СтрРазделить(ТекущаяСтрока, "$", Истина);
Цельный = Ложь;
Для Каждого Элемент Из МассивСтроки Цикл
Если Не ЗначениеЗаполнено(СокрЛП(Элемент)) Тогда
Продолжить;
КонецЕсли;
Если Цельный Тогда
ДобавитьСлово(СписокСлов, Элемент);
Иначе
РазобратьОбычнуюСтроку(Элемент, СписокСлов);
КонецЕсли;
Цельный = Не Цельный;
КонецЦикла;
КонецПроцедуры
Процедура РазобратьОбычнуюСтроку(ТекущаяСтрока, СписокСлов)
Для Каждого Символ Из МассивСимволов Цикл
ТекущаяСтрока = СтрЗаменить(ТекущаяСтрока, Символ, "$");
КонецЦикла;
Пока СтрНайти(ТекущаяСтрока, "$$") <> 0 Цикл
ТекущаяСтрока = СтрЗаменить(ТекущаяСтрока, "$$", "$");
КонецЦикла;
МассивЭлемента = СтрРазделить(ТекущаяСтрока, "$", Ложь);
Для Каждого Дробный Из МассивЭлемента Цикл
ДобавитьСлово(СписокСлов, Дробный);
КонецЦикла;
КонецПроцедуры
Процедура ДобавитьСлово(Список, Слово)
НормализоватьСлово(Слово);
Если Не ЗначениеЗаполнено(Слово) Или Не НайтиКириллицу(Слово) Тогда
Возврат;
КонецЕсли;
СуществующееЗначение = Список.НайтиПоЗначению(Слово);
Если СуществующееЗначение = Неопределено Тогда
Список.Добавить(Слово, СтрДлина(Слово));
КонецЕсли;
КонецПроцедуры
Процедура НормализоватьСлово(Слово)
Слово = СокрЛП(Слово);
Нормализовано = Ложь;
Пока Не Нормализовано Цикл
ПервыйСимвол = Ложь;
ПоследнийСимвол = Ложь;
Для Каждого Символ Из МассивСимволов Цикл
ПервыйСимвол = СтрНачинаетсяС(Слово, Символ);
ПоследнийСимвол = СтрЗаканчиваетсяНа(Слово, Символ);
Если ПервыйСимвол Или ПоследнийСимвол Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если ПервыйСимвол Тогда
Слово = Прав(Слово, СтрДлина(Слово) - 1);
КонецЕсли;
Если ПоследнийСимвол Тогда
Слово = Лев(Слово, СтрДлина(Слово) - 1);
КонецЕсли;
Если Не ПервыйСимвол И Не ПоследнийСимвол Тогда
Нормализовано = Истина;
КонецЕсли;
КонецЦикла;
Слово = СокрЛП(Слово);
КонецПроцедуры
Функция НайтиКириллицу(Знач Слово)
Алфавит = Инструменты.ПолучитьАлфавит();
СловоНРег = НРег(Слово);
Для Каждого Буква Из Алфавит Цикл
Если СтрНайти(СловоНРег, Буква) <> 0 Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
#КонецОбласти

View File

@ -0,0 +1,239 @@
#Область СлужебныйПрограммныйИнтерфейс
Процедура ОтформатироватьНабор(Знач МассивФайлов) Экспорт
Для Каждого Файл Из МассивФайлов Цикл
ОтформатироватьМодуль(Файл.ПолноеИмя);
КонецЦикла;
КонецПроцедуры
Процедура ОтформатироватьМодуль(Знач ПутьКМодулю) Экспорт
ТекстовыйДокумент = Новый ТекстовыйДокумент();
ТекстовыйДокумент.Прочитать(ПутьКМодулю, "UTF-8");
БлокиКода = РазобратьМодульНаБлоки(ТекстовыйДокумент);
ТекстФайла = ОтформатироватьБлоки(БлокиКода);
ТекстовыйДокумент.УстановитьТекст(ТекстФайла);
ТекстовыйДокумент.Записать(ПутьКМодулю);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция РазобратьМодульНаБлоки(Знач ТекстовыйДокумент)
Для Н = 1 По ТекстовыйДокумент.КоличествоСтрок() Цикл
ТекущаяСтрока = ТекстовыйДокумент.ПолучитьСтроку(Н);
Если Не ЗначениеЗаполнено(СокрЛП(ТекущаяСтрока)) Тогда
ТекстовыйДокумент.ЗаменитьСтроку(Н, "⣿");
Иначе
ТекстовыйДокумент.ЗаменитьСтроку(Н, СокрП(ТекущаяСтрока));
КонецЕсли;
КонецЦикла;
ТекстФайла = ТекстовыйДокумент.ПолучитьТекст();
БлокиФайла = СтрРазделить(ТекстФайла, "⣿");
Возврат БлокиФайла;
КонецФункции
Функция ОтформатироватьБлоки(Знач БлокиКода)
Для Н = 0 По БлокиКода.ВГраница() Цикл
МассивСтрокБлока = СтрРазделить(БлокиКода[Н], Символы.ПС);
Если МассивСтрокБлока.Количество() < 2 Тогда
Продолжить;
ИначеЕсли СтрНачинаетсяС(СокрЛП(МассивСтрокБлока[1]), "//") Тогда
Продолжить;
Иначе
ВыровнятьЗнакиРавно(МассивСтрокБлока);
ВыровнятьЗапятые(МассивСтрокБлока);
КонецЕсли;
БлокиКода[Н] = СтрСоединить(МассивСтрокБлока, Символы.ПС);
КонецЦикла;
ТекстФайла = СтрСоединить(БлокиКода, "");
ТекстФайла = СтрЗаменить(ТекстФайла, Символы.Таб, " ");
Возврат ТекстФайла;
КонецФункции
Процедура ВыровнятьЗнакиРавно(МассивСтрокБлока)
СоответствиеРасположений = Новый Соответствие();
МаксимальноеРасположение = 0;
ЧислоЗнаковРавно = 0;
Для Н = 0 По МассивСтрокБлока.ВГраница() Цикл
РасположениеРавно = СтрНайти(МассивСтрокБлока[Н], "=");
Если Не РасположениеРавно = 0 Тогда
МассивЧастей = СтрРазделить(МассивСтрокБлока[Н], "=");
НеПроверять = Ложь;
Для А = 0 По МассивЧастей.ВГраница() - 1 Цикл
ЧислоКавычек = СтрЧислоВхождений(МассивЧастей[А], """");
Если ЧислоКавычек <> 0 И ЧислоКавычек % 2 <> 0 Тогда
СоответствиеРасположений.Вставить(Н, 0);
НеПроверять = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если НеПроверять Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
СоответствиеРасположений.Вставить(Н, РасположениеРавно);
МаксимальноеРасположение = ?(РасположениеРавно > МаксимальноеРасположение, РасположениеРавно, МаксимальноеРасположение);
Если Не РасположениеРавно = 0 Тогда
ЧислоЗнаковРавно = ЧислоЗнаковРавно + 1;
КонецЕсли;
КонецЦикла;
Если МаксимальноеРасположение = 0 Или ЧислоЗнаковРавно < 2 Тогда
Возврат;
КонецЕсли;
Для Каждого СтрокаБлока Из СоответствиеРасположений Цикл
РасположениеРавно = СтрокаБлока.Значение;
Индекс = СтрокаБлока.Ключ;
Если РасположениеРавно = 0 Или МаксимальноеРасположение - РасположениеРавно > 12 Тогда
Продолжить;
КонецЕсли;
Для Н = РасположениеРавно По МаксимальноеРасположение - 1 Цикл
МассивСтрокБлока[Индекс] = СтрЗаменить(МассивСтрокБлока[Индекс], "=", " =");
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Процедура ВыровнятьЗапятые(МассивСтрокБлока, СоответствиеМаксимумов = "")
ПолноеСоответствиеРасположений = Новый Соответствие();
СтрокаСЗапятыми = 0;
НачалоСтроки = "";
Для Н = 0 По МассивСтрокБлока.ВГраница() Цикл
МассивУчастков = СтрРазделить(МассивСтрокБлока[Н], ",");
МассивУчастков_ = Новый Массив;
Соединение = Ложь;
СтрокаСоединения = "";
Для Каждого Участок Из МассивУчастков Цикл
ЧислоКавычек = СтрЧислоВхождений(Участок, """");
Если (ЧислоКавычек = 0 Или ЧислоКавычек % 2 = 0 ) И Не Соединение Тогда
МассивУчастков_.Добавить(Участок);
ИначеЕсли Соединение И ЧислоКавычек % 2 <> 0 Тогда
МассивУчастков_.Добавить(СтрокаСоединения + "," + Участок);
СтрокаСоединения = "";
Соединение = Ложь;
Иначе
СтрокаСоединения = ?(ЗначениеЗаполнено(СтрокаСоединения), СтрокаСоединения + "," + Участок, Участок);
Соединение = Истина;
КонецЕсли;
КонецЦикла;
МассивУчастков = МассивУчастков_;
Если МассивУчастков.Количество() < 2 Тогда
Продолжить;
Иначе
СтрокаСЗапятыми = СтрокаСЗапятыми + 1;
КонецЕсли;
МассивНачалаСтроки = СтрРазделить(МассивУчастков[0], "(");
Если МассивНачалаСтроки.Количество() < 2 Тогда
Продолжить;
КонецЕсли;
НачалоСтроки = МассивНачалаСтроки[0];
СоответствиеРасположений = ПолноеСоответствиеРасположений[НачалоСтроки];
Если Не ЗначениеЗаполнено(СоответствиеРасположений) Тогда
СоответствиеРасположений = Новый Соответствие;
КонецЕсли;
Для Р = 0 По МассивУчастков.ВГраница() - 1 Цикл
Если Не ЗначениеЗаполнено(СоответствиеМаксимумов) Тогда
ДлинаУчастка = СтрДлина(МассивУчастков[Р]);
ТекущийМаксимум = СоответствиеРасположений.Получить(Р);
ТекущийМаксимум = ?(ЗначениеЗаполнено(ТекущийМаксимум), ТекущийМаксимум, 0);
ТекущийМаксимум = ?(ДлинаУчастка > ТекущийМаксимум , ДлинаУчастка , ТекущийМаксимум);
СоответствиеРасположений.Вставить(Р, ТекущийМаксимум);
Иначе
ТекущееСоответствиеМаксимумов = СоответствиеМаксимумов[НачалоСтроки];
Если Не ЗначениеЗаполнено(ТекущееСоответствиеМаксимумов) Тогда
Прервать;
КонецЕсли;
НеобходимаяДлина = ТекущееСоответствиеМаксимумов[Р];
Если НеобходимаяДлина = Неопределено Тогда
Продолжить;
КонецЕсли;
Пока СтрДлина(МассивУчастков[Р]) < НеобходимаяДлина Цикл
МассивУчастков[Р] = МассивУчастков[Р] + " ";
КонецЦикла;
КонецЕсли;
КонецЦикла;
ПолноеСоответствиеРасположений.Вставить(НачалоСтроки, СоответствиеРасположений);
МассивСтрокБлока[Н] = СтрСоединить(МассивУчастков, ",");
КонецЦикла;
Если Не ЗначениеЗаполнено(СоответствиеМаксимумов)
И ЗначениеЗаполнено(ПолноеСоответствиеРасположений)
И СтрокаСЗапятыми > 1 Тогда
ВыровнятьЗапятые(МассивСтрокБлока, ПолноеСоответствиеРасположений);
КонецЕсли;
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,41 @@
#Использовать "./internal"
Функция ПолучитьДанныеПроекта() Экспорт
ФайлДанныхПроекта = "./service/project.json";
ДанныеПроекта = Инструменты.ПрочитатьФайлJSON(ФайлДанныхПроекта);
ОбновитьНомерВерсии(ДанныеПроекта);
Инструменты.ЗаписатьФайлJSON(ФайлДанныхПроекта, ДанныеПроекта);
Возврат ДанныеПроекта;
КонецФункции
Процедура ОбновитьНомерВерсии(ДанныеПроекта)
Корень = ДанныеПроекта["root"];
ОсновнойЯзык = ДанныеПроекта["mainLang"];
КаталогКонфигурации = ДанныеПроекта["configurationSrc"];
ОсновнойПутьИсходников = Корень + ОсновнойЯзык + "/";
ПутьКонфигурации = ОсновнойПутьИсходников + КаталогКонфигурации;
ПутьMDO = ПутьКонфигурации + "Configuration/Configuration.mdo";
Версия = "";
ЧтениеДанныхКонфигурации = Новый ЧтениеXML();
ЧтениеДанныхКонфигурации.ОткрытьФайл(ПутьMDO);
Пока ЧтениеДанныхКонфигурации.Прочитать() Цикл
Если Строка(ЧтениеДанныхКонфигурации.Имя) = "version" Тогда
ЧтениеДанныхКонфигурации.Прочитать();
Версия = Строка(ЧтениеДанныхКонфигурации.Значение);
Прервать;
КонецЕсли;
КонецЦикла;
ДанныеПроекта.Вставить("version", Версия);
КонецПроцедуры

File diff suppressed because it is too large Load Diff

11
service/project.json Normal file
View File

@ -0,0 +1,11 @@
{
"root": "./src/",
"mainLang": "ru",
"packageSrc": "OInt/",
"configurationSrc": "OPI/src/",
"dictionariesSrc": "./service/dictionaries/",
"version": "1.11.1",
"additionalLangs": [
"en"
]
}