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