Обычные формы 1С 8.2 в Расширенной редакции

обычные-формыформырасширеннаяlegacy

В 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 без открытия Конфигуратора.

Фича входит в Расширенную редакцию и автоматически доступна в Профессиональной (которая включает всё из Расширенной). В Открытой редакции остаётся прежний обработчик управляемых форм.