1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2024-12-27 02:43:54 +02:00

Update МетодыCLI.os

This commit is contained in:
Anton Titovets 2024-10-27 17:10:11 +03:00
parent 4bd4e67c8e
commit 152452f172

View File

@ -13,42 +13,42 @@
Процедура СформироватьCLI(Знач Корень, Знач Языки, Знач КаталогДополнений) Экспорт
Для Каждого Язык Из Языки Цикл
Если Не Язык = "ru" Тогда
СоздатьОснову(Язык, Корень);
КонецЕсли;
МодульСоставаОПИ = Новый ТекстовыйДокумент();
ФайлСоставаОПИ = Корень + Язык + "/cli/data/Classes/СоставБиблиотеки.os";
КаталогСписковСотава = Корень + Язык + "/cli/data/Classes/internal/Classes/";
КаталогДополненийОпций = КаталогДополнений;
ЗаписатьНачалоФайла();
ЗаписатьФункциюОпределенияВерсии();
ЗаписатьФункциюОпределенияКоманд(Язык);
ЗаписатьВспомогательныеФункции();
МодульСоставаОПИ.Записать(ФайлСоставаОПИ);
ЗаполнитьТаблицыСостава();
ВыолнитьДополнительныйПеревод(Язык);
КонецЦикла;
КонецПроцедуры
Процедура СоздатьОснову(ТекущийЯзык, Корень)
ПутьCLI = Корень + ТекущийЯзык + "/cli";
ПапкаCLI = Новый Файл(ПутьCLI);
Если ПапкаCLI.Существует() Тогда
УдалитьФайлы(ПапкаCLI.ПолноеИмя);
КонецЕсли;
ПутьОригинала = "./src/ru/cli";
ПапкаОригинала = Новый Файл(ПутьОригинала);
СкопироватьФайлы(ПапкаОригинала.ПолноеИмя, ПапкаCLI.ПолноеИмя);
КонецПроцедуры
Процедура ЗаписатьНачалоФайла()
@ -59,38 +59,38 @@
КонецПроцедуры
Процедура ЗаписатьФункциюОпределенияВерсии()
Версия = ПолучитьВерсиюПакета();
МодульСоставаОПИ.ДобавитьСтроку("Функция ПолучитьВерсию() Экспорт");
МодульСоставаОПИ.ДобавитьСтроку(" Возврат """ + Версия + """;");
МодульСоставаОПИ.ДобавитьСтроку("КонецФункции");
МодульСоставаОПИ.ДобавитьСтроку("");
КонецПроцедуры
Процедура ЗаписатьФункциюОпределенияКоманд(ТекущийЯзык)
МодульСоставаОПИ.ДобавитьСтроку("Функция ПолучитьСоответствиеКомандМодулей() Экспорт");
МодульСоставаОПИ.ДобавитьСтроку("СоответствиеКомандМодулей = Новый Соответствие();");
ОпределитьСоответствиеМодулейКоманд(ТекущийЯзык);
Для Каждого КомандаМодуля Из СоответствиеМодулейКоманд Цикл
МодульСоставаОПИ.ДобавитьСтроку("СоответствиеКомандМодулей.Вставить("""
+ КомандаМодуля.Значение
+ """, """
+ КомандаМодуля.Ключ
+ """);");
+ КомандаМодуля.Значение
+ """, """
+ КомандаМодуля.Ключ
+ """);");
КонецЦикла;
МодульСоставаОПИ.ДобавитьСтроку("Возврат СоответствиеКомандМодулей;");
МодульСоставаОПИ.ДобавитьСтроку("КонецФункции");
МодульСоставаОПИ.ДобавитьСтроку("");
КонецПроцедуры
Процедура ЗаписатьВспомогательныеФункции()
МодульСоставаОПИ.ДобавитьСтроку("
|
|Функция ПолучитьСостав(Знач Команда) Экспорт
@ -126,51 +126,51 @@
Процедура ЗаполнитьТаблицыСостава()
Для Каждого Модуль Из ОбщийМассивМодулей Цикл
ТекущийМодуль = Модуль.ИмяБезРасширения;
Если Не СоответствиеМодулейКоманд[ТекущийМодуль] = Неопределено Тогда
РазобратьМодуль(Модуль);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура РазобратьМодуль(Модуль)
ЗаписатьНачалоСоставаБиблиотеки();
Парсер = Новый ПарсерВстроенногоЯзыка;
ДокументМодуля = Новый ТекстовыйДокумент;
ДокументМодуля.Прочитать(Модуль.ПолноеИмя);
ТекстМодуля = ДокументМодуля.ПолучитьТекст();
СтруктураМодуля = Парсер.Разобрать(ТекстМодуля);
ДокументМодуля = Новый ТекстовыйДокумент;
ДокументМодуля.Прочитать(Модуль.ПолноеИмя);
ТекстМодуля = ДокументМодуля.ПолучитьТекст();
СтруктураМодуля = Парсер.Разобрать(ТекстМодуля);
ТекущаяОбласть = "Основные методы";
Для Каждого Метод Из СтруктураМодуля.Объявления Цикл
Для Каждого Метод Из СтруктураМодуля.Объявления Цикл
Если Метод.Тип = "ИнструкцияПрепроцессораОбласть" Тогда
ТекущаяОбласть = Синонимайзер(Метод.Имя);
КонецЕсли;
Если Метод.Тип = "ОбъявлениеМетода" И Метод.Сигнатура.Экспорт = Истина Тогда
Если Метод.Тип = "ОбъявлениеМетода" И Метод.Сигнатура.Экспорт = Истина Тогда
ТаблицаОписанийПараметров.Очистить();
РазобратьКомментарийМетода(ДокументМодуля, Метод, Модуль, ТекущаяОбласть);
КонецЕсли;
КонецЦикла;
РазобратьКомментарийМетода(ДокументМодуля, Метод, Модуль, ТекущаяОбласть);
КонецЕсли;
КонецЦикла;
Команда = СоответствиеМодулейКоманд[Модуль.ИмяБезРасширения];
ЗаписатьОкончаниеСоставаБиблиотеки(Команда);
КонецПроцедуры
Процедура ЗаписатьНачалоСоставаБиблиотеки()
ТекущийФайлСостава = Новый ТекстовыйДокумент();
ТекущийФайлСостава.ДобавитьСтроку("Функция ПолучитьСостав() Экспорт
|
| ТаблицаСостава = Новый ТаблицаЗначений();
@ -183,174 +183,174 @@
| ТаблицаСостава.Колонки.Добавить(""ОписаниеМетода"");
| ТаблицаСостава.Колонки.Добавить(""Область"");
|");
ТаблицаОписанийПараметров = Новый ТаблицаЗначений;
ТаблицаОписанийПараметров.Колонки.Добавить("Имя");
ТаблицаОписанийПараметров.Колонки.Добавить("Типы");
ТаблицаОписанийПараметров.Колонки.Добавить("Описание");
ТаблицаОписанийПараметров.Колонки.Добавить("ЗначениеПоУмолчанию");
ТаблицаОписанийПараметров = Новый ТаблицаЗначений;
ТаблицаОписанийПараметров.Колонки.Добавить("Имя");
ТаблицаОписанийПараметров.Колонки.Добавить("Типы");
ТаблицаОписанийПараметров.Колонки.Добавить("Описание");
ТаблицаОписанийПараметров.Колонки.Добавить("ЗначениеПоУмолчанию");
КонецПроцедуры
Процедура ЗаписатьОкончаниеСоставаБиблиотеки(Библиотека)
ТекущийФайлСостава.ДобавитьСтроку(" Возврат ТаблицаСостава;");
ТекущийФайлСостава.ДобавитьСтроку("КонецФункции");
ТекущийФайлСостава.ДобавитьСтроку(Символы.ПС);
ТекущийФайлСостава.Записать(КаталогСписковСотава + Библиотека + ".os");
КонецПроцедуры
Процедура РазобратьКомментарийМетода(ТекстовыйДокумент, Метод, Модуль, Область)
НомерСтроки = Метод.Начало.НомерСтроки;
ИмяМетода = Метод.Сигнатура.Имя;
МассивКомментария = ПарсингКомментария(ТекстовыйДокумент, НомерСтроки);
Если МассивКомментария.Количество() = 0 Тогда
Возврат;
КонецЕсли;
МассивПараметров = Новый Массив;
ОписаниеМетода = "";
СформироватьСтруктуруМетода(МассивКомментария, МассивПараметров, ОписаниеМетода);
СформироватьТаблицуОписанийПараметров(МассивПараметров, Метод, Модуль);
ДопОписание = "";
НомерСтроки = Метод.Начало.НомерСтроки;
ИмяМетода = Метод.Сигнатура.Имя;
МассивКомментария = ПарсингКомментария(ТекстовыйДокумент, НомерСтроки);
Если МассивКомментария.Количество() = 0 Тогда
Возврат;
КонецЕсли;
МассивПараметров = Новый Массив;
ОписаниеМетода = "";
СформироватьСтруктуруМетода(МассивКомментария, МассивПараметров, ОписаниеМетода);
СформироватьТаблицуОписанийПараметров(МассивПараметров, Метод, Модуль);
ДопОписание = "";
ОпределитьДопОписание(ДопОписание, Модуль);
ОписаниеМетода = СокрЛП(ОписаниеМетода) + ДопОписание;
Для Каждого СтрокаПараметра Из ТаблицаОписанийПараметров Цикл
ЗаписатьСозданиеПараметраСостава(СтрокаПараметра, ИмяМетода, Область, СокрЛП(ОписаниеМетода));
ОписаниеМетода = "";
КонецЦикла;
КонецПроцедуры
Функция ПарсингКомментария(Знач ТекстовыйДокумент, Знач НомерСтроки)
ТекущаяСтрока = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки - 1);
ТекстКомментария = ТекущаяСтрока;
Счетчик = 1;
Пока СтрНайти(ТекущаяСтрока, "//") > 0 Цикл
Счетчик = Счетчик + 1;
ТекущаяСтрока = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки - Счетчик);
ТекстКомментария = ТекущаяСтрока + Символы.ПС + ТекстКомментария;
КонецЦикла;
ТекущаяСтрока = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки - 1);
ТекстКомментария = ТекущаяСтрока;
Счетчик = 1;
Пока СтрНайти(ТекущаяСтрока, "//") > 0 Цикл
Счетчик = Счетчик + 1;
ТекущаяСтрока = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки - Счетчик);
ТекстКомментария = ТекущаяСтрока + Символы.ПС + ТекстКомментария;
КонецЦикла;
Если СтрНайти(ТекстКомментария, "!NOCLI") > 0 Тогда
Возврат Новый Массив;
КонецЕсли;
МассивКомментария = СтрРазделить(ТекстКомментария, "//", Ложь);
Если МассивКомментария.Количество() = 0 Тогда
Сообщить(ТекстКомментария);
Возврат Новый Массив;
Возврат Новый Массив;
Иначе
МассивКомментария.Удалить(0);
КонецЕсли;
Возврат МассивКомментария;
КонецФункции
Процедура СформироватьСтруктуруМетода(Знач МассивКомментария, МассивПараметров, ОписаниеМетода)
ЗаписыватьПараметры = Ложь;
ЗаписыватьПараметры = Ложь;
ЗаписыватьОписание = Истина;
Счетчик = 0;
Для Каждого СтрокаКомментария Из МассивКомментария Цикл
Счетчик = 0;
Для Каждого СтрокаКомментария Из МассивКомментария Цикл
Счетчик = Счетчик + 1;
Если Не ЗначениеЗаполнено(СокрЛП(СтрокаКомментария)) Тогда
ЗаписыватьОписание = Ложь;
КонецЕсли;
Если ЗаписыватьОписание = Истина И Счетчик > 1 Тогда
ОписаниеМетода = ?(ЗначениеЗаполнено(ОписаниеМетода), ОписаниеМетода + " | ", ОписаниеМетода)
+ СтрокаКомментария;
+ СтрокаКомментария;
КонецЕсли;
Если СтрНайти(СтрокаКомментария, "Параметры:") > 0 Или СтрНайти(СтрокаКомментария, "Parameters:") > 0 Тогда
ЗаписыватьПараметры = Истина;
ЗаписыватьОписание = Ложь;
ИначеЕсли СтрНайти(СтрокаКомментария, "Возвращаемое значение:") > 0 Или СтрНайти(СтрокаКомментария, "Returns:") > 0 Тогда
Прервать;
ИначеЕсли ЗаписыватьПараметры = Истина
И ЗначениеЗаполнено(СокрЛП(СтрокаКомментария))
И Не СтрНачинаетсяС(СокрЛП(СтрокаКомментария), "*") = 0 Тогда
МассивПараметров.Добавить(СтрокаКомментария);
Иначе
Продолжить;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура СформироватьТаблицуОписанийПараметров(Знач МассивПараметров, Знач Метод, Знач Модуль = "")
Разделитель = "-";
Для Каждого ПараметрМетода Из МассивПараметров Цикл
МассивЭлементовПараметра = СтрРазделить(ПараметрМетода, Разделитель, Ложь);
КоличествоЭлементов = МассивЭлементовПараметра.Количество();
Для Н = 0 По МассивЭлементовПараметра.ВГраница() Цикл
МассивЭлементовПараметра[Н] = СокрЛП(МассивЭлементовПараметра[Н]);
КонецЦикла;
Если КоличествоЭлементов < 4 Тогда
Разделитель = "-";
Для Каждого ПараметрМетода Из МассивПараметров Цикл
МассивЭлементовПараметра = СтрРазделить(ПараметрМетода, Разделитель, Ложь);
КоличествоЭлементов = МассивЭлементовПараметра.Количество();
Для Н = 0 По МассивЭлементовПараметра.ВГраница() Цикл
МассивЭлементовПараметра[Н] = СокрЛП(МассивЭлементовПараметра[Н]);
КонецЦикла;
Если КоличествоЭлементов < 4 Тогда
Сообщить("Недостаточный набор данных в док. комментарии: " + Модуль.ИмяБезРасширения + " - " + Метод.Сигнатура.Имя);
Возврат;
КонецЕсли;
Возврат;
КонецЕсли;
Имя1С = МассивЭлементовПараметра[0];
Имя = "--" + МассивЭлементовПараметра[3];
Типы = МассивЭлементовПараметра[1];
Описание = ?(КоличествоЭлементов >= 5, МассивЭлементовПараметра[4], МассивЭлементовПараметра[2]);
Имя = "--" + МассивЭлементовПараметра[3];
Типы = МассивЭлементовПараметра[1];
Описание = ?(КоличествоЭлементов >= 5, МассивЭлементовПараметра[4], МассивЭлементовПараметра[2]);
Если КоличествоЭлементов > 5 Или СтрНайти(Имя, " ") > 0 Тогда
ВызватьИсключение("Некоррентный документирующий комментарий в методе: " + Модуль.ИмяБезРасширения + " - " + Метод.Сигнатура.Имя);
КонецЕсли;
НоваяСтрокаТаблицы = ТаблицаОписанийПараметров.Добавить();
НоваяСтрокаТаблицы.Имя = Имя;
НоваяСтрокаТаблицы.Типы = Типы;
НоваяСтрокаТаблицы.Описание = Описание;
КонецЕсли;
НоваяСтрокаТаблицы = ТаблицаОписанийПараметров.Добавить();
НоваяСтрокаТаблицы.Имя = Имя;
НоваяСтрокаТаблицы.Типы = Типы;
НоваяСтрокаТаблицы.Описание = Описание;
НоваяСтрокаТаблицы.ЗначениеПоУмолчанию = ПолучитьЗначениеПараметраПоУмолчанию(Имя1С, Метод);
КонецЦикла;
КонецПроцедуры
Функция ПолучитьЗначениеПараметраПоУмолчанию(Знач Имя, Знач Метод)
Значение = "";
Для Каждого ПараметрМетода Из Метод.Сигнатура.Параметры Цикл
Если ПараметрМетода.Имя = Имя Тогда
ЗначениеПараметра = ПараметрМетода.Значение;
Если ЗначениеЗаполнено(ЗначениеПараметра) Тогда
Попытка
@ -360,129 +360,129 @@
КонецПопытки;
Значение = ?(ЗначениеЗаполнено(Значение), Значение, "Пустое значение");
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Значение;
КонецФункции
Процедура ОпределитьДопОписание(ДопОписание, Модуль)
ЕстьМассив = Ложь;
ЕстьДата = Ложь;
ТекстДополнения = "";
ИмяМодуля = Модуль.ИмяБезРасширения;
ИмяМодуля = Модуль.ИмяБезРасширения;
ДЛя Каждого СтрокаПараметра Из ТаблицаОписанийПараметров Цикл
Типы = СтрокаПараметра["Типы"];
Имя = СтрокаПараметра["Имя"];
Типы = СтрокаПараметра["Типы"];
Имя = СтрокаПараметра["Имя"];
Если СтрНайти(Типы, "Массив") > 0 Тогда
ЕстьМассив = Истина;
КонецЕсли;
Если СтрНайти(Типы, "Дата") > 0 Тогда
ЕстьДата = Истина;
КонецЕсли;
ОпределитьДопОписаниеПоПараметру(ТекстДополнения, ИмяМодуля, Имя)
ОпределитьДопОписаниеПоПараметру(ТекстДополнения, ИмяМодуля, Имя)
КонецЦикла;
Если ЕстьМассив Тогда
ТекстДополнения =
"
|
| Пример указания параметра типа массив:
| --param ""['Val1','Val2','Val3']""
|" + ТекстДополнения;
"
|
| Пример указания параметра типа массив:
| --param ""['Val1','Val2','Val3']""
|" + ТекстДополнения;
КонецЕсли;
Если ЕстьДата Тогда
ТекстДополнения =
"
|
| Дата указывается в формате ISO 8601:
| ""2024-04-07""
| ""2024-04-07T13:34:42+00:00""
| ""2024-04-07T13:34:42Z""
|" + ТекстДополнения;
"
|
| Дата указывается в формате ISO 8601:
| ""2024-04-07""
| ""2024-04-07T13:34:42+00:00""
| ""2024-04-07T13:34:42Z""
|" + ТекстДополнения;
КонецЕсли;
ТекстДополнения = СтрЗаменить(ТекстДополнения, Символы.ПС, Символы.ПС + " |");
ДопОписание = ДопОписание + СтрЗаменить(ТекстДополнения, """", """""");
КонецПроцедуры
Процедура ОпределитьДопОписаниеПоПараметру(ТекстДополнения, ИмяМодуля, ИмяПараметра)
ИмяФайлаДополнения = КаталогДополненийОпций
+ СтрЗаменить(ИмяМодуля, "OPI_", "")
+ "/"
+ СтрЗаменить(ИмяПараметра, "--", "")
+ ".txt";
+ СтрЗаменить(ИмяМодуля, "OPI_", "")
+ "/"
+ СтрЗаменить(ИмяПараметра, "--", "")
+ ".txt";
ОбъектФайлаДополнения = Новый Файл(ИмяФайлаДополнения);
Если Не ОбъектФайлаДополнения.Существует() Тогда
Возврат;
КонецЕсли;
ТекстовыйДокумент = Новый ТекстовыйДокумент();
ТекстовыйДокумент.Прочитать(ИмяФайлаДополнения, "UTF-8");
ТекстДополненияФайла = СокрЛП(ТекстовыйДокумент.ПолучитьТекст());
Если Не ЗначениеЗаполнено(ТекстДополненияФайла) Тогда
Возврат;
КонецЕсли;
ЧислоСтрок = СтрЧислоСтрок(ТекстДополненияФайла);
ВставленоПримечание = Ложь;
ТекстДополнения = ТекстДополнения + Символы.ПС;
Для Н = 1 По ЧислоСтрок Цикл
ТекущаяСтрока = СтрПолучитьСтроку(ТекстДополненияФайла, Н);
Если СтрНачинаетсяС(СокрЛ(ТекущаяСтрока), "{")
И Не ВставленоПримечание Тогда
ВставленоПримечание = Истина;
ТекстДополнения = ТекстДополнения
+ " Структура заполнения опции "
+ ИмяПараметра
+ ":"
+ Символы.ПС;
КонецЕсли;
ТекстДополнения = ТекстДополнения
+ " "
+ ТекущаяСтрока
+ " Структура заполнения опции "
+ ИмяПараметра
+ ":"
+ Символы.ПС;
КонецЕсли;
ТекстДополнения = ТекстДополнения
+ " "
+ ТекущаяСтрока
+ Символы.ПС;
КонецЦикла;
КонецПроцедуры
Процедура ЗаписатьСозданиеПараметраСостава(СтрокаПараметра, ИмяМетода, Область, ОписаниеМетода = "")
Имя = СтрокаПараметра["Имя"];
Описание = СтрокаПараметра["Описание"];
Значение = СтрокаПараметра["ЗначениеПоУмолчанию"];
Имя = СтрокаПараметра["Имя"];
Описание = СтрокаПараметра["Описание"];
Значение = СтрокаПараметра["ЗначениеПоУмолчанию"];
Библиотека = СоответствиеМодулейКоманд.Получить(ТекущийМодуль);
Если ЗначениеЗаполнено(Значение) Тогда
Если ЗначениеЗаполнено(Значение) Тогда
Описание = Описание + " (необяз. по ум. - " + Значение + ")";
КонецЕсли;
КонецЕсли;
ТекущийФайлСостава.ДобавитьСтроку(Символы.ПС);
ТекущийФайлСостава.ДобавитьСтроку(" НоваяСтрока = ТаблицаСостава.Добавить();");
ТекущийФайлСостава.ДобавитьСтроку(" НоваяСтрока.Библиотека = """ + Библиотека + """;");
ТекущийФайлСостава.ДобавитьСтроку(" НоваяСтрока.Модуль = """ + ТекущийМодуль + """;");
@ -491,76 +491,76 @@
ТекущийФайлСостава.ДобавитьСтроку(" НоваяСтрока.Параметр = """ + Имя + """;");
ТекущийФайлСостава.ДобавитьСтроку(" НоваяСтрока.Описание = """ + Описание + """;");
ТекущийФайлСостава.ДобавитьСтроку(" НоваяСтрока.Область = """ + Область + """;");
Если ЗначениеЗаполнено(ОписаниеМетода) Тогда
ТекущийФайлСостава.ДобавитьСтроку(" НоваяСтрока.ОписаниеМетода = """ + ОписаниеМетода + """;");
КонецЕсли;
ТекущийФайлСостава.ДобавитьСтроку(Символы.ПС);
КонецПроцедуры
Процедура ОпределитьСоответствиеМодулейКоманд(ТекущийЯзык)
СоответствиеМодулейКоманд = Новый Соответствие();
ОбщийМассивМодулей = Новый Массив;
ФайлыМодулей = НайтиФайлы("./src/" + ТекущийЯзык + "/", "*.os", Истина);
Для Каждого Модуль Из ФайлыМодулей Цикл
КомандаCLI = ОпределитьКомандуCLI(Модуль.ПолноеИмя);
Если Не ЗначениеЗаполнено(КомандаCLI) Тогда
Продолжить;
КонецЕсли;
СоответствиеМодулейКоманд.Вставить(Модуль.ИмяБезРасширения, КомандаCLI);
ОбщийМассивМодулей.Добавить(Модуль);
КонецЦикла;
КонецПроцедуры
Функция ОпределитьКомандуCLI(Знач ПутьКМодулю)
КомандаCLI = "";
ДокументМодуля = Новый ТекстовыйДокумент();
Признак = "// CLI: ";
ДокументМодуля.Прочитать(ПутьКМодулю);
Для Н = 1 По ДокументМодуля.КоличествоСтрок() Цикл
ТекущаяСтрока = СокрЛП(ДокументМодуля.ПолучитьСтроку(Н));
Если Не ЗначениеЗаполнено(ТекущаяСтрока) Тогда
Прервать;
КонецЕсли;
Если СтрНачинаетсяС(ТекущаяСтрока, Признак) Тогда
КомандаCLI = СтрЗаменить(ТекущаяСтрока, Признак, "");
КомандаCLI = СокрЛП(КомандаCLI);
Прервать;
КонецЕсли;
ТекущаяСтрока = СокрЛП(ДокументМодуля.ПолучитьСтроку(Н));
Если Не ЗначениеЗаполнено(ТекущаяСтрока) Тогда
Прервать;
КонецЕсли;
Если СтрНачинаетсяС(ТекущаяСтрока, Признак) Тогда
КомандаCLI = СтрЗаменить(ТекущаяСтрока, Признак, "");
КомандаCLI = СокрЛП(КомандаCLI);
Прервать;
КонецЕсли;
КонецЦикла;
Возврат КомандаCLI;
КонецФункции
Функция ПолучитьВерсиюПакета()
Версия = "";
Packagedef = "./src/ru/OInt/packagedef";
Признак = ".Версия(""";
ТекстФайла = Новый ТекстовыйДокумент();
ТекстФайла.Прочитать(Packagedef);
Для Н = 1 По ТекстФайла.КоличествоСтрок() Цикл
ТекущаяСтрока = СокрЛП(ТекстФайла.ПолучитьСтроку(Н));
Если СтрНайти(ТекущаяСтрока, Признак) Тогда
Версия = СтрЗаменить(ТекущаяСтрока, Признак, "");
@ -568,9 +568,9 @@
Прервать;
КонецЕсли;
КонецЦикла;
Возврат Версия;
КонецФункции
Функция Синонимайзер(ИмяРеквизита)
@ -596,137 +596,137 @@
Синоним = Синоним + Символ;
Конецесли;
КонецЦикла;
Синоним = ВРег(Лев(Синоним,1)) + нРег(Сред(Синоним,2));
Синоним = ВРег(Лев(Синоним,1)) + нРег(Сред(Синоним,2));
Возврат Синоним;
КонецФункции
Процедура СкопироватьФайлы(Знач КаталогИсточник, Знач КаталогПриемник)
СоздатьКаталог(КаталогПриемник);
МассивФайлов = НайтиФайлы(КаталогИсточник, "*.*", Истина);
Для Каждого Файл Из МассивФайлов Цикл
ПолноеИмяИсточник = Файл.ПолноеИмя;
ПолноеИмяПриемник = КаталогПриемник + СтрЗаменить(Файл.ПолноеИмя, КаталогИсточник, "");
Если Файл.ЭтоКаталог() Тогда
СоздатьКаталог(ПолноеИмяПриемник);
Иначе
КопироватьФайл(ПолноеИмяИсточник, ПолноеИмяПриемник);
КонецЕсли;
КонецЦикла;
СоздатьКаталог(КаталогПриемник);
МассивФайлов = НайтиФайлы(КаталогИсточник, "*.*", Истина);
Для Каждого Файл Из МассивФайлов Цикл
ПолноеИмяИсточник = Файл.ПолноеИмя;
ПолноеИмяПриемник = КаталогПриемник + СтрЗаменить(Файл.ПолноеИмя, КаталогИсточник, "");
Если Файл.ЭтоКаталог() Тогда
СоздатьКаталог(ПолноеИмяПриемник);
Иначе
КопироватьФайл(ПолноеИмяИсточник, ПолноеИмяПриемник);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ВыолнитьДополнительныйПеревод(ТекущийЯзык)
ПутьСловаря = "./service/dictionaries/" + ТекущийЯзык + "_cli.json";
ФайлСловаря = Новый Файл(ПутьСловаря);
Если Не ФайлСловаря.Существует() Тогда
Возврат;
КонецЕсли;
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.ОткрытьФайл(ПутьСловаря);
ДанныеПревода = ПрочитатьJSON(ЧтениеJSON, Истина);
ЧтениеJSON.Закрыть();
ТЗСловаря = Новый ТаблицаЗначений();
ТЗСловаря.Колонки.Добавить("Ключ");
ТЗСловаря.Колонки.Добавить("Значение");
ТЗСловаря.Колонки.Добавить("Длина");
Для Каждого Элемент Из ДанныеПревода Цикл
НоваяСтрока = ТЗСловаря.Добавить();
НоваяСтрока.Ключ = Элемент.Ключ;
НоваяСтрока.Значение = Элемент.Значение;
НоваяСтрока.Длина = СтрДлина(Элемент.Ключ);
КонецЦикла;
ТЗСловаря.Сортировать("Длина УБЫВ");
МассивМодулейДляПеревода = Новый Массив;
МассивМодулейДляПеревода.Добавить("./src/" + ТекущийЯзык + "/cli/core/Classes/app.os");
МассивМодулейДляПеревода.Добавить("./src/" + ТекущийЯзык + "/cli/help/Modules/Справка.os");
Для Каждого ПереводимыйМодуль Из МассивМодулейДляПеревода Цикл
ФайлМодуля = Новый Файл(ПереводимыйМодуль);
Если Не ФайлМодуля.Существует() Тогда
Продолжить;
КонецЕсли;
ТекстовыйДокумент = Новый ТекстовыйДокумент();
ТекстовыйДокумент.Прочитать(ФайлМодуля.ПолноеИмя, "UTF-8");
ТекстМодуля = ТекстовыйДокумент.ПолучитьТекст();
Для Каждого Элемент Из ТЗСловаря Цикл
ТекстМодуля = СтрЗаменить(ТекстМодуля, Элемент.Ключ, Элемент.Значение);
КонецЦикла;
ТекстовыйДокумент.УстановитьТекст(ТекстМодуля);
ТекстовыйДокумент.Записать(ФайлМодуля.ПолноеИмя);
КонецЦикла;
ВыолнитьПереводОписаний(ТекущийЯзык);
КонецПроцедуры
Процедура ВыолнитьПереводОписаний(ТекущийЯзык)
ПутьСловаря = "./service/dictionaries/" + ТекущийЯзык + ".json";
ФайлСловаря = Новый Файл(ПутьСловаря);
Если Не ФайлСловаря.Существует() Тогда
Возврат;
КонецЕсли;
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.ОткрытьФайл(ПутьСловаря);
ДанныеПревода = ПрочитатьJSON(ЧтениеJSON, Истина);
ЧтениеJSON.Закрыть();
ТЗСловаря = Новый ТаблицаЗначений();
ТЗСловаря.Колонки.Добавить("Ключ");
ТЗСловаря.Колонки.Добавить("Значение");
ТЗСловаря.Колонки.Добавить("Длина");
Для Каждого Элемент Из ДанныеПревода Цикл
НоваяСтрока = ТЗСловаря.Добавить();
НоваяСтрока.Ключ = Элемент.Ключ;
НоваяСтрока.Значение = Элемент.Значение;
НоваяСтрока.Длина = СтрДлина(Элемент.Ключ);
КонецЦикла;
ТЗСловаря.Сортировать("Длина УБЫВ");
МассивМодулейДляПеревода = НайтиФайлы("./src/" + ТекущийЯзык + "/cli/data/Classes/internal", "*", Истина);
МассивМодулейДляПеревода.Добавить(Новый Файл("./src/" + ТекущийЯзык + "/cli/tools/Modules/Утилиты.os"));
Для Каждого ПереводимыйМодуль Из МассивМодулейДляПеревода Цикл
ФайлМодуля = Новый Файл(ПереводимыйМодуль.ПолноеИмя);
Если Не ФайлМодуля.Существует() Или ФайлМодуля.ЭтоКаталог() Тогда
Продолжить;
КонецЕсли;
ТекстовыйДокумент = Новый ТекстовыйДокумент();
ТекстовыйДокумент.Прочитать(ФайлМодуля.ПолноеИмя, "UTF-8");
ТекстМодуля = ТекстовыйДокумент.ПолучитьТекст();
Для Каждого Элемент Из ТЗСловаря Цикл
ТекстМодуля = СтрЗаменить(ТекстМодуля, Элемент.Ключ, Элемент.Значение);
КонецЦикла;
СоответствиеСлужебныхКлючей = Новый Структура();
СоответствиеСлужебныхКлючей.Вставить("MethodDescription" , "ОписаниеМетода");
СоответствиеСлужебныхКлючей.Вставить("SearchMethod" , "МетодПоиска");
@ -736,28 +736,38 @@
СоответствиеСлужебныхКлючей.Вставить("Region" , "Область");
СоответствиеСлужебныхКлючей.Вставить("Module" , "Модуль");
СоответствиеСлужебныхКлючей.Вставить("Method" , "Метод");
СоответствиеСлужебныхКлючей.Вставить("ConcatBinaryData" , "ConcatenateBinaryData");
СоответствиеСлужебныхКлючей.Вставить("GetTestList" , "ПолучитьСписокТестов");
СоответствиеСлужебныхКлючей.Вставить("Exists" , "Exist");
СоответствиеСлужебныхКлючей.Вставить("SetBodyFromBinaryData", "SetBodyFromBinary");
СоответствиеСлужебныхКлючей.Вставить("GetBodyAsBinaryData" , "ПолучитьТелоКакДвоичныеДанные");
СоответствиеСлужебныхКлючей.Вставить("FileCopy" , "CopyFile");
//СоответствиеОшибок.Вставить("ConcatBinaryData" , "ConcatenateBinaryData");
СоответствиеСлужебныхКлючей.Вставить("ConcatBinaryData" , "СоединитьДвоичныеДанные");
СоответствиеСлужебныхКлючей.Вставить("GetTestList" , "ПолучитьСписокТестов");
СоответствиеСлужебныхКлючей.Вставить("Exists" , "Exist");
СоответствиеСлужебныхКлючей.Вставить("SetBodyFromBinaryData" , "SetBodyFromBinary");
СоответствиеСлужебныхКлючей.Вставить("GetBodyAsBinaryData" , "ПолучитьТелоКакДвоичныеДанные");
СоответствиеСлужебныхКлючей.Вставить("FileCopy" , "CopyFile");
СоответствиеСлужебныхКлючей.Вставить("GetBinaryDataFromString" , "ПолучитьДвоичныеДанныеИзСтроки");
СоответствиеСлужебныхКлючей.Вставить("GetHexStringFromBinaryData" , "ПолучитьHexСтрокуИзДвоичныхДанных");
СоответствиеСлужебныхКлючей.Вставить("SplitBinaryData" , "РазделитьДвоичныеДанные");
СоответствиеСлужебныхКлючей.Вставить("GetStringFromBinaryData" , "ПолучитьСтрокуИзДвоичныхДанных");
СоответствиеСлужебныхКлючей.Вставить("GetBinaryDataBufferFromString" , "ПолучитьБуферДвоичныхДанныхИзСтроки");
СоответствиеСлужебныхКлючей.Вставить("GetBinaryDataFromHexString" , "ПолучитьДвоичныеДанныеИзHexСтроки");
СоответствиеСлужебныхКлючей.Вставить("GetBinaryDataBufferFromBinaryData", "ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных");
СоответствиеСлужебныхКлючей.Вставить("GetBinaryDataBufferFromHexString" , "ПолучитьБуферДвоичныхДанныхИзHexСтроки");
СоответствиеСлужебныхКлючей.Вставить("GetBinaryDataFromBinaryDataBuffer", "ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных");
Для Каждого СлужебныйКлюч Из СоответствиеСлужебныхКлючей Цикл
ТекстМодуля = СтрЗаменить(ТекстМодуля, "." + СлужебныйКлюч.Ключ, "." + СлужебныйКлюч.Значение);
ТекстМодуля = СтрЗаменить(ТекстМодуля, "(""" + СлужебныйКлюч.Ключ + """)", "(""" + СлужебныйКлюч.Значение + """)");
ТекстМодуля = СтрЗаменить(ТекстМодуля, СлужебныйКлюч.Ключ + "(", СлужебныйКлюч.Значение + "(");
КонецЦикла;
ТекстМодуля = СтрЗаменить(ТекстМодуля, "GetComposition", "ПолучитьСостав");
Пока СтрНайти(ТекстМодуля, " :") <> 0 Цикл
ТекстМодуля = СтрЗаменить(ТекстМодуля, " :", ":");
КонецЦикла;
ТекстМодуля = СтрЗаменить(ТекстМодуля, " :", ":");
КонецЦикла;
ТекстовыйДокумент.УстановитьТекст(ТекстМодуля);
ТекстовыйДокумент.Записать(ФайлМодуля.ПолноеИмя);
КонецЦикла;
КонецПроцедуры