Нейросеть выдумала метод общего модуля, а проверка через Выполнить его пропустила: как поймать такое до запуска

02.11.26

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

Нейросеть пишет код 1С с правдоподобными именами, и часть из них в вашей базе не существует. Проверьте у себя: оберните вызов ОбщегоНазначения.НесуществующийМетод(1) в Если Ложь Тогда и отдайте Выполнить - ошибки не будет, как и на выдуманном справочнике. Показал два приёма, которыми такие имена ловятся без запуска кода: вызов метода общего модуля со ста лишними аргументами (метод есть - платформа отказывает до входа в тело, нет - "Метод объекта не обнаружен") и сбор ошибок имён в запросе за один раз через НайтиПараметры с подменой найденного места. Внутри функция для проверки метода, запрос модели со стенда с двумя ошибками, о которых платформа сообщила по одной, и границы метода.

ОбщегоНазначения.ПолучитьЗначениеРеквизитаОбъекта выглядит как функция БСП, но в типовой УТ 11.5 её нет. Есть, например, ЗначениеРеквизитаОбъекта и ЗначениеРеквизитаОбъектов. Нейросеть пишет такие имена уверенно, а проверка синтаксиса через Выполнить их пропускает, как и выдуманный справочник с выдуманным реквизитом. Узнаёте вы об ошибке, когда выполнение дошло до этой строки, и хорошо, если на копии.

Ниже два приёма, которыми такие имена ловятся до запуска. Первый проверяет, есть ли метод в общем модуле, и сам метод при этом не выполняется. Второй собирает ошибки имён в запросе за один раз, хотя платформа отдаёт их по одной. Оба собраны в обработку, ссылка в конце.

 

Что пропускает проверка через Выполнить

Конфигуратор и EDT проверяют код, который уже лежит в модуле конфигурации. Кусок из чата до этого живёт в консоли кода, и проверить его без запуска можно так: обернуть в Если Ложь Тогда ... КонецЕсли и отдать Выполнить. Платформа компилирует фрагмент целиком, ветка не выполняется, ошибка приходит со строкой и колонкой. Вот что этот приём видит, а что нет:

Код =
"Если Ложь Тогда
|	Спр = Справочники.ВыдуманныйСправочник;
|	Имя = ОбщегоНазначения.НесуществующийМетод(1);
|КонецЕсли;";
Выполнить(Код); // ошибки нет

Прогон на типовой УТ 11.5:

Что внутри Если Ложь Ответ платформы
1 + ; Ошибка в выражении
цикл без КонецЦикла Ожидается ключевое слово 'КонецЦикла'
НесуществующаяГлобальнаяФункция(1) Процедура или функция с указанным именем не определена
НесуществующийОбщийМодуль.Метод(1) Переменная не определена
справочник, которого нет, и реквизит, которого нет ошибки нет
ОбщегоНазначения.НесуществующийМетод(1) ошибки нет

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

Справочники, документы, регистры и их реквизиты проверить несложно: всё это отдаёт Метаданные. С методами общего модуля хуже. Сам модуль в Метаданные.ОбщиеМодули есть, а списка его экспортных методов там нет, и текст модуля из пользовательского сеанса не прочитать.

 

Метод общего модуля: вызов со ста аргументами

Вызвать метод по-настоящему, чтобы проверить, нельзя: он что-нибудь сделает. Обёртка Если Ложь, как видно выше, молчит. Остаётся вызвать его так, чтобы платформа отказала раньше, чем войдёт в тело.

Ста параметров у обычного метода нет. Платформа сверяет число аргументов с объявлением до входа в метод. Если метод в модуле есть, ответ будет "Слишком много фактических параметров", и тело не выполнится. Если метода нет, ответ другой: "Метод объекта не обнаружен". По тексту ошибки и видно, выдуман метод или нет.

 

Вызов метода общего модуля со ста аргументами: если метод есть, платформа отвечает Слишком много фактических параметров до входа в тело; если нет, Метод объекта не обнаружен

 

В виде функции:

// Есть ли экспортный метод в общем модуле. Тело метода не выполняется:
// при ста аргументах платформа отказывает до входа в него.
// Истина - метод есть, Ложь - выдуман, Неопределено - проверить не удалось.
Функция ЕстьМетодОбщегоМодуля(ИмяМодуля, ИмяМетода) Экспорт

	Если Метаданные.ОбщиеМодули.Найти(ИмяМодуля) = Неопределено Тогда
		Возврат Ложь; // модуля нет вовсе
	КонецЕсли;

	Аргументы = Новый Массив;
	Для Н = 1 По 100 Цикл
		Аргументы.Добавить(Формат(Н, "ЧГ=0"));
	КонецЦикла;

	Попытка
		Выполнить(ИмяМодуля + "." + ИмяМетода + "(" + СтрСоединить(Аргументы, ",") + ");");
	Исключение
		Текст = НРег(ОписаниеОшибки());
		Если СтрНайти(Текст, "слишком много фактических параметров") > 0
			Или СтрНайти(Текст, "too many actual parameters") > 0 Тогда
			Возврат Истина;
		ИначеЕсли СтрНайти(Текст, "метод объекта не обнаружен") > 0
			Или СтрНайти(Текст, "object method not found") > 0 Тогда
			Возврат Ложь;
		КонецЕсли;
		Возврат Неопределено; // другая ошибка: модуль недоступен в этом контексте и т.п.
	КонецПопытки;

	// Сюда дойдёт только метод, у которого сто параметров и больше:
	// он выполнился по-настоящему.
	Возврат Истина;

КонецФункции

Вызов ЕстьМетодОбщегоМодуля("ОбщегоНазначения", "ПолучитьЗначениеРеквизитаОбъекта") вернёт Ложь, для "ЗначениеРеквизитаОбъекта" вернёт Истина. Что тело метода при этом не выполняется, проверено прогоном на платформе 8.3.27.

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

Тем же приёмом проверяются методы менеджеров и объектов. На Справочники.Контрагенты.НайтиПоИНН в типовой УТ 11.5 обработка отвечает: нет метода ни в платформе, ни в модуле менеджера. Для методов объекта нужен экземпляр, его обработка создаёт в памяти через СоздатьЭлемент() и не записывает. Если метода нет, она пробует то же имя в других общих модулях и его варианты: без "Получить", "Объектов" вместо "Объекта". Так рядом с ПолучитьЗначениеРеквизитаОбъекта появляются два настоящих имени из этой базы.

 

Запрос: платформа говорит про одну ошибку

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

Вот запрос одной из моделей с нашего стенда, задание "остатки по складам", типовая УТ 11.5, промпт без описания метаданных:

ВЫБРАТЬ
	ОстаткиТоваровНаСкладах.Склад КАК Склад,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ОстаткиТоваровНаСкладах.Номенклатура) КАК КоличествоПозиций,
	СУММА(ОстаткиТоваровНаСкладах.КоличествоОстаток) КАК ВНаличии
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Остатки(&КонецПериода, ) КАК ОстаткиТоваровНаСкладах
ГДЕ
	ОстаткиТоваровНаСкладах.КоличествоОстаток <> 0
СГРУППИРОВАТЬ ПО
	ОстаткиТоваровНаСкладах.Склад

В этом регистре ресурс называется ВНаличии, поле виртуальной таблицы остатков ВНаличииОстаток. В соседнем регистре ТоварыОрганизаций ресурс называется Количество, и там КоличествоОстаток настоящее поле. Та же модель поставила КоличествоОстаток к остаткам на складах в пяти заданиях из тридцати. В этом запросе ошибок две, на строках 4 и 8. Платформа сообщила одну, причём про строку 8, хотя строка 4 выше:

{(8, 26)}: Поле не найдено "ОстаткиТоваровНаСкладах.КоличествоОстаток"

Этот же запрос я приводил в статье про стенд и назвал такие ошибки безобидными. Они и правда видны сразу. Неудобно, что по одной: исправите строку 8, узнаете про строку 4. В длинном запросе это несколько кругов "вставил в чат, получил ответ, проверил". И ни разу платформа не скажет, как поле называется в этой базе.

Обработка делает эти круги сама. Нашла ошибку, подменила место и скомпилировала снова. Поле меняется на NULL, выдуманная таблица на ближайшую настоящую, ЗНАЧЕНИЕ(...) на NULL. Упрощённо:

Для Проход = 1 По 40 Цикл
	Попытка
		Запрос = Новый Запрос(СтрСоединить(Строки, Символы.ПС));
		Запрос.НайтиПараметры(); // компиляция без выполнения
		Прервать; // ошибок больше нет
	Исключение
		Ош = РазобратьОшибку(ОписаниеОшибки()); // строка, колонка, имя
	КонецПопытки;
	Ошибки.Добавить(Ош);
	Если Ош.Вид = "Синтаксис" Тогда
		Прервать; // дальше платформа текст не читает
	КонецЕсли;
	// ошибочное поле подменяем на NULL и компилируем снова
	Строки[Ош.Строка - 1] = ЗаменитьВСтроке(Строки[Ош.Строка - 1], Ош.Колонка, Ош.Имя, "NULL");
КонецЦикла;

Настоящие имена берутся из СхемаЗапроса: доступные поля каждого источника по его псевдониму, включая поля виртуальных таблиц с суффиксами. К КоличествоОстаток обработка подсказывает ВНаличииОстаток, КОтгрузкеОстаток.

Синтаксическая ошибка цикл останавливает. Для одной из них обработка добавляет к ответу платформы объяснение, потому что сам ответ ничего не объясняет:

ВЫБРАТЬ ПЕРВЫЕ 10
	В.Код,
	В.Наименование,
	В.НаименованиеПолное
ИЗ
	Справочник.Валюты КАК В

Платформа отвечает "Ожидается имя" и ставит маркер перед В в строке 6. В в языке запросов ключевое слово, то самое, из В (...) и В ИЕРАРХИИ, и псевдонимом быть не может. Короткий псевдоним по первой букве таблицы ставят машинально: в той же статье про стенд так назвала таблицу старшая модель, и я сам в четырёх эталонах. Этот запрос набрали уже при приёмке обработки, на полигоне. Обработка дописала к ошибке: псевдоним совпал с ключевым словом, переименуйте.

 

Чего так не поймать

Переменная, тип которой из текста не понять, не проверяется. Выборка.Поле, параметр процедуры, результат своей функции: вывода типов нет. Тип определяется, когда он виден из кода: СоздатьЭлемент(), НайтиПоКоду(), ТЧ.Добавить(), Для Каждого Стр Из Объект.Товары.

Запрос, который выполнился без ошибки и вернул не те строки, тоже другой случай. Имена там все настоящие, ошибка в смысле, и ловит её сверка результата с эталоном. Это и есть главная тема статьи про стенд.

И код, вырезанный из модуля, даёт предупреждения: переменные модуля и процедуры, которых во вставке нет. Ошибками они не считаются и в счёт ложных срабатываний ниже не входят.

 

Как проверяли

Типовая УТ 11.5.22.67, платформа 8.3.27. Набор из 28 кейсов: 19 с одной ошибкой каждый (7 запросов и 12 кусков кода) и 9 правильных. Обработка прошла все 28.

Отдельно ложные срабатывания. Настоящий код типовой конфигурации компилируется и работает, поэтому любая ошибка на нём ложная. Брали три случайные выборки по 60 процедур из кода УТ 11.5. На первых двух нашлись недоделки: 10 ложных ошибок на первой, 3 на второй. После починки все три выборки чистые, 60 процедур из 60 без ошибок. Третья выборка контрольная: её сняли после всех починок, в настройке она не участвовала.

 

Обработка

Оба приёма и сверка с метаданными собраны в обработку "Проверка кода и запросов нейросети". Вставляете текст из чата, нажимаете "Проверить", получаете таблицу: строка, что не так, настоящие имена из вашей базы. Кнопка "Скопировать для нейросети" кладёт список ошибок с подсказками в виде, который вставляется обратно в чат. Для запроса есть пробный прогон на 10 строк. Чтобы посмотреть, как это выглядит, не подбирая свой пример, есть кнопка "Пример с ошибками": она собирает запрос и код из метаданных вашей базы, с опечаткой в реквизите и выдуманной таблицей. В базу обработка не пишет и нейросеть не вызывает.

 

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

 

Вопрос

Что нейросеть выдумывает у вас чаще: методы БСП или поля виртуальных таблиц? И как вы это ловите: даёте модели метаданные заранее или проверяете то, что она уже написала?

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

проверка кода нейросети 1С нейросеть выдумывает метод метод объекта не обнаружен проверить существование метода общего модуля проверка запроса без выполнения НайтиПараметры Выполнить Если Ложь проверка синтаксиса слишком много фактических параметров поле не найдено вайбкодинг 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. Vinzor 129 02.11.26 15:23 Сейчас в теме
Дожили.
Уже из просто кодеров надо переучиваться на:
1. Спец заставить ИИ написать нужный код вместо себя
2. Спец проверить этот код от ИИ на предмет выдуманных и несуществующих сущностей базы: методов общих модулей и так далее.
2. nedomolkov.ivan 485 02.11.26 15:28 Сейчас в теме
(1) Думаю что через пару лет весь код будет написан нейросетями
3. Xershi 1566 02.11.26 15:40 Сейчас в теме
(2) точнее только то что кто-то написал и проверил.
SemandCheb; +1 – Ответить
4. capitan 2609 02.11.26 16:11 Сейчас в теме
(2)
пару лет весь код будет написан нейросетями

Через пару лет будет AGI который достигнет человеческого разума и соответственно работать не захочет
Будет резаться в домино с пацанами
5. Sorm 149 02.11.26 16:54 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация