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