Как дорабатывать форму через нейросеть без ошибок: чего модель не узнает из Form.xml

03.11.26

Интеграция - Нейросети

Дорабатываете форму через нейросеть и даёте ей Form.xml? Проверьте у себя: на форме номенклатуры УТ для Казахстана 127 элементов, видимых в XML, в работе скрыты. Разобрали, что ещё дать модели и как сверить её перехват в расширении.

Мы получили в клиенте две типовые формы УТ для Казахстана 3.4.4.87 и сверили их с Form.xml из выгрузки той же версии. Форма элемента номенклатуры: все 856 элементов из XML в открытой форме нашлись, ни один не потерялся. Но 127 из них, видимые по XML, у пользователя скрыты, и среди них поле Артикул. Модель, которой дали только Form.xml, об этом не узнает: в файле поле видимое.

XML при этом остаётся лучшим, что можно дать модели, имена в нём полные. Только одних имён мало. В перехвате формы, который мы разберём ниже, четыре ошибки: две закрывает Form.xml, третью видно только в модуле формы, а четвёртую только в открытой форме. Отсюда и метод: модели на вход три источника, на выходе сверка с выгрузкой и базой.

 

Что модель получает из Form.xml

Form.xml лежит в выгрузке конфигурации в файлы (Конфигуратор, "Конфигурация - Выгрузить конфигурацию в файлы", или проект EDT). Для формы номенклатуры это Catalogs\Номенклатура\Forms\ФормаЭлемента\Ext\Form.xml, а модуль формы рядом, в Ext\Form\Module.bsl. Сверка с открытой формой дала такой расклад:

Форма Элементов в XML Нашлись в открытой форме Добавились при открытии Видимы в XML, скрыты в работе
Номенклатура, форма элемента 856 856 82 127
Контрагенты, форма списка 102 102 126 2

Добавленное при открытии оказалось служебным: кнопки командной панели и контекстных меню, подменю, расширенные подсказки к ним. Часть рисует платформа, часть кодом добавляют подключаемые команды БСП (подменю печати, отчётов, "Создать на основании"). У формы списка добавленного даже больше, чем было в XML, и всё оно тоже служебное.Полей ввода среди 82 и 126 добавленных нет ни одного. Значит, по именам полей, групп и страниц XML полный, пока в базе не заведены дополнительные реквизиты: на полигоне таких полей не появилось. Где они есть, БСП добавляет поля в ПриСозданииНаСервере через УправлениеСвойствами, и в XML их не будет.

Опираться надо именно на имена из файла, угадывать их по шаблону нельзя. На форме номенклатуры 102 обработчика событий элементов, и 39 из них названы не по схеме "ИмяЭлементаСобытие". На 29 событиях висит одна процедура СвернутьРазвернутьГруппу, это нажатия на декорации "открыть" и "закрыть". Остальные 10 названы каждый по-своему, как у переключателя шаблона ценника:

<RadioButtonField name="ИспользоватьОбщийШаблонЦенника" id="1438">
	<DataPath>ИспользоватьИндивидуальныйШаблонЦенника</DataPath>
	...
	<Events>
		<Event name="OnChange">ИспользоватьИндивидуальныйШаблонЦенникПриИзменении</Event>
	</Events>
</RadioButtonField>

Элемент называется ИспользоватьОбщийШаблонЦенника, привязан к реквизиту формы с другим именем, а обработчик у него общий со вторым переключателем, ИспользоватьИндивидуальныйШаблонЦенника. Оба переключателя смотрят в один реквизит-число: 0 значит общий шаблон, 1 индивидуальный. Буквы "а" в ...ЦенникПриИзменении нет, это не опечатка, так в типовой. Процедуры ИспользоватьОбщийШаблонЦенникаПриИзменении в модуле формы нет вовсе.

Размер мешает отдавать файл целиком: Form.xml номенклатуры весит 356 307 байт. Его можно ужать до сводки элементов, обработчиков и команд, это умеет, например, скил form-info из открытого набора cc-1c-skills. Но и полный XML, и сводка отвечают только на вопрос "как называется". Как форма выглядит у пользователя, из них не узнать.

 

Чего в Form.xml нет

Первое и самое заметное - видимость. В XML у поля Артикул свойства Visible нет вовсе, то есть оно видимое. В открытой форме нового элемента на полигоне у него Видимость = Ложь. Из XML этого не узнать, а поиск по модулю формы на 4 502 строки тоже не поможет: строки Элементы.Артикул.Видимость там нет. Видимость полей карточки ставит цикл в процедуре НастроитьФорму, а имена элементов приходят в него строками из модуля менеджера справочника, для полей вроде Артикул по настройкам вида номенклатуры:

ВидимостьЭлементов = НастройкиВидимостиИЗаголовков.ВидимостьЭлементов;
...
Для Каждого ЭлементВидимость Из ВидимостьЭлементов Цикл
	Если Элементы.Найти(ЭлементВидимость.Ключ) <> Неопределено Тогда
		Элементы[ЭлементВидимость.Ключ].Видимость = ЭлементВидимость.Значение;
	КонецЕсли;
	...

Снимали форму нового элемента, у которого вид не заполнен, и у заполненной карточки набор скрытых будет другим. Но порядок понятен: из 127 скрытых у 119 в XML нет никакого следа. У остальных 8 там стоит функциональная опция на реквизите или команде формы, а включена ли она в базе, файл не скажет.

Насколько это частая история, видно по всей конфигурации. В выгрузке УТ для Казахстана 3.4.4.87 1 508 форм документов и справочников и 1 434 модуля этих форм:

Что В XML Кодом в модуле формы
видимость элементов функциональные опции на реквизитах и командах формы у 348 форм .Видимость = в 607 модулях
условное оформление у 37 форм процедура УстановитьУсловноеОформление в 400 модулях
кнопки печати, отчётов, "Создать на основании" нет ПодключаемыеКоманды.ПриСозданииНаСервере в 562 модулях
поля дополнительных реквизитов нет УправлениеСвойствами.ПриСозданииНаСервере в 113 модулях

Условное оформление в XML есть у 37 форм из 1 508, а строится кодом в 400 модулях из 1 434. У формы номенклатуры в XML ноль правил оформления, а в модуле четыре, и собирает их первая строка ПриСозданииНаСервере:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	УстановитьУсловноеОформление();
	...

&НаСервере
Процедура УстановитьУсловноеОформление()

	УсловноеОформление.Элементы.Очистить();

	Элемент = УсловноеОформление.Элементы.Добавить();
	...

Запомните это Очистить(), оно сработает в разделе про расширения.

Отсюда состав входа для модели. Form.xml или его сводка даёт имена. Модуль формы, хотя бы ПриСозданииНаСервере и процедуры, которые она вызывает, показывает, что форма достраивает и прячет при создании. А что пользователь видит в работе, ни файлы, ни модуль не скажут: это надо снять с открытой формы или написать модели словами ("поле Артикул у нас скрыто, вкладка такая-то выключена опцией").

 

Снять форму с работающей базы: что выходит

Первая мысль - получить форму кодом прямо из базы и отдать модели её такой, какая она есть. На сервере это не работает. Глобальный ПолучитьФорму в серверном коде не компилируется: "Процедура или функция с указанным именем не определена". Документы.РеализацияТоваровУслуг.ПолучитьФорму("ФормаДокумента") через Выполнить на сервере отвечает "Интерактивные операции недоступны". Это проверяли на сервере другой типовой, УТ 11.5, платформа 8.3.27.

На клиенте форма получается без открытия окна, и на полигоне снимок сняли так. Упрощённый фрагмент процедуры замера, которая собирает скрытые элементы:

&НаКлиенте
Процедура ПоказатьСкрытые(Команда)

	// Истина в четвёртом параметре: всегда новый экземпляр формы
	Ф = ПолучитьФорму("Справочник.Номенклатура.Форма.ФормаЭлемента", , , Истина);
	Скрытые = Новый Массив;
	Для Каждого Эл Из Ф.Элементы Цикл
		Попытка
			Если Не Эл.Видимость Тогда
				Скрытые.Добавить(Эл.Имя);
			КонецЕсли;
		Исключение
			// как в замере: каждое свойство читается под Попыткой
		КонецПопытки;
	КонецЦикла;
	Сообщить(СтрСоединить(Скрытые, ", "));

КонецПроцедуры

ПолучитьФорму выполняет ПриСозданииНаСервере целиком, поэтому видимость в снимке такая, какой её оставил этот обработчик для пользователя, под которым сняли. Клиентский ПриОткрытии при получении формы не выполняется, а у формы номенклатуры он обновляет подключаемые команды, так что кнопки в живом окне могут отличаться. На форме номенклатуры снимок занял 1 172 мс на получение и 440 мс на обход, один прогон.

Остальное на клиенте не читается, и это тоже результат замера:

Что В открытой форме на клиенте
путь к данным элементов не прочитан ни у одного: "Поле объекта не обнаружено (ПутьКДанным)"
обработчики событий (ПолучитьДействие) 0 из 102, которые есть в XML: "Метод недоступен на клиенте"
условное оформление "Условное оформление недоступно на клиенте"
реквизиты формы (ПолучитьРеквизиты) "Метод недоступен на клиенте"

И форма документа может не получиться совсем. Форма реализации на полигоне не создалась: "Не удалось заполнить поле "Организация". Возможно, в информационной базе не введено ни одной организации!". ПриСозданииНаСервере заполняет новый документ по умолчанию и падает там, где заполнять нечем.

Снимок с открытой формы дополняет XML одной вещью, фактической видимостью, и зависит от пользователя, функциональных опций и данных. Всё остальное даёт только выгрузка.

 

Перехват формы в расширении: где ломается угаданное

Больше всего угадывать приходится в модуле формы в расширении. Форму сперва заимствуют в расширение, а потом пишут перехваты к процедурам её модуля, и если модели не дали выгрузку, каждое имя в перехвате взято из головы. Вот перехват, написанный по догадке, без формы перед глазами. Задача: подсветить пустой артикул и после смены шаблона ценника требовать заполнения поля шаблона.

&НаСервере
&Перед("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Элемент = УсловноеОформление.Элементы.Добавить();
	Поле = Элемент.Поля.Элементы.Добавить();
	Поле.Поле = Новый ПолеКомпоновкиДанных("Артикул");
	Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Артикул");
	Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
	Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);

КонецПроцедуры

&НаКлиенте
&После("ИспользоватьОбщийШаблонЦенникаПриИзменении")
Процедура Расш1_ИспользоватьОбщийШаблонЦенникаПриИзменении(Элемент)

	Элементы.ИндивидуальныйШаблонЦенника.АвтоОтметкаНезаполненного = Истина;

КонецПроцедуры

Синтаксически здесь всё чисто. Четыре проблемы находит сверка, и каждую ловит свой источник:

  • Модуль формы. &Перед выполняется до типовой ПриСозданииНаСервере, а та первой строкой вызывает УстановитьУсловноеОформление(), которая начинает с УсловноеОформление.Элементы.Очистить(). Правило, добавленное в &Перед, стирается раньше, чем форма откроется. Нужен &После.
  • Снимок открытой формы. Поле Артикул в форме нового элемента на полигоне скрыто. Оформление ляжет на поле, которого пользователь не видит, и доработка "не работает", хотя код верный.
  • Form.xml. В &После("...") пишется имя процедуры модуля формы, и в XML оно стоит в теге Event элемента. Угадывать его по схеме "элемент плюс событие" нельзя. Процедуры ИспользоватьОбщийШаблонЦенникаПриИзменении нет, настоящая называется ИспользоватьИндивидуальныйШаблонЦенникПриИзменении, и она общая для двух переключателей. Перехват сработает на обоих.
  • Form.xml. Элемента ИндивидуальныйШаблонЦенника на форме нет. Поле шаблона называется ШаблонЦенника, а переключатели ИспользоватьОбщийШаблонЦенника и ИспользоватьИндивидуальныйШаблонЦенника.

Тот же перехват после сверки:

&НаСервере
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Элемент = УсловноеОформление.Элементы.Добавить();
	Поле = Элемент.Поля.Элементы.Добавить();
	Поле.Поле = Новый ПолеКомпоновкиДанных(Элементы.Артикул.Имя);
	Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Артикул");
	Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
	Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);

КонецПроцедуры

&НаКлиенте
&После("ИспользоватьИндивидуальныйШаблонЦенникПриИзменении")
Процедура Расш1_ИспользоватьИндивидуальныйШаблонЦенникПриИзменении(Элемент)

	// процедура общая для двух переключателей: сработает на любом из них
	Элементы.ШаблонЦенника.АвтоОтметкаНезаполненного = (ИспользоватьИндивидуальныйШаблонЦенника = 1);

КонецПроцедуры

Имя для оформления теперь берётся у элемента: Элементы.Артикул.Имя даёт ту же строку, но если поля с таким именем на форме нет, код упадёт при первом же создании формы, а не промолчит. Про видимость код ничего не исправит. В форме нового элемента на полигоне скрыты и Артикул, и поле ШаблонЦенника, и оба переключателя. Это вопрос к настройке вида номенклатуры, и задать его модели можно, только если она знает, что поля скрыты.

Что сделает платформа с расширением, где в &После стоит имя несуществующей процедуры, мы не проверяли. Дешевле не доводить до этого: имя из аннотации ищется в Module.bsl из выгрузки строкой Процедура ИмяИзАннотации(. Нет такой строки - перехватывать нечего.

 

Что проверить в ответе модели

Имена элементов и процедур формы сверяются с выгрузкой: каждое Элементы.Имя ищем в Form.xml как name="Имя", каждое имя из &Перед, &После, &Вместо ищем в Module.bsl. Это пять минут поиска по двум файлам, и так находятся две проблемы из четырёх. Третья ловится чтением ПриСозданииНаСервере: что типовая делает до и после вашего перехвата. Четвёртая только снимком видимости или вопросом к тому, кто работает в базе.

Остальное в коде формы к самой форме не относится. Внутри ПриСозданииНаСервере модель пишет запросы, обращается к справочникам и регистрам, зовёт методы БСП. Это мы проверяем обработкой "Проверка кода и запросов нейросети": вставляете код, она компилирует каждую процедуру без выполнения, сверяет с метаданными вашей базы имена справочников, документов, регистров и значений перечислений, проверяет, есть ли вызванный метод в общем модуле, и прогоняет тексты запросов. Рядом с ошибкой стоят настоящие имена, и список кнопкой копируется обратно в чат. Как она ловит выдуманный метод БСП, не вызывая его, разобрано в статье про проверку кода нейросети.

Чего обработка не делает: имена элементов формы и имена в аннотациях перехвата она сейчас не сверяет. Это по-прежнему поиск по выгрузке, описанный выше.

 

Как мерили

Полигон: типовая УТ для Казахстана 3.4.4.87, тонкий клиент 8.3.27.1606, замер 01.11.2026. Снимали три формы: элемента номенклатуры, списка контрагентов и документа реализации. Третья не создалась (нет организации), поэтому в таблицах две. Формы брались для нового объекта и не записывались. Сверка шла с Form.xml и Module.bsl из выгрузки той же версии конфигурации, она же дала счёт по 1 508 формам и 1 434 модулям. Сопоставляли элементы по имени. Серверные вызовы ПолучитьФорму проверяли отдельно, на типовой УТ 11.5, платформа 8.3.27. Нейросеть в замере не участвовала: перехват выше написан нами по догадке, чтобы показать, где сверка ловит угаданное.

 

Другие наши инструменты

 

Вопрос

Как вы даёте модели форму, когда дорабатываете её через нейросеть: целиком XML, сводку или описываете словами? И попадались ли вам доработки, которые "не работают" только потому, что поле у пользователя скрыто?

Вступайте в нашу телеграмм-группу Инфостарт

доработка формы через нейросеть нейросеть 1С форма Form.xml нейросеть перехват формы в расширении После ПриСозданииНаСервере условное оформление кодом ПолучитьФорму без открытия видимость элементов формы вайбкодинг 1С

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Нейросети Системный администратор Разработчик Аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С:Документооборот 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Россия Платные (руб)

Подключите ИИ к 1С и решайте рабочие задачи обычными словами. От работы с данными до доработки конфигурации через расширения, всё в привычном чате с ИИ-помощником. Теперь с поддержкой DeepSeek Harness, Kimi Code и Kimi Work, доступных в России без VPN.

15990 руб.

30.07.2026    19306    40    4    

36

SALE! %

Банковские операции Обмен с интернет-банком Мастера заполнения Нейросети Разработчик Бухгалтер Пользователь 1С:Предприятие 8 1C:ERP 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:ERP. Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 3.0 Платные (руб)

Корректируйте банковские документы быстро и легко! Создайте правило обработки — и оно автоматически применится при загрузке выписки (отбор по любому реквизиту или регулярному выражению). Решение заполняет расшифровку платежа, комиссию эквайринга, подбирает ведомости на выплату зарплаты, помечает дубли из банка на удаление и многое другое. Доплачивать за алгоритмы не нужно — они включены в решение. Обработка работает при загрузке из файлов клиент-банка и через DirectBank. Новое — искусственный интеллект: модель приводит нестандартные назначения платежа к виду, понятному алгоритмам, а ИИ-ассистент прямо в 1С консультирует по решению и разбирает код правил и алгоритмов. Поддерживаются локальные и облачные OpenAI-совместимые модели — данные могут не покидать ваш контур.

17500 руб.

20.12.2024    21422    104    32    

90

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    76689    147    41    

154

SALE! 30%

Нейросети 1С 8.3 1С:Документооборот 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Расширение добавляет в 1С чат с ИИ-агентом. Пользователь пишет вопрос обычными словами: «какие УПД не подписаны?», «какой НДС к уплате за квартал?», «что висит на согласовании дольше недели?», а агент сам строит запросы к базе с правами этого пользователя и отвечает цифрами, таблицей, диаграммой или файлом Excel. Плитки «Аналитик», «Бухгалтер» и «Руководитель» дают сводку по базе одной кнопкой. Агент разбирает ошибки по скриншоту, сверяет прайсы поставщиков и проверяет коды маркировки. С версии 1.0.21 спрашивать можно и с телефона: QR-код в окне агента, без установки приложения. Работает в УТ 11, КА 2, ERP 2, БП 3.0, УНФ 3.0, Документооборот 3.0 и Альфа-Авто 6, ставится одним расширением.

18300 руб.

05.10.2026    3326    10    9    

11

Инструментарий разработчика Нейросети Системный администратор Разработчик Руководитель проекта 1С 8.3 Платные (руб)

Обработка заменяет ФИО, организации, ИНН, ИИН, БИН, ОГРН, КПП, БИК, счета и IBAN, паспорта, СНИЛС, адреса, телефоны, почту и суммы на правдоподобные выдуманные перед отправкой данных в ChatGPT, Claude или YandexGPT, а потом расшифровывает ответ модели обратно, подставляя настоящие имена и настоящие числа. Возвращаются и те итоги, которые модель посчитала сама: суммы масштабируются одним коэффициентом, поэтому пропорции и доли переживают обезличивание. Словарь замен хранится в самой базе и подхватывается автоматически, даже если обработку закрывали. Реквизиты России и Казахстана, любая конфигурация от 8.3.24, без единой зависимости.

14640 руб.

07.08.2026    2133    3    0    

3

Распознавание документов и образов Нейросети 1С:Предприятие 8 1С 8.3 1С 8.5 1C:Бухгалтерия 1С:Зарплата и Управление Персоналом 3.x Беларусь Россия Казахстан Армения Платные (руб)

ИИ-сканер документов с REST API для интеграции с 1С и корпоративными системами. Извлекайте данные из счетов, паспортов, дипломов, патентов и трудовых книжек за секунды. Точность человека - скорость машины. Приложение поддерживает восемь типов документов, четырех провайдеров ИИ (имеется возможность использования локальных ИИ), локальный REST API и экспорт в JSON. Важно! модель должна поддерживать функцию Vision (распознавание файлов и картинок). Запускайте используя локальные ИИ, без подписок и ограничений

6100 руб.

24.08.2026    1396    1    0    

1

Нейросети Разработчик 1С 8.3 Бесплатно (free)

Как подключить ИИ-агента к разработке 1С на примере обработки «Почему не закрывается месяц»: одна папка, копия демобазы и несколько скриптов. Семь шагов: агент, выгрузка в файлы, правила, проверка кода, сборка, тесты YAxUnit и сценарии форм. На каждый: зачем он нужен, команда и где легко споткнуться. В конце: что выросло поверх, три ошибки с разных типовых и сколько это стоило.

05.11.2026    5860    Iliaelagin    5    

15

Нейросети Разработчик Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бесплатно (free)

ИИ агент для бухгалтерии - открытый ИИ-консультант внутри 1С. Он отвечает на вопросы по данным базы, анализирует задолженность и обороты, помогает разбирать ошибки проведения и готовить документы. Пользователь видит шаги агента: какие инструменты вызваны и какие результаты получены. Решение состоит из расширения 1С и сервера на Python, поддерживает локальные модели и облачные API. Инструменты выполняются с правами текущего пользователя. Текущая версия - прототип для «Бухгалтерии предприятия 3.0». Исходный код распространяется под лицензией MIT.

31.10.2026    3376    166    nomadAI    8    

19
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Rico17 37 03.11.26 20:07 Сейчас в теме
Вариант - проверять по мере необходимости:
1. До изменения прочитать сводку нужной формы, её обработчик и связанные процедуры. Не загружать всю конфигурацию в контекст.
2. После изменения сверить имена элементов и методов с исходниками, выполнить структурные проверки.
3. На клиенте проверить конкретный сценарий: нужный пользователь, объект и настройки. Для разовой задачи часто достаточно открытия формы. Отдельный сборщик состояния нужен при повторяющихся проверках.
Для отправки сообщения требуется регистрация/авторизация