2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
Процедура ИзвлечениеДанных()
|
|
|
|
|
|
|
|
ПутьКДокам = "./docs/ru/md";
|
|
|
|
ПутьКПримерам = "./docs/ru/examples/";
|
|
|
|
ПутьКРезультатам = "./docs/ru/results/";
|
|
|
|
ПутьКДанным = "./docs/ru/data/";
|
2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
КаталогиБиблиотек = НайтиФайлы(ПутьКДокам, "*", Ложь);
|
2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
Для Каждого Каталог Из КаталогиБиблиотек Цикл
|
2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
ФайлыДокументации = НайтиФайлы(Каталог.ПолноеИмя, "*.md", Истина);
|
|
|
|
ИмяБиблиотеки = Каталог.Имя;
|
2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
Для Каждого Документ Из ФайлыДокументации Цикл
|
2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
ТекущийДокумент = Новый ТекстовыйДокумент();
|
|
|
|
ТекущийДокумент.Прочитать(Документ.ПолноеИмя, "UTF-8");
|
2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
СоответствиеДанных = Новый Соответствие;
|
2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
ЗаписьПримера = Ложь;
|
|
|
|
ЗаписьРезультата = Ложь;
|
|
|
|
Пример = "";
|
|
|
|
Результат = "";
|
|
|
|
ИмяФункции = "";
|
|
|
|
Для Н = 1 По ТекущийДокумент.КоличествоСтрок() Цикл
|
2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
ТекущаяСтрока = СокрЛП(ТекущийДокумент.ПолучитьСтроку(Н));
|
2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
Если СтрНачинаетсяС(ТекущаяСтрока, "*Функция ")
|
|
|
|
Или СтрНачинаетсяС(ТекущаяСтрока, "Функция ") Тогда
|
|
|
|
|
|
|
|
ИмяФункции = СтрЗаменить(ТекущаяСтрока, "*Функция ", "");
|
|
|
|
ИмяФункции = СтрЗаменить(ИмяФункции, "Функция ", "");
|
|
|
|
ИмяФункции = Лев(ИмяФункции, СтрНайти(ИмяФункции, "(") - 1);
|
2024-06-04 16:23:37 +02:00
|
|
|
|
|
|
|
КонецЕсли;
|
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
Если СтрНачинаетсяС(ТекущаяСтрока, "```bsl") Тогда
|
|
|
|
ЗаписьПримера = Истина;
|
|
|
|
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "```json") Тогда
|
|
|
|
ЗаписьРезультата = Истина;
|
|
|
|
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "```") Тогда
|
|
|
|
ЗаписьРезультата = Ложь;
|
|
|
|
ЗаписьПримера = Ложь;
|
|
|
|
Иначе
|
|
|
|
|
|
|
|
Если ЗаписьПримера Тогда
|
|
|
|
Пример = Пример + " " + ТекущаяСтрока + Символы.ПС;
|
|
|
|
ОпределитьНаличиеДанных(СоответствиеДанных, ТекущаяСтрока);
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
Если ЗаписьРезультата Тогда
|
|
|
|
Результат = Результат + " " + ТекущаяСтрока + Символы.ПС;
|
|
|
|
КонецЕсли;
|
|
|
|
|
2024-06-04 16:23:37 +02:00
|
|
|
КонецЕсли;
|
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
КонецЦикла;
|
|
|
|
|
|
|
|
Если Не ЗначениеЗаполнено(ИмяФункции) Тогда
|
|
|
|
Сообщить("Документ без имени функции: " + Документ.ПолноеИмя);
|
|
|
|
Продолжить;
|
2024-06-04 16:23:37 +02:00
|
|
|
КонецЕсли;
|
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
Если ЗначениеЗаполнено(СокрЛП(Результат)) Тогда
|
2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
ПутьБиблиотеки = ПутьКРезультатам + СтрЗаменить(ИмяБиблиотеки, "_", "");
|
|
|
|
КаталогБиблиотеки = Новый Файл(ПутьБиблиотеки);
|
2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
Если Не КаталогБиблиотеки.Существует() Тогда
|
|
|
|
СоздатьКаталог(ПутьБиблиотеки);
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
ПутьРезультата = ПутьБиблиотеки + "/" + ИмяФункции + ".log";
|
|
|
|
ФайлРезультата = Новый Файл(ПутьРезультата);
|
2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
Если ФайлРезультата.Существует() Тогда
|
|
|
|
Сообщить("Файл результата существует: " + ПутьРезультата);
|
|
|
|
Иначе
|
|
|
|
ДокументРезультата = Новый ТекстовыйДокумент();
|
|
|
|
ДокументРезультата.УстановитьТекст(Результат);
|
|
|
|
ДокументРезультата.Записать(ПутьРезультата);
|
|
|
|
Сообщить("Файл результата записан: " + ПутьРезультата);
|
|
|
|
КонецЕсли;
|
2024-06-04 16:23:37 +02:00
|
|
|
|
|
|
|
КонецЕсли;
|
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
Если ЗначениеЗаполнено(СокрЛП(Пример)) Тогда
|
2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
ПутьБиблиотеки = ПутьКПримерам + СтрЗаменить(ИмяБиблиотеки, "_", "");
|
|
|
|
КаталогБиблиотеки = Новый Файл(ПутьБиблиотеки);
|
2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
Если Не КаталогБиблиотеки.Существует() Тогда
|
|
|
|
СоздатьКаталог(ПутьБиблиотеки);
|
|
|
|
КонецЕсли;
|
2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
ПутьПримера = ПутьБиблиотеки + "/" + ИмяФункции + ".txt";
|
|
|
|
ФайлПримера = Новый Файл(ПутьПримера);
|
2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
Если ФайлПримера.Существует() Тогда
|
|
|
|
Сообщить("Файл примера существует: " + ПутьПримера);
|
|
|
|
Иначе
|
|
|
|
ДокументПримера = Новый ТекстовыйДокумент();
|
|
|
|
ДокументПримера.УстановитьТекст(Пример);
|
|
|
|
ДокументПримера.Записать(ПутьПримера);
|
|
|
|
Сообщить("Файл примера записан: " + ПутьПримера);
|
|
|
|
КонецЕсли;
|
2024-06-04 16:23:37 +02:00
|
|
|
|
|
|
|
КонецЕсли;
|
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
Если ЗначениеЗаполнено(СоответствиеДанных) Тогда
|
|
|
|
|
|
|
|
ПутьБиблиотеки = ПутьКДанным + СтрЗаменить(ИмяБиблиотеки, "_", "");
|
|
|
|
КаталогБиблиотеки = Новый Файл(ПутьБиблиотеки);
|
|
|
|
|
|
|
|
Если Не КаталогБиблиотеки.Существует() Тогда
|
|
|
|
СоздатьКаталог(ПутьБиблиотеки);
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
ПутьДанных = ПутьБиблиотеки + "/" + ИмяФункции + ".json";
|
|
|
|
ФайлДанных = Новый Файл(ПутьДанных);
|
|
|
|
|
|
|
|
Если ФайлДанных.Существует() Тогда
|
|
|
|
Сообщить("Файл данных существует: " + ПутьДанных);
|
|
|
|
Иначе
|
|
|
|
ЗаписьJSON = Новый ЗаписьJSON();
|
|
|
|
ЗаписьJSON.ОткрытьФайл(ПутьДанных);
|
|
|
|
ЗаписатьJSON(ЗаписьJSON, СоответствиеДанных);
|
|
|
|
ЗаписьJSON.Закрыть();
|
|
|
|
Сообщить("Файл данных записан: " + ПутьДанных);
|
|
|
|
КонецЕсли;
|
2024-06-04 16:23:37 +02:00
|
|
|
|
|
|
|
КонецЕсли;
|
2024-06-04 20:55:01 +02:00
|
|
|
|
2024-06-04 16:23:37 +02:00
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
КонецЦикла;
|
2024-06-04 16:23:37 +02:00
|
|
|
|
|
|
|
КонецЦикла;
|
|
|
|
|
2024-06-04 20:55:01 +02:00
|
|
|
КонецПроцедуры
|
|
|
|
|
|
|
|
Процедура ОпределитьНаличиеДанных(СоответствиеДанных, Знач ТекущаяСтрока)
|
|
|
|
|
|
|
|
ОбрабатываемаяСтрока = СокрЛП(ТекущаяСтрока);
|
|
|
|
|
|
|
|
Если СтрНайти(ТекущаяСтрока, "=") = 0 Тогда
|
|
|
|
Возврат;
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
ЕстьДанные = СтрНайти(ТекущаяСтрока, "Новый") = 0
|
|
|
|
И СтрНайти(ТекущаяСтрока, "OPI") = 0
|
|
|
|
И СтрНайти(ТекущаяСтрока, "Запрос.") = 0;
|
|
|
|
|
|
|
|
Если ЕстьДанные Тогда
|
|
|
|
|
|
|
|
ОбрабатываемаяСтрока = СтрЗаменить(ОбрабатываемаяСтрока, """", "");
|
|
|
|
ОбрабатываемаяСтрока = СтрЗаменить(ОбрабатываемаяСтрока, ";", "");
|
|
|
|
МассивДанных = СтрРазделить(ОбрабатываемаяСтрока, "=", Ложь);
|
|
|
|
|
|
|
|
Если МассивДанных.Количество() = 2 Тогда
|
|
|
|
СоответствиеДанных.Вставить(СокрЛП(МассивДанных[0]), СокрЛП(МассивДанных[1]));
|
|
|
|
КонецЕсли;
|
|
|
|
КонецЕсли;
|
|
|
|
КонецПроцедуры
|
|
|
|
|
|
|
|
ИзвлечениеДанных();
|