Перейти к содержимому

Идёт открытая бета — все возможности бесплатныПодробнее

one-s-mcp

От фразы «сделай обработку» до готового файла

· Команда one-s-mcp · 5 мин чтения

От фразы «сделай обработку» до готового файла: описание формы, проверка до сборки, скелет модуля, сборка обработки Конфигуратором и расширение, которое правит формы типовой, не меняя её. Правила выведены из корпуса 27 811 форм типовых
Содержание

Нейросети неплохо пишут код на встроенном языке 1С. А потом упираются в одно место и рассыпаются — в разметку управляемой формы.

Причина не в «слабой модели». Форма в 1С хранится не как код, а как многослойное служебное описание: типы элементов, пути к данным, привязки команд к кнопкам, версия формата выгрузки, набор скрытых идентификаторов. Формат — это ещё и последовательность: узел не на своём месте даёт формально правильный файл, который платформа молча отказывается открывать. Модель здесь делает ровно то, что умеет лучше всего, — сочиняет правдоподобное. И получается форма, которая не открывается.

Что мы с этим сделали

Отдали эту часть механизму, а нейросети оставили то, в чём она сильна.

Ассистент описывает форму на понятном уровне: вот реквизиты, вот поля, вот таблица с колонками, вот команда и кнопка к ней. Механизм превращает описание в разметку, проставляя все обязательные служебные мелочи сам. Код модуля формы — что происходит по нажатию кнопки — по-прежнему пишет ассистент. Чёткое разделение: механизм отвечает за структуру, нейросеть — за логику.

27 811 форм типовых

Правила порядка узлов, допустимых свойств и сигнатур обработчиков не выдуманы — они замерены. Мы разобрали корпус из 27 811 форм типовых конфигураций: ERP, Бухгалтерии, Управления торговлей, Зарплаты. Из него выведено, в каком порядке идут узлы, какие бывают виды элементов, какие у них свойства и значения, какие события они объявляют и с какими параметрами приходят обработчики. Где корпус молчит — механизм честно отказывается угадывать.

Проверяем себя «круговым рейсом»: берём реальную форму типовой, разбираем её в описание и собираем обратно. Смысловых расхождений нет у 97,9% форм корпуса.

Про это число сразу оговорка, потому что без неё оно нечестное. «Смысловых» — значит без имён служебных элементов вроде подсказок и контекстных меню: их сборщик именует по своему правилу. По строгому счёту, до имени каждого служебного узла, совпадение — 75,8%. Для новой формы важнее первое число: имена всё равно придумывает сборщик. Для правки существующих форм важнее второе — и именно поэтому существующие формы мы правим точечно, а не пересобираем. И оба числа сняты по тому же корпусу, из которого выведены правила: это проверка внутри своей выборки, а не обещание такой же доли на незнакомой конфигурации.

Ошибка ловится до Конфигуратора

Перед сборкой описание проверяется: ссылается ли поле на существующий реквизит, привязана ли кнопка к объявленной команде, названы ли обработчики именами, которые примет встроенный язык, соответствует ли главный реквизит формы её владельцу. Отдельно сверяются имена объектов в ссылочных типах — с метаданными вашей конфигурации: выдуманный справочник в типе реквизита ловится здесь, а не в Конфигураторе.

При нестыковке возвращается не «упало», а причина, место и способ починки на понятном языке — по нему ассистент исправляется сам. Цикл «собрал — проверил — поправил» проходит без участия человека. А если сверку имён провести не удалось, механизм так и говорит, вместо того чтобы выдать непроверенное за «форма в порядке».

До файла, а не до текста

Дальше начинается то, ради чего всё и затевалось. Исходники раскладываются на диск в том виде, который ждёт Конфигуратор, и отдельной командой собираются в готовый файл обработки штатным пакетным Конфигуратором в вашей базе — поэтому ссылочные типы реквизитов разрешаются по метаданным именно этой базы. Успешная сборка означает, что разметку приняла сама платформа: битую она отвергла бы с ошибкой.

Существующая форма правится точечно, по адресу элемента: добавить до, после или внутрь названного, удалить, поменять свойства, добавить реквизит или команду. Механизм работает прямо по дереву файла и не тянет его содержимое в переписку с нейросетью — а это, между прочим, вопрос выживания разговора: медиана формы типовой почти 18 КБ, каждая десятая тяжелее 84 КБ. Неверная правка не пишется вовсе: файл либо меняется целиком корректно, либо остаётся прежним.

Типовую при этом не трогаем

Самое интересное — расширения. Ассистент собирает расширение конфигурации со своими общими формами и с правками форм самой типовой. Правка идёт заимствованием: форма берётся в расширение и правится там, а типовая не меняется ни на байт. Расширение собирается Конфигуратором в базе, и по явной команде его можно тут же применить к конфигурации базы — прежняя версия расширения уходит в резервную копию.

Типовая остаётся на поддержке, доработка живёт отдельно — ровно так, как требуют правила сопровождения.

И проверяем мы это не на слово: приёмка идёт живьём на настоящей конфигурации — собранная обработка открывается в 1С, и проверяется, что форма действительно открывается и работает, а не просто грузится без ошибки.

Честно об ограничениях

Умной генерации «по словам» пока нет. Готово другое: сборка разметки из структурного описания, проверки, скелет модуля, сборка файла обработки, точечная правка формы, сборка расширения. Построение формы по свободному описанию и библиотека шаблонов кода — это дорожная карта.

Нужны установленный Конфигуратор и подходящая база: форму без ссылок на объекты конфигурации соберёт и пустая файловая база, а ссылочный тип в ней Конфигуратор не разрешит. Применение расширения к базе — действие с последствиями: оно обновляет конфигурацию, и правку увидят пользователи; резервная копия сохраняется, но регламент обновления рабочей базы это не отменяет. Сборка идёт минутами и не отменяется по терпению клиента — если помощник перестал ждать, работа всё равно доработает.

Поддерживаются только управляемые формы. Многоязычный заголовок описание пока не выражает — заголовок берётся русской строкой, а в типовых больше одного языка несут 42% заголовков: это признанный долг.

Подробнее — на странице возможности «Формы, обработки и расширения».