От фразы «сделай обработку» до готового файла
· Команда one-s-mcp · 5 мин чтения
Содержание
Нейросети неплохо пишут код на встроенном языке 1С. А потом упираются в одно место и рассыпаются — в разметку управляемой формы.
Причина не в «слабой модели». Форма в 1С хранится не как код, а как многослойное служебное описание: типы элементов, пути к данным, привязки команд к кнопкам, версия формата выгрузки, набор скрытых идентификаторов. Формат — это ещё и последовательность: узел не на своём месте даёт формально правильный файл, который платформа молча отказывается открывать. Модель здесь делает ровно то, что умеет лучше всего, — сочиняет правдоподобное. И получается форма, которая не открывается.
Что мы с этим сделали
Отдали эту часть механизму, а нейросети оставили то, в чём она сильна.
Ассистент описывает форму на понятном уровне: вот реквизиты, вот поля, вот таблица с колонками, вот команда и кнопка к ней. Механизм превращает описание в разметку, проставляя все обязательные служебные мелочи сам. Код модуля формы — что происходит по нажатию кнопки — по-прежнему пишет ассистент. Чёткое разделение: механизм отвечает за структуру, нейросеть — за логику.
27 811 форм типовых
Правила порядка узлов, допустимых свойств и сигнатур обработчиков не выдуманы — они замерены. Мы разобрали корпус из 27 811 форм типовых конфигураций: ERP, Бухгалтерии, Управления торговлей, Зарплаты. Из него выведено, в каком порядке идут узлы, какие бывают виды элементов, какие у них свойства и значения, какие события они объявляют и с какими параметрами приходят обработчики. Где корпус молчит — механизм честно отказывается угадывать.
Проверяем себя «круговым рейсом»: берём реальную форму типовой, разбираем её в описание и собираем обратно. Смысловых расхождений нет у 97,9% форм корпуса.
Про это число сразу оговорка, потому что без неё оно нечестное. «Смысловых» — значит без имён служебных элементов вроде подсказок и контекстных меню: их сборщик именует по своему правилу. По строгому счёту, до имени каждого служебного узла, совпадение — 75,8%. Для новой формы важнее первое число: имена всё равно придумывает сборщик. Для правки существующих форм важнее второе — и именно поэтому существующие формы мы правим точечно, а не пересобираем. И оба числа сняты по тому же корпусу, из которого выведены правила: это проверка внутри своей выборки, а не обещание такой же доли на незнакомой конфигурации.
Ошибка ловится до Конфигуратора
Перед сборкой описание проверяется: ссылается ли поле на существующий реквизит, привязана ли кнопка к объявленной команде, названы ли обработчики именами, которые примет встроенный язык, соответствует ли главный реквизит формы её владельцу. Отдельно сверяются имена объектов в ссылочных типах — с метаданными вашей конфигурации: выдуманный справочник в типе реквизита ловится здесь, а не в Конфигураторе.
При нестыковке возвращается не «упало», а причина, место и способ починки на понятном языке — по нему ассистент исправляется сам. Цикл «собрал — проверил — поправил» проходит без участия человека. А если сверку имён провести не удалось, механизм так и говорит, вместо того чтобы выдать непроверенное за «форма в порядке».
До файла, а не до текста
Дальше начинается то, ради чего всё и затевалось. Исходники раскладываются на диск в том виде, который ждёт Конфигуратор, и отдельной командой собираются в готовый файл обработки штатным пакетным Конфигуратором в вашей базе — поэтому ссылочные типы реквизитов разрешаются по метаданным именно этой базы. Успешная сборка означает, что разметку приняла сама платформа: битую она отвергла бы с ошибкой.
Существующая форма правится точечно, по адресу элемента: добавить до, после или внутрь названного, удалить, поменять свойства, добавить реквизит или команду. Механизм работает прямо по дереву файла и не тянет его содержимое в переписку с нейросетью — а это, между прочим, вопрос выживания разговора: медиана формы типовой почти 18 КБ, каждая десятая тяжелее 84 КБ. Неверная правка не пишется вовсе: файл либо меняется целиком корректно, либо остаётся прежним.
Типовую при этом не трогаем
Самое интересное — расширения. Ассистент собирает расширение конфигурации со своими общими формами и с правками форм самой типовой. Правка идёт заимствованием: форма берётся в расширение и правится там, а типовая не меняется ни на байт. Расширение собирается Конфигуратором в базе, и по явной команде его можно тут же применить к конфигурации базы — прежняя версия расширения уходит в резервную копию.
Типовая остаётся на поддержке, доработка живёт отдельно — ровно так, как требуют правила сопровождения.
И проверяем мы это не на слово: приёмка идёт живьём на настоящей конфигурации — собранная обработка открывается в 1С, и проверяется, что форма действительно открывается и работает, а не просто грузится без ошибки.
Честно об ограничениях
Умной генерации «по словам» пока нет. Готово другое: сборка разметки из структурного описания, проверки, скелет модуля, сборка файла обработки, точечная правка формы, сборка расширения. Построение формы по свободному описанию и библиотека шаблонов кода — это дорожная карта.
Нужны установленный Конфигуратор и подходящая база: форму без ссылок на объекты конфигурации соберёт и пустая файловая база, а ссылочный тип в ней Конфигуратор не разрешит. Применение расширения к базе — действие с последствиями: оно обновляет конфигурацию, и правку увидят пользователи; резервная копия сохраняется, но регламент обновления рабочей базы это не отменяет. Сборка идёт минутами и не отменяется по терпению клиента — если помощник перестал ждать, работа всё равно доработает.
Поддерживаются только управляемые формы. Многоязычный заголовок описание пока не выражает — заголовок берётся русской строкой, а в типовых больше одного языка несут 42% заголовков: это признанный долг.
Подробнее — на странице возможности «Формы, обработки и расширения».