Пример: Автодокументирование справочника "Страницы базы знаний"
Код формы элемента
#Область Обработчики_событий_формы
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ТекущийОбъект.Содержимое = ТекстРедактора;
ТекущийОбъект.ТекстВебСтраницы = ТекстHTML;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ТекстРедактора = Объект.Содержимое;
ТекстHTML = Объект.ТекстВебСтраницы;
ДокументHTML = MarkdownСервер.ПодготовитьПолеПромежуточногоHTML();
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ТекстHTML = MarkdownКлиент.СформироватьHTML(ЭтаФорма, Объект.Наименование, ТекстРедактора);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("ЗаписанаСтраницаБазыЗнаний");
КонецПроцедуры
#КонецОбласти
#Область Обработчики_событий_элементов_формы
&НаКлиенте
Асинх Процедура ВыгрузитьHTML(Команда)
Если Модифицированность Тогда
Записать();
КонецЕсли;
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Фильтр = "Веб-страница (*.html)|*.html";
Диалог.Заголовок = "Выгрузка html-представления страницы базы знаний";
Диалог.ПолноеИмяФайла = Объект.Наименование + ".html";
ВыбранныеФайлы = Ждать Диалог.ВыбратьАсинх();
Если ВыбранныеФайлы = Неопределено Тогда
Возврат;
КонецЕсли;
ПутьКФайлу = ВыбранныеФайлы[0];
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.УстановитьТекст(ТекстHTML);
ТекстовыйДокумент.ЗаписатьАсинх(ПутьКФайлу);
КонецПроцедуры
&НаКлиенте
Процедура ПросмотрСтраницыПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка)
СтандартнаяОбработка = Не ПросмотрСтраницыБазыЗнаний.ПерейтиПоСсылке(ДанныеСобытия.href);
КонецПроцедуры
&НаКлиенте
Асинх Процедура ВыгрузитьPDFБезКартинок(Команда)
Если Модифицированность Тогда
Записать();
КонецЕсли;
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Фильтр = "PDF-документ (*.pdf)|*.pdf";
Диалог.Заголовок = "Выгрузка pdf-представления страницы базы знаний";
Диалог.ПолноеИмяФайла = Объект.Наименование + ".pdf";
ВыбранныеФайлы = Ждать Диалог.ВыбратьАсинх();
Если ВыбранныеФайлы = Неопределено Тогда
Возврат;
КонецЕсли;
ПутьКФайлу = ВыбранныеФайлы[0];
СохранитьPDF(ПутьКФайлу);
КонецПроцедуры
#КонецОбласти
#Область Служебные_операции
&НаКлиенте
Процедура СохранитьPDF(ПутьКФайлу)
Текст = ТекстРедактора;
Текст = СтрЗаменить(ТекстРедактора, Символы.ПС, "<br>");
ТекстHTMLВыгрузки = MarkdownКлиент.СформироватьHTML(ЭтаФорма, Объект.Наименование, ТекстРедактора, Истина);
ФорматированныйДокумент = Новый ФорматированныйДокумент;
ФорматированныйДокумент.УстановитьHTML(ТекстHTMLВыгрузки, Новый Структура);
ФорматированныйДокумент.ЗаписатьАсинх(ПутьКФайлу, ТипФайлаФорматированногоДокумента.PDF);
КонецПроцедуры
#КонецОбласти
Промпт
Опиши ключевые функциональные возможности кода одноуровневым маркированным списком с заголовком "Функциональные возможности" (заголовок 2).
Далее расскажи про реализацию каждой функциональной возможности в коде (заголовок 2).
Далее отрази функциональные возможности на диаграмме прецедентов PlantUML. Добавь прецедент использования "Создать / изменить страницу". Диаграмму не оборачивай в марки кода markdown (```), но оберни в блок @startuml / @enduml. Назови раздел "Прецеденты использования" (заголовок 2).
Далее отрази также перечисленные процедуры и функции, а также реквизиты формы и реквизиты справочника "Страницы" на диаграмме классов в PlantUML. Назови классы "ФормаЭлемента" и "Справочник Страницы". Диаграмму не оборачивай в марки кода markdown (```), но оберни в блок @startuml / @enduml. После диаграммы перечисли процедуры и функции кода и их алгоритмы в виде таблицы с колонками: имя обработчика, реализуемые функциональные возможности, алгоритм. Назови раздел "Программный интерфейс (API) и метаданные" (заголовок 2).
Далее отрази последовательность вызова кода при работе с markdown, сформировав диаграмму последовательности PlantUML. Диаграмму, не оборачивай в марки кода markdown (```). Назови раздел "Последовательность вызова кода при работе с markdown". Отрази классы: "Пользователь", "ФормаЭлемента", "MarkdownКлиент" (заголовок 2).
Результат
Функциональные возможности
- Создание и изменение страниц базы знаний.
- Преобразование Markdown-разметки в HTML.
- Сохранение страницы в файл формата HTML.
- Экспорт содержимого страницы в формат PDF.
- Навигация по ссылкам внутри HTML-представления.
- Оповещение системы об изменении данных страницы.
Реализация функциональных возможностей
- Создание и изменение страниц: Реализовано в процедуре `ПриСозданииНаСервере` (загрузка данных в поля формы) и `ПередЗаписьюНаСервере` (сохранение текстов из реквизитов формы в объект справочника).
- Преобразование Markdown в HTML: Выполняется на клиенте через `MarkdownКлиент.СформироватьHTML`, вызываемый в обработчике `ПередЗаписью`.
- Сохранение в HTML: Реализовано в процедуре `ВыгрузитьHTML`, которая использует `ДиалогВыбораФайла` и объект `ТекстовыйДокумент` для записи данных на диск.
- Экспорт в PDF: Реализовано в процедуре `ВыгрузитьPDFБезКартинок` и служебной `СохранитьPDF`, где используется `ФорматированныйДокумент` для интерпретации HTML и записи файла.
- Навигация по ссылкам: Реализована через `ПросмотрСтраницыПриНажатии`, где стандартная обработка подавляется, а переход осуществляется через `ПросмотрСтраницыБазыЗнаний.ПерейтиПоСсылке`.
- Оповещение системы: Используется процедура `ПослеЗаписи`, вызывающая `Оповестить("ЗаписанаСтраницаБазыЗнаний")` для обновления связанных данных в интерфейсе.
Прецеденты использования

Программный интерфейс (API) и метаданные

| Имя обработчика | Реализуемые возможности | Алгоритм |
| ПередЗаписьюНаСервере | Сохранение данных | Перенос текста из полей формы в атрибуты объекта. |
| ПриСозданииНаСервере | Инициализация формы | Заполнение полей формы из объекта, подготовка HTML-поля. |
| ПередЗаписью | Генерация HTML | Вызов Markdown-конвертера для обновления `ТекстHTML`. |
| ПослеЗаписи | Оповещение | Вызов `Оповестить` для системы. |
| ВыгрузитьHTML | Сохранение файла | Открытие диалога, запись `ТекстHTML` в файл. |
| ПросмотрСтраницыПриНажатии | Навигация | Отмена стандартной обработки, вызов `ПерейтиПоСсылке`. |
| ВыгрузитьPDFБезКартинок | Экспорт в PDF | Открытие диалога, вызов `СохранитьPDF`. |
| СохранитьPDF | Формирование PDF | Генерация HTML, загрузка в `ФорматированныйДокумент`, запись файла. |
Последовательность вызова кода при работе с markdown

Используемая модель нейросети и цена вопроса
В качестве модели нейросети я использую "gemini-3.1-flash-lite-preview". Она недорогая (генерация по промпту выше обошлась всего в 35 копеек). Но качественно понимает промпты, создавая ожидаемые результаты, и в особенности PlantUML диаграммы. Начинал я с GigaChat от Сбер, но он выводит галиматью в качестве UML диаграмм и не так хорошо предоставляет ожидаемый результат по промптам. Потом попробовал "claude-opus-4.7", но в нём цена за промпт составила космические 37 рублей. Меньше стоила "gemini-3.1-pro-preview" (10 рублей за промпт), но всё равно это дорого. Ведь при работе с нейросетью проходит несколько итераций до формирования финального промпта. А в таких условиях даже 10 рублей очень даже кусаются.
В итоге остановился на "gemini-3.1-flash-lite-preview", полностью покрывающую мои потребности.
В качестве посредника при обращении к нейросети я использую портал aitunnel.ru. Ведь нейросети от Google (gemini), как и многие другие, официально не предоставляются в России. Обратиться к ним можно только через посредников-агрегаторов нейросетей.
Из преимуществ работы aitunnel.ru хочу отметить его бюджетность (я стартовал работу, пополнив баланс всего лишь на 500 рублей, из которых у меня ещё остались 330 руб.), предоставление REST API для программной работы с нейросетями и удобство использования. Переключение между различными моделями нейросетей осуществляется можно сказать "на лету", всего лишь изменением имени нейросети в REST API запросе.
Инструментарий автоматизации
Для работы с нейросетью я пользуюсь инструментом "Чеширский кот: База знаний из Зазеркалья".
- Он хранит страницы знаний в формате markdown с поддержкой вставки картинок и PlantUML диаграмм
- Результат отображается в виде html
- Поддерживает работу с нейросетью по каждой отдельной странице знаний. Страница знаний представляется контекстом, передаваемым нейросети в виде pdf-файла. Работа же с нейросетью заключается в последовательном задании ей вопросов.

- Обращение к нейросети и генерация ответа происходит автоматически при записи вопроса. Ответ нейросети заносится в связанную с вопросом страницу базы знаний

- В файлах данной публикации я приложил актуальную версию "Чеширского кота".
Вступайте в нашу телеграмм-группу Инфостарт