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

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

one-s-mcp

Формы, обработки и расширения

Содержание

Нейросети неплохо пишут код на встроенном языке 1С, но регулярно спотыкаются на одном — на разметке управляемых форм. Форма в 1С хранится не как код, а как многослойное служебное описание: типы элементов, пути к данным, привязки команд к кнопкам, версия формата выгрузки, набор скрытых идентификаторов. Одна мелкая ошибка — и форма просто не открывается. Для ассистента это самое скользкое место: он уверенно сочиняет разметку, которая выглядит правдоподобно, но не загружается.

Модуль построения форм закрывает ровно эту дыру. Ассистент описывает форму на понятном уровне — «вот реквизиты, вот поля, вот таблица с колонками, вот команда и кнопка к ней», — а модуль превращает описание в гарантированно корректную разметку. Перед сборкой он проверяет описание на внутреннюю логику и на соответствие вашей конфигурации; если что-то не сходится, возвращает понятное объяснение, по которому ассистент исправляется сам.

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

Какую боль решает

Как это работает

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

Имена в описании формы совпадают с именами в реальном файле формы, поэтому ассистенту не нужно держать в голове второй словарь. Все обязательные служебные мелочи — идентификаторы, дочерние элементы, версию формата — сборщик проставляет сам. По умолчанию собирается формат для платформы 8.3, по запросу — 8.5, где доступны свойства, которых в старом формате нет вовсе; что какая платформа принимает, проверено сборкой, а не документацией.

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

Вместе с разметкой ассистент получает скелет модуля формы — заголовки всех процедур-обработчиков, которые эта форма объявила, с правильной директивой компиляции и точным списком параметров. Их нельзя выдумать, и модуль не выдумывает: сигнатуры замерены по формам типовых. Тела процедур модуль намеренно не пишет — их наполняет ассистент, опираясь на индекс конфигурации, граф связей и локальную проверку кода.

Дальше три вещи, которые превращают правильный файл в готовый результат.

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

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

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

Проверка не останавливается на «Конфигуратор принял файл». Приёмка идёт на настоящей конфигурации: собранная обработка открывается в 1С, и проверяется, что форма действительно открывается и работает.

Что это даёт

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

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

Нужны установленный Конфигуратор и подходящая база. Форма без ссылок на объекты конфигурации соберётся и в пустой файловой базе, а ссылочный тип — например, ссылку на справочник — Конфигуратор в пустой базе не разрешит. Для сборки расширения и тем более для его применения к базе нужна рабочая база.

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

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

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

Что дальше

Хотите, чтобы «сделай обработку» доходило до готового файла, — скачайте one-s-mcp и подключите к своему ассистенту. Про остальные модули — на странице всех возможностей; про то, как ассистент понимает типовую вместе с расширениями, — на странице про расширения.