You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-11-29 22:27:42 +02:00
Тесты для Jenkin
This commit is contained in:
751
ci/os/docs_main.os
Normal file
751
ci/os/docs_main.os
Normal file
@@ -0,0 +1,751 @@
|
||||
#Использовать osparser
|
||||
#Использовать cmdline
|
||||
|
||||
Перем ТекущийМодуль;
|
||||
Перем Парсер;
|
||||
Перем Расположение;
|
||||
Перем СПодкаталогами;
|
||||
Перем КаталогДокументации;
|
||||
Перем КаталогЛокализации;
|
||||
Перем КаталогЛогов;
|
||||
Перем КаталогПримеров;
|
||||
Перем КаталогЗначений;
|
||||
Перем КаталогCLI;
|
||||
Перем СписокОбластей;
|
||||
Перем ТекущаяОбласть;
|
||||
Перем СчетчикОбласти;
|
||||
Перем Словарь;
|
||||
Перем Транслитация;
|
||||
Перем СчетчикБиблиотеки;
|
||||
Перем СоответствиеЗаголовков;
|
||||
Перем СоответствиеТестов;
|
||||
Перем ТекущийЯзык;
|
||||
Перем ТекущаяБиблиотека;
|
||||
Перем КаталогИнструкцийОригинал;
|
||||
Перем КаталогИнструкцийЛокализация;
|
||||
|
||||
Процедура ПриСозданииОбъекта()
|
||||
|
||||
Языки = Новый Массив();
|
||||
Языки.Добавить("ru");
|
||||
Языки.Добавить("en");
|
||||
|
||||
ЧтениеJSON = Новый ЧтениеJSON();
|
||||
ЧтениеJSON.ОткрытьФайл("./service/dictionaries/en.json");
|
||||
Словарь = ПрочитатьJSON(ЧтениеJSON, Истина);
|
||||
ЧтениеJSON.Закрыть();
|
||||
|
||||
КаталогИнструкцийОригинал = "./docs/ru/md/Instructions";
|
||||
|
||||
Для Каждого Язык Из Языки Цикл
|
||||
|
||||
ТекущийЯзык = Язык;
|
||||
Расположение = "./src/" + Язык + "/OInt";
|
||||
СПодкаталогами = Истина;
|
||||
КаталогДокументации = "./docs/" + Язык + "/md";
|
||||
//КаталогЛокализации = "./docs/en/md";
|
||||
КаталогЛогов = "./docs/" + Язык + "/results/";
|
||||
КаталогПримеров = "./docs/" + Язык + "/examples/";
|
||||
КаталогЗначений = "./docs/" + Язык + "/data/";
|
||||
КаталогCLI = "./docs/" + Язык + "/cli/";
|
||||
СписокОбластей = Новый СписокЗначений();
|
||||
ТекущаяОбласть = "";
|
||||
СчетчикОбласти = 0;
|
||||
|
||||
КаталогИнструкцийЛокализация = "./docs/" + Язык + "/md/Instructions";
|
||||
|
||||
СоответствиеЗаголовков = Новый Соответствие();
|
||||
ОчиститьКаталогиДокументов();
|
||||
|
||||
|
||||
ПолучитьТаблицуТранслитации();
|
||||
ПроверитьСоздатьКаталог(КаталогДокументации);
|
||||
СоздатьФайлыДокументации();
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#Область ФормированиеДокументации
|
||||
|
||||
Процедура СоздатьФайлыДокументации()
|
||||
|
||||
ОбщийМассивМодулей = Новый Массив;
|
||||
ФайлыМодулей = НайтиФайлы(Расположение, "*.os", СПодкаталогами);
|
||||
|
||||
Для Каждого Модуль Из ФайлыМодулей Цикл
|
||||
|
||||
Если Модуль.ИмяБезРасширения = "OPI_YandexID"
|
||||
Или Модуль.ИмяБезРасширения = "OPI_GoogleWorkspace" Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ОбщийМассивМодулей.Добавить(Модуль);
|
||||
КонецЦикла;
|
||||
|
||||
Для Каждого Модуль Из ОбщийМассивМодулей Цикл
|
||||
|
||||
ТекущийМодуль = Новый ТекстовыйДокумент();
|
||||
ТекущийМодуль.Прочитать(Модуль.ПолноеИмя);
|
||||
РазобратьМодуль(ТекущийМодуль, Модуль.ИмяБезРасширения);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура СоздатьСтраницуДокументации(СтруктураМетода, Счетчик = 1)
|
||||
|
||||
Раздел = СтрЗаменить(СтруктураМетода["Каталог"], "_", "");
|
||||
Результат = ПолучитьРезультатМетода(Раздел, СтруктураМетода["ИмяМетода"]);
|
||||
Область = СтруктураМетода["Область"];
|
||||
|
||||
Если ТекущаяОбласть <> Область Тогда
|
||||
ТекущаяОбласть = Область;
|
||||
СчетчикОбласти = 1;
|
||||
СчетчикБиблиотеки = СчетчикБиблиотеки + 1;
|
||||
КонецЕсли;
|
||||
|
||||
ТранслитированноеИмя = ПеревестиИмя(СтруктураМетода["ИмяМетода"]);
|
||||
ТранслитированнаяОбласть = ПеревестиИмя(Область);
|
||||
|
||||
ТранслитированноеИмя = СтрЗаменить(Синонимайзер(ТранслитированноеИмя), " ", "-");
|
||||
ТранслитированнаяОбласть = СтрЗаменить(Синонимайзер(ТранслитированнаяОбласть), " ", "-");
|
||||
|
||||
СинонимОбласти = СтрЗаменить(ТранслитированнаяОбласть, "-", " ");
|
||||
ЗаголовокОбласти = Синонимайзер(Область);
|
||||
|
||||
СоответствиеЗаголовков.Вставить(ЗаголовокОбласти, СинонимОбласти);
|
||||
|
||||
ИмяМодуляБезПрефикса = СтрЗаменить(СтруктураМетода["ИмяМодуля"], "OPI_", "");
|
||||
|
||||
КаталогБиблиотеки = КаталогДокументации + "/" + СтруктураМетода["Каталог"];
|
||||
КаталогОбласти = КаталогБиблиотеки + "/" + ТранслитированнаяОбласть;
|
||||
КаталогКартинок = КаталогОбласти + "/" + "img";
|
||||
ПутьДанных = КаталогЗначений + ИмяМодуляБезПрефикса + "/" + СтруктураМетода["ИмяМетода"] + ".json";
|
||||
ФайлДанных = Новый Файл(ПутьДанных);
|
||||
|
||||
Если ФайлДанных.Существует() Тогда
|
||||
ЧтениеJSON = Новый ЧтениеJSON();
|
||||
ЧтениеJSON.ОткрытьФайл(ПутьДанных);
|
||||
СтруктураЗначений = ПрочитатьJSON(ЧтениеJSON, Истина);
|
||||
ЧтениеJSON.Закрыть();
|
||||
Иначе
|
||||
СтруктураЗначений = Новый Соответствие();
|
||||
КонецЕсли;
|
||||
|
||||
ПроверитьСоздатьКаталог(КаталогБиблиотеки);
|
||||
ПроверитьСоздатьКаталог(КаталогОбласти);
|
||||
ПроверитьСоздатьКаталог(КаталогКартинок);
|
||||
|
||||
СтруктураКатегории = Новый Структура("label,position", ЗаголовокОбласти, Строка(СчетчикБиблиотеки));
|
||||
ФайлКатегории = КаталогОбласти + "/_category_.json";
|
||||
|
||||
Запись = Новый ЗаписьJSON;
|
||||
ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто);
|
||||
Запись.ОткрытьФайл(ФайлКатегории, , , ПараметрыЗаписиJSON);
|
||||
ЗаписатьJSON(Запись, СтруктураКатегории);
|
||||
Запись.Закрыть();
|
||||
|
||||
Макет = Новый ТекстовыйДокумент();
|
||||
Макет.Прочитать("./service/templates/doc_" + ТекущийЯзык + ".md", "UTF-8");
|
||||
|
||||
Макет = Макет.ПолучитьТекст();
|
||||
|
||||
Макет = СтрЗаменить(Макет, "@Счетчик" , Строка(СчетчикОбласти));
|
||||
Макет = СтрЗаменить(Макет, "@Заголовок" , СтруктураМетода["Заголовок"]);
|
||||
Макет = СтрЗаменить(Макет, "@Описание" , СтруктураМетода["Описание"]);
|
||||
Макет = СтрЗаменить(Макет, "@Объявление" , СтруктураМетода["Объявление"]);
|
||||
Макет = СтрЗаменить(Макет, "@ВозвращаемоеЗначение", СтруктураМетода["ВозвращаемоеЗначение"]);
|
||||
Макет = СтрЗаменить(Макет, "@Результат" , Результат);
|
||||
Макет = СтрЗаменить(Макет, "@Примечание" , СтруктураМетода["Примечание"]);
|
||||
|
||||
ТаблицаПараметров = "";
|
||||
Вызов1С = ПолучитьВызов1С(СтруктураМетода["ИмяМодуля"], СтруктураМетода["ИмяМетода"]);
|
||||
|
||||
ПутьCLI = КаталогCLI + ИмяМодуляБезПрефикса + "/" + СтруктураМетода["ИмяМетода"] + ".txt";
|
||||
ФайлCLI = Новый Файл(ПутьCLI);
|
||||
ВызовCLI = "";
|
||||
|
||||
Если Не ФайлCLI.Существует() Тогда
|
||||
|
||||
КаталогТекущиегоCLI = КаталогCLI + ИмяМодуляБезПрефикса;
|
||||
ФайлКаталога = Новый Файл(КаталогТекущиегоCLI);
|
||||
|
||||
Если Не ФайлКаталога.Существует() Тогда
|
||||
СоздатьКаталог(КаталогТекущиегоCLI);
|
||||
КонецЕсли;
|
||||
|
||||
ВызовCLI = "oint " + СтруктураМетода["Команда"] + " " + СтруктураМетода["ИмяМетода"];
|
||||
|
||||
Для каждого ПараметрМетода Из СтруктураМетода["Параметры"] Цикл
|
||||
|
||||
Если Не ЗначениеЗаполнено(ПараметрМетода.Опция) Или Не СтруктураМетода["ЕстьCLI"] Тогда
|
||||
Сообщить("Метод не имеет опции: " + СтруктураМетода["Заголовок"]);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ТаблицаПараметров = ТаблицаПараметров + " | "
|
||||
+ ПараметрМетода.Имя + " | "
|
||||
+ ПараметрМетода.Опция + " | "
|
||||
+ ПараметрМетода.Типы + " | "
|
||||
+ ПараметрМетода.Описание + " |"
|
||||
+ Символы.ПС;
|
||||
|
||||
ВызовCLI = ВызовCLI + " " + ПараметрМетода.Опция + " ";
|
||||
ВызовCLI = ВызовCLI + ОпределитьЗначениеОпции(ПараметрМетода.Опция, СтруктураЗначений[ПараметрМетода.Имя]);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ВызовCLI = СокрЛП(ВызовCLI);
|
||||
ТекстCLI = Новый ТекстовыйДокумент();
|
||||
ТекстCLI.УстановитьТекст(ВызовCLI);
|
||||
ТекстCLI.Записать(ПутьCLI);
|
||||
|
||||
Иначе
|
||||
|
||||
Для каждого ПараметрМетода Из СтруктураМетода["Параметры"] Цикл
|
||||
|
||||
Если Не ЗначениеЗаполнено(ПараметрМетода.Опция) Или Не СтруктураМетода["ЕстьCLI"] Тогда
|
||||
Сообщить("Метод не имеет опции: " + СтруктураМетода["Заголовок"]);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ТаблицаПараметров = ТаблицаПараметров + " | "
|
||||
+ ПараметрМетода.Имя + " | "
|
||||
+ ПараметрМетода.Опция + " | "
|
||||
+ ПараметрМетода.Типы + " | "
|
||||
+ ПараметрМетода.Описание + " |"
|
||||
+ Символы.ПС;
|
||||
КонецЦикла;
|
||||
|
||||
ТекстCLI = Новый ТекстовыйДокумент();
|
||||
ТекстCLI.Прочитать(ПутьCLI);
|
||||
|
||||
Для Н = 1 По ТекстCLI.КоличествоСтрок() Цикл
|
||||
ТекущаяСтрока = СокрЛП(ТекстCLI.ПолучитьСтроку(Н));
|
||||
Если ЗначениеЗаполнено(ТекущаяСтрока) Тогда
|
||||
ВызовCLI = ВызовCLI + " " + ТекущаяСтрока + Символы.ПС;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если ЗначениеЗаполнено(ВызовCLI) Тогда
|
||||
ВызовCLI = Лев(ВызовCLI, СтрДлина(ВызовCLI) - 1);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Макет = СтрЗаменить(Макет, "@Вызов1С" , Вызов1С);
|
||||
Макет = СтрЗаменить(Макет, "@ВызовCLI" , ВызовCLI);
|
||||
Макет = СтрЗаменить(Макет, "@ТаблицаПараметров", ТаблицаПараметров);
|
||||
|
||||
НовыйДокумент = Новый ТекстовыйДокумент();
|
||||
НовыйДокумент.УстановитьТекст(Макет);
|
||||
НовыйДокумент.Записать(КаталогОбласти + "/" + ТранслитированноеИмя + ".md");
|
||||
|
||||
СчетчикОбласти = СчетчикОбласти + 1;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РазборМодуля
|
||||
|
||||
Процедура РазобратьМодуль(ТекущийМодуль, ИмяМодуля)
|
||||
|
||||
СчетчикБиблиотеки = 1;
|
||||
ТекстМодуля = ТекущийМодуль.ПолучитьТекст();
|
||||
СтруктураОбщихДанных = Новый Структура();
|
||||
СтруктураОбщихДанных.Вставить("ИмяМодуля", ИмяМодуля);
|
||||
|
||||
ПолучитьДанныеМодуля(СтруктураОбщихДанных, ТекущийМодуль);
|
||||
|
||||
Если Не ЗначениеЗаполнено(СтруктураОбщихДанных["Библиотека"]) Тогда
|
||||
Возврат;
|
||||
КонеЦесли;
|
||||
|
||||
ТекущаяБиблиотека = СтруктураОбщихДанных["Библиотека"];
|
||||
|
||||
Парсер = Новый ПарсерВстроенногоЯзыка;
|
||||
СтруктураМодуля = Парсер.Разобрать(ТекстМодуля);
|
||||
|
||||
Для Каждого Метод Из СтруктураМодуля.Объявления Цикл
|
||||
|
||||
Если Метод.Тип = "ОбъявлениеМетода" И Метод.Сигнатура.Экспорт = Истина Тогда
|
||||
РазобратьМетод(ТекущийМодуль, Метод, СтруктураОбщихДанных);
|
||||
КонецЕсли;
|
||||
|
||||
Если Метод.Тип = "ИнструкцияПрепроцессораОбласть" Тогда
|
||||
СписокОбластей.Добавить(Метод.Начало.НомерСтроки, Метод.Имя);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
СписокОбластей.СортироватьПоЗначению();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПолучитьДанныеМодуля(СтруктураОбщихДанных, ТекущийМодуль)
|
||||
|
||||
Имя = ТекущийМодуль.ПолучитьСтроку(2);
|
||||
CLI = ТекущийМодуль.ПолучитьСтроку(3);
|
||||
|
||||
Если СтрНайти(Имя, "Lib") = 0 Тогда
|
||||
Имя = "";
|
||||
Иначе
|
||||
Имя = СтрЗаменить(Имя, "// Lib:", "");
|
||||
Имя = СокрЛП(Имя);
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрНайти(CLI, "CLI") = 0 Тогда
|
||||
CLI = "none";
|
||||
Иначе
|
||||
CLI = СтрЗаменить(CLI, "// CLI:", "");
|
||||
CLI = СокрЛП(CLI);
|
||||
КонецЕсли;
|
||||
|
||||
Каталог = СтрЗаменить(Имя, " ", "_");
|
||||
|
||||
СтруктураОбщихДанных.Вставить("Библиотека", Имя);
|
||||
СтруктураОбщихДанных.Вставить("Команда" , CLI);
|
||||
СтруктураОбщихДанных.Вставить("Каталог" , Каталог);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РазборМетода
|
||||
|
||||
Процедура РазобратьМетод(ТекстовыйДокумент, Метод, СтруктураДанных)
|
||||
|
||||
НомерСтроки = Метод.Начало.НомерСтроки;
|
||||
ИмяМетода = Метод.Сигнатура.Имя;
|
||||
Объявление = "";
|
||||
|
||||
Для Н = НомерСтроки По Метод.Конец.НомерСтроки Цикл
|
||||
|
||||
Часть = СокрЛП(ТекстовыйДокумент.ПолучитьСтроку(Н));
|
||||
Объявление = Объявление + Часть;
|
||||
|
||||
Если Не ЗначениеЗаполнено(Часть) Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Для Каждого Область Из СписокОбластей Цикл
|
||||
Если НомерСтроки > Область.Значение Тогда
|
||||
СтруктураДанных.Вставить("Область", Область.Представление);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
МассивКомментария = ПарсингКомментария(ТекстовыйДокумент, НомерСтроки, СтруктураДанных);
|
||||
МассивПараметров = Новый Массив;
|
||||
МассивОписанийПараметров = Новый Массив;
|
||||
|
||||
Если МассивКомментария.Количество() = 0 Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
СформироватьСтруктуруМетода(МассивКомментария, МассивПараметров, СтруктураДанных);
|
||||
СформироватьМассивОписанийПараметров(МассивПараметров, Метод, МассивОписанийПараметров);
|
||||
|
||||
СтруктураДанных.Вставить("ИмяМетода" , ИмяМетода);
|
||||
СтруктураДанных.Вставить("Объявление", Объявление);
|
||||
СтруктураДанных.Вставить("Параметры" , МассивОписанийПараметров);
|
||||
|
||||
СоздатьСтраницуДокументации(СтруктураДанных);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПарсингКомментария(Знач ТекстовыйДокумент, Знач НомерСтроки, СтруктураДанных)
|
||||
|
||||
ТекущаяСтрока = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки - 1);
|
||||
ТекстКомментария = ТекущаяСтрока;
|
||||
|
||||
Счетчик = 1;
|
||||
Пока СтрНайти(ТекущаяСтрока, "//") > 0 Цикл
|
||||
|
||||
Счетчик = Счетчик + 1;
|
||||
|
||||
ТекущаяСтрока = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки - Счетчик);
|
||||
ТекстКомментария = ТекущаяСтрока + Символы.ПС + ТекстКомментария;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если СтрНайти(ТекстКомментария, "!NOCLI") > 0 Тогда
|
||||
СтруктураДанных.Вставить("ЕстьCLI", Ложь);
|
||||
Иначе
|
||||
СтруктураДанных.Вставить("ЕстьCLI", Истина);
|
||||
КонецЕсли;
|
||||
|
||||
ТекстКомментария = СтрЗаменить(ТекстКомментария, "//", "$");
|
||||
МассивКомментария = СтрРазделить(ТекстКомментария, "$", Ложь);
|
||||
|
||||
Если МассивКомментария.Количество() = 0 Тогда
|
||||
Возврат Новый Массив;
|
||||
Иначе
|
||||
МассивКомментария.Удалить(0);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат МассивКомментария;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура СформироватьСтруктуруМетода(Знач МассивКомментария, МассивПараметров, СтруктураДанных)
|
||||
|
||||
ОписаниеМетода = "";
|
||||
ЗаписыватьПараметры = Ложь;
|
||||
ЗаписыватьПримечание = Ложь;
|
||||
ЗаписыватьОписание = Истина;
|
||||
|
||||
ТекстПримечания = "";
|
||||
|
||||
Счетчик = 0;
|
||||
Для Каждого СтрокаКомментария Из МассивКомментария Цикл
|
||||
|
||||
Счетчик = Счетчик + 1;
|
||||
|
||||
Если Не ЗначениеЗаполнено(СокрЛП(СтрокаКомментария)) Тогда
|
||||
ЗаписыватьОписание = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗаписыватьОписание = Истина И Счетчик > 1 Тогда
|
||||
ОписаниеМетода = СокрЛП(ОписаниеМетода) + " " + СокрЛП(СтрокаКомментария);
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрНайти(СтрокаКомментария, "Параметры:") > 0
|
||||
Или СтрНайти(СтрокаКомментария, "Parameters:") > 0 Тогда
|
||||
ЗаписыватьПараметры = Истина;
|
||||
ЗаписыватьОписание = Ложь;
|
||||
ЗаписыватьПримечание = Ложь;
|
||||
|
||||
ИначеЕсли СтрНайти(СтрокаКомментария, "Примечание:") > 0
|
||||
Или СтрНайти(СтрокаКомментария, "Note") > 0 Тогда
|
||||
ЗаписыватьПараметры = Ложь;
|
||||
ЗаписыватьОписание = Ложь;
|
||||
ЗаписыватьПримечание = Истина;
|
||||
|
||||
ИначеЕсли СтрНайти(СтрокаКомментария, "Возвращаемое значение:") > 0
|
||||
Или СтрНайти(СтрокаКомментария, "Returns:") > 0 Тогда
|
||||
СтруктураДанных.Вставить("ВозвращаемоеЗначение", МассивКомментария[Счетчик]);
|
||||
Прервать;
|
||||
|
||||
ИначеЕсли ЗаписыватьПараметры = Истина
|
||||
И ЗначениеЗаполнено(СокрЛП(СтрокаКомментария))
|
||||
И Не СтрНачинаетсяС(СокрЛП(СтрокаКомментария), "*") = 0 Тогда
|
||||
|
||||
МассивПараметров.Добавить(СтрокаКомментария);
|
||||
|
||||
ИначеЕсли ЗаписыватьПримечание = Истина Тогда
|
||||
|
||||
ТекстПримечания = ТекстПримечания + СтрокаКомментария + Символы.ПС;
|
||||
|
||||
Иначе
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ТекстПримечания = СокрЛП(ТекстПримечания);
|
||||
|
||||
Если ЗначениеЗаполнено(ТекстПримечания) Тогда
|
||||
|
||||
ТекстПримечания = СтрЗаменить(ТекстПримечания, "(@", "(https://");
|
||||
|
||||
ТекстПримечания = ":::tip"
|
||||
+ Символы.ПС
|
||||
+ ТекстПримечания
|
||||
+ Символы.ПС
|
||||
+ ":::"
|
||||
+ Символы.ПС
|
||||
+ "<br/>";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
СтруктураДанных.Вставить("Описание" , ОписаниеМетода);
|
||||
СтруктураДанных.Вставить("Заголовок" , СтрЗаменить(СокрЛП(МассивКомментария[0]), "!NOCLI", ""));
|
||||
СтруктураДанных.Вставить("Примечание", ТекстПримечания);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура СформироватьМассивОписанийПараметров(Знач МассивПараметров, Знач Метод, МассивОписанийПараметров)
|
||||
|
||||
Разделитель = "-";
|
||||
|
||||
Для Каждого ПараметрМетода Из МассивПараметров Цикл
|
||||
|
||||
МассивЭлементовПараметра = СтрРазделить(ПараметрМетода, Разделитель, Ложь);
|
||||
КоличествоЭлементов = МассивЭлементовПараметра.Количество();
|
||||
|
||||
Для Н = 0 По МассивЭлементовПараметра.ВГраница() Цикл
|
||||
МассивЭлементовПараметра[Н] = СокрЛП(МассивЭлементовПараметра[Н]);
|
||||
КонецЦикла;
|
||||
|
||||
Имя1С = МассивЭлементовПараметра[0];
|
||||
|
||||
Если КоличествоЭлементов >= 4 Тогда
|
||||
Имя = "--" + МассивЭлементовПараметра[3];
|
||||
Иначе
|
||||
Имя = "";
|
||||
Конецесли;
|
||||
Типы = МассивЭлементовПараметра[1];
|
||||
|
||||
Описание = ?(КоличествоЭлементов >= 5, МассивЭлементовПараметра[4], МассивЭлементовПараметра[2]);
|
||||
|
||||
СтруктураПараметра = Новый Структура;
|
||||
СтруктураПараметра.Вставить("Имя" , Имя1С);
|
||||
СтруктураПараметра.Вставить("Опция" , Имя);
|
||||
СтруктураПараметра.Вставить("Типы" , Типы);
|
||||
СтруктураПараметра.Вставить("Описание" , Описание);
|
||||
СтруктураПараметра.Вставить("ЗначениеПоУмолчанию", ПолучитьЗначениеПараметраПоУмолчанию(Имя1С, Метод));
|
||||
|
||||
МассивОписанийПараметров.Добавить(СтруктураПараметра);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Инструменты
|
||||
|
||||
Процедура ОчиститьКаталогиДокументов()
|
||||
|
||||
МассивКорней = Новый Массив;
|
||||
МассивКорней.Добавить(КаталогДокументации);
|
||||
МассивКорней.Добавить(КаталогЛокализации);
|
||||
|
||||
Постоянные = Новый СписокЗначений();
|
||||
Постоянные.Добавить("Instructions");
|
||||
Постоянные.Добавить("Start");
|
||||
|
||||
Для Каждого Корень Из МассивКорней Цикл
|
||||
|
||||
Каталоги = НайтиФайлы(Корень, "*");
|
||||
|
||||
Для Каждого Каталог Из Каталоги Цикл
|
||||
|
||||
Если Постоянные.НайтиПоЗначению(Каталог.Имя) <> Неопределено
|
||||
Или Не Каталог.ЭтоКаталог() Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
УдалитьФайлы(Каталог.ПолноеИмя);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьВызов1С(Модуль, Метод)
|
||||
|
||||
Результат = "";
|
||||
|
||||
ИмяКаталога = СтрЗаменить(Модуль, "OPI_", "");
|
||||
ИмяФайла = Метод + ".txt";
|
||||
|
||||
ПутьПримера = КаталогПримеров + ИмяКаталога + "/" + ИмяФайла;
|
||||
ФайлПримера = Новый Файл(ПутьПримера);
|
||||
|
||||
Если ФайлПримера.Существует() Тогда
|
||||
ТекстПримера = Новый ТекстовыйДокумент();
|
||||
ТекстПримера.Прочитать(ПутьПримера);
|
||||
|
||||
Результат = ТекстПримера.ПолучитьТекст();
|
||||
|
||||
Если ЗначениеЗаполнено(Результат) Тогда
|
||||
Результат = Лев(Результат, СтрДлина(Результат) - 1);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Результат = СокрП(Результат);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОпределитьЗначениеОпции(Опция, Значение = "")
|
||||
|
||||
Если ЗначениеЗаполнено(Значение) Тогда
|
||||
Опция = """" + Строка(Значение) + """";
|
||||
Иначе
|
||||
Опция = "%" + СтрЗаменить(Опция, "-", "") + "%";
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Опция;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПроверитьСоздатьКаталог(Путь)
|
||||
|
||||
Каталог = Новый Файл(Путь);
|
||||
|
||||
Если Не Каталог.Существует() Тогда
|
||||
СоздатьКаталог(Путь);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьЗначениеПараметраПоУмолчанию(Знач Имя, Знач Метод)
|
||||
|
||||
Значение = "";
|
||||
|
||||
Для Каждого ПараметрМетода Из Метод.Сигнатура.Параметры Цикл
|
||||
|
||||
Если ПараметрМетода.Имя = Имя Тогда
|
||||
|
||||
ЗначениеПараметра = ПараметрМетода.Значение;
|
||||
Если ЗначениеЗаполнено(ЗначениеПараметра) Тогда
|
||||
Попытка
|
||||
Значение = ЗначениеПараметра["Элементы"][0]["Значение"];
|
||||
Исключение
|
||||
Значение = ЗначениеПараметра.Значение;
|
||||
КонецПопытки;
|
||||
Значение = ?(ЗначениеЗаполнено(Значение), Значение, "Пустое значение");
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Значение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТранслитироватьСтроку(Знач Значение)
|
||||
|
||||
Значение = нРег(Значение);
|
||||
|
||||
Для Каждого ЗаменяемыйСимвол Из Транслитация Цикл
|
||||
Значение = СтрЗаменить(Значение, ЗаменяемыйСимвол.Ключ, ЗаменяемыйСимвол.Значение);
|
||||
КонецЦикла;
|
||||
|
||||
Значение = ВРег(Лев(Значение,1)) + Сред(Значение,2);
|
||||
Возврат Значение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПеревестиИмя(Значение)
|
||||
|
||||
ПереведенноеИмя = Словарь[Значение];
|
||||
|
||||
Если Не ЗначениеЗаполнено(ПереведенноеИмя) Тогда
|
||||
Если ТекущийЯзык = "ru" Тогда
|
||||
ПереведенноеИмя = ТранслитироватьСтроку(Значение);
|
||||
Иначе
|
||||
ПереведенноеИмя = Значение;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
ПереведенноеИмя = СтрЗаменить(ПереведенноеИмя, "(", "");
|
||||
ПереведенноеИмя = СтрЗаменить(ПереведенноеИмя, ")", "");
|
||||
ПереведенноеИмя = СтрЗаменить(ПереведенноеИмя, "-", " ");
|
||||
|
||||
Возврат ПереведенноеИмя;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Синонимайзер(ИмяРеквизита)
|
||||
|
||||
Перем Синоним, ъ, Символ, ПредСимвол, СледСимвол, Прописная, ПредПрописная, СледПрописная, ДлинаСтроки;
|
||||
|
||||
Синоним = ВРег(Сред(ИмяРеквизита, 1, 1));
|
||||
ДлинаСтроки = СтрДлина(ИмяРеквизита);
|
||||
Для ъ=2 По ДлинаСтроки Цикл
|
||||
Символ = Сред(ИмяРеквизита, ъ, 1);
|
||||
ПредСимвол = Сред(ИмяРеквизита, ъ-1, 1);
|
||||
СледСимвол = Сред(ИмяРеквизита, ъ+1, 1);
|
||||
Прописная = Символ = ВРег(Символ);
|
||||
ПредПрописная = ПредСимвол = ВРег(ПредСимвол);
|
||||
СледПрописная = СледСимвол = ВРег(СледСимвол);
|
||||
|
||||
// Варианты:
|
||||
Если НЕ ПредПрописная И Прописная Тогда
|
||||
Синоним = Синоним + " " + Символ;
|
||||
ИначеЕсли Прописная И НЕ СледПрописная Тогда
|
||||
Синоним = Синоним + " " + Символ;
|
||||
Иначе
|
||||
Синоним = Синоним + Символ;
|
||||
Конецесли;
|
||||
КонецЦикла;
|
||||
|
||||
Синоним = ВРег(Лев(Синоним,1)) + нРег(Сред(Синоним,2));
|
||||
|
||||
Возврат Синоним;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьРезультатМетода(Знач Раздел, Знач Метод)
|
||||
|
||||
Результат = "";
|
||||
ПутьКаталогаРаздела = КаталогЛогов + Раздел;
|
||||
КаталогРаздела = Новый Файл(ПутьКаталогаРаздела);
|
||||
|
||||
Если Не КаталогРаздела.Существует() Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
ПутьЛога = ПутьКаталогаРаздела + "/" + Метод + ".log";
|
||||
ФайлЛога = Новый Файл(ПутьЛога);
|
||||
|
||||
Если Не ФайлЛога.Существует() Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
ДокументЛога = Новый ТекстовыйДокумент();
|
||||
ДокументЛога.Прочитать(ПутьЛога);
|
||||
|
||||
Результат = ДокументЛога.ПолучитьТекст();
|
||||
Результат = СокрЛП(Результат);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПолучитьТаблицуТранслитации()
|
||||
|
||||
Транслитация = Новый Соответствие();
|
||||
|
||||
Транслитация.Вставить("а", "a");
|
||||
Транслитация.Вставить("б", "b");
|
||||
Транслитация.Вставить("в", "v");
|
||||
Транслитация.Вставить("г", "g");
|
||||
Транслитация.Вставить("д", "d");
|
||||
Транслитация.Вставить("е", "e");
|
||||
Транслитация.Вставить("ё", "e");
|
||||
Транслитация.Вставить("ж", "zh");
|
||||
Транслитация.Вставить("з", "z");
|
||||
Транслитация.Вставить("и", "i");
|
||||
Транслитация.Вставить("й", "y");
|
||||
Транслитация.Вставить("к", "k");
|
||||
Транслитация.Вставить("л", "l");
|
||||
Транслитация.Вставить("м", "m");
|
||||
Транслитация.Вставить("н", "n");
|
||||
Транслитация.Вставить("о", "o");
|
||||
Транслитация.Вставить("п", "p");
|
||||
Транслитация.Вставить("р", "r");
|
||||
Транслитация.Вставить("с", "s");
|
||||
Транслитация.Вставить("т", "t");
|
||||
Транслитация.Вставить("у", "u");
|
||||
Транслитация.Вставить("ф", "f");
|
||||
Транслитация.Вставить("х", "h");
|
||||
Транслитация.Вставить("ц", "ts");
|
||||
Транслитация.Вставить("ч", "ch");
|
||||
Транслитация.Вставить("ш", "sh");
|
||||
Транслитация.Вставить("щ", "sch");
|
||||
Транслитация.Вставить("ъ", "");
|
||||
Транслитация.Вставить("ы", "y");
|
||||
Транслитация.Вставить("ь", "");
|
||||
Транслитация.Вставить("э", "e");
|
||||
Транслитация.Вставить("ю", "u");
|
||||
Транслитация.Вставить("я", "ya");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
Reference in New Issue
Block a user