diff --git a/ci/os/internal/Modules/МетодыCLI.os b/ci/os/internal/Modules/МетодыCLI.os index e5349eeeea..e63abc7966 100644 --- a/ci/os/internal/Modules/МетодыCLI.os +++ b/ci/os/internal/Modules/МетодыCLI.os @@ -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 Цикл - ТекстМодуля = СтрЗаменить(ТекстМодуля, " :", ":"); - КонецЦикла; - + ТекстМодуля = СтрЗаменить(ТекстМодуля, " :", ":"); + КонецЦикла; + ТекстовыйДокумент.УстановитьТекст(ТекстМодуля); ТекстовыйДокумент.Записать(ФайлМодуля.ПолноеИмя); - + КонецЦикла; - + КонецПроцедуры