Обычные формы 1С 8.2 в Расширенной редакции
В v2.11.0 MCP-сервер читает обычные формы legacy-конфигураций 1С (УПП 1.3, УТ 10.3, БП 2.0, ЗУП 2.5, Розница 1.0): реквизиты, элементы, обработчики и модуль.
Доработка типовых на 8.2 не закончилась с выходом 8.3. УПП 1.3, УТ 10.3, БП 2.0, ЗУП 2.5, Розница 1.0 и куча отраслевых решений до сих пор живут на обычных формах, и аналитики продолжают писать по ним правки. Управляемые формы 8.3 хранятся в дампе как Form.xml, обычные формы 8.2 как Form.bin: это закрытый бинарный контейнер, который раньше MCP-сервер просто не умел открыть. На запрос get_form_structure для модуля legacy-конфигурации AI-ассистент получал ошибку и дальше работал вслепую.
В Расширенной редакции v2.11.0 это починено. Инструмент get_form_structure сам определяет, какой формат лежит в дампе, и возвращает структуру формы независимо от поколения платформы.
Как это устроено
При вызове get_form_structure для объекта с формой инструмент ищет в дампе путь <plural>/<ObjectName>/Forms/<FormName>/Ext/Form.bin. Если файл есть, форма читается через декодер v8form82. Если файла нет, запрос уходит в community-обработчик Form.xml, как и раньше. Выбор делается по содержимому дампа, специальных флагов в запросе не нужно. В ответ всегда добавляется поле form_type: "ordinary" для обычных форм и "managed" для управляемых, чтобы AI понимал, с каким контекстом работает.
Внутри Form.bin лежит layout формы в brace-формате и текст модуля BSL (UTF-8 или UTF-16LE, кодировка определяется эвристикой). Декодер раскладывает контейнер на потоки: модуль, layout, реквизиты, обработчики. Каждый поток разбирается независимо, и сбой на одном из них не валит весь ответ: проблемный участок попадает в массив warnings, остальное возвращается как есть.
Что приходит в ответе
Для обычной формы AI-ассистент получает:
- имя и заголовок формы;
- список реквизитов с именем, типом и заголовком;
- элементы интерфейса: поля, кнопки, табличные части, группы, страницы, командные панели;
- текст модуля формы (BSL);
- обработчики событий с привязкой к процедурам:
ПриОткрытии,ПередЗакрытиеми так далее.
Структура ответа симметрична управляемой форме, поэтому промпты, написанные под 8.3, на legacy-конфигурации работают без изменений. Поле commands для обычных форм всегда пустое: в 8.2 команд формы как отдельной сущности нет, действия привязаны к кнопкам.
Неподдерживаемые подтипы
Layout обычной формы умеет хранить десятки подтипов элементов, часть из которых редко встречается даже в типовых. Если декодер не знает конкретный подтип, элемент возвращается с parsed: false, шестнадцатеричным кодом подтипа в type_hex и сырыми байтами в base64 (raw_b64). В warnings пишется строка вида unknown subtype 0xNN. Это не падение, остальная форма разбирается полностью, и AI продолжает работать.
Если такие предупреждения встречаются в реальной конфигурации, пришлите соответствующий Form.bin на support@feenlace.ru. По присланным фикстурам расширим набор поддерживаемых подтипов.
Где это полезно
- Аудит legacy-внедрений, которые ещё не переведены на 8.3.
- Параллельная работа над тиражным решением, где основной продукт уже на управляемых формах, а отраслевой контур остался на обычных.
- Миграция с 8.2 на 8.3: AI видит исходный модуль формы и помогает писать управляемый аналог.
- Чтение чужих доработок в УПП 1.3 и БП 2.0 без открытия Конфигуратора.
Фича входит в Расширенную редакцию и автоматически доступна в Профессиональной (которая включает всё из Расширенной). В Открытой редакции остаётся прежний обработчик управляемых форм.