Почему нейросеть выдумывает реквизиты вашей конфигурации — и что показать ей, чтобы перестала

06.08.26

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

Модель уверенно пишет запрос с несуществующим регистром и полем, которого нет в виртуальной таблице. Разбираем три ловушки языка запросов, на которых ломается даже верно названный объект, и считаем, сколько весит конфигурация целиком: 918 объектов — это 790 000 токенов, и в чат они не влезают.

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

 

Модель знает «1С вообще», а не вашу базу

Обучающие данные — это документация, статьи, куски типовых. Оттуда модель усваивает, что в конфигурациях бывает Справочник.Контрагенты, Документ.РеализацияТоваровУслуг и РегистрНакопления.ТоварыНаСкладах. Дальше на любой вопрос она собирает правдоподобное среднее по всем виденным конфигурациям.

Иногда попадает. В «Рознице» документ называется РеализацияТоваров, без «Услуг» — и модель, обученная в основном на УТ и ERP, промахивается на ровном месте. А доработанная конфигурация с полусотней собственных объектов не совпадает с усреднённой картиной вообще нигде.

Вывод простой: структуру надо показывать. Дальше начинается интересное — что именно показывать.

 

Три ловушки, которые не лечатся списком объектов

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

Ловушка первая: виртуальной таблицы может не быть

У регистра накопления вид бывает «Остатки» или «Обороты». Это не оттенок смысла, а разный набор доступных таблиц:

// регистр с видом «Остатки» — есть всё три
РегистрНакопления.ТоварыНаСкладах.Остатки
РегистрНакопления.ТоварыНаСкладах.Обороты
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты

// регистр с видом «Обороты» — только обороты
РегистрНакопления.Продажи.Обороты
РегистрНакопления.Продажи.Остатки   // ← такой таблицы НЕ существует

Последняя строка — самая частая поломка из всех. Запрос падает на компиляции с «Таблица не найдена», а модель до этого искренне считала, что остатки продаж — нормальная вещь. Вид регистра лежит в метаданных, но чтобы им воспользоваться, надо знать правило вывода. Модель его не знает, если ей не сказать.

Ловушка вторая: в виртуальной таблице ресурсы называются иначе

Вот эта ломает даже опытных, потому что выглядит как опечатка платформы. Ресурс регистра называется Количество. В таблице движений он Количество. А в виртуальных таблицах — нет:

// в .Обороты   → <Ресурс>Оборот
КоличествоОборот, СтоимостьОборот, НДСОборот

// в .Остатки   → <Ресурс>Остаток
КоличествоОстаток, СуммаОстаток

// в .ОстаткиИОбороты → четыре поля на каждый ресурс
КоличествоНачальныйОстаток, КоличествоПриход,
КоличествоРасход, КоличествоКонечныйОстаток

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

Ловушка третья: через составной тип нельзя поставить точку

Классический вопрос «продажи по контрагентам». Открываем РегистрНакопления.Продажи и видим, что измерения Контрагент там нет вовсе. Есть такое:

ДокументПродажи: Документ.РеализацияТоваров | Документ.ЧекККМ | Документ.ОтчетОРозничныхПродажах

Составной тип. Модель, не задумываясь, пишет ДокументПродажи.Контрагент — и получает ошибку, потому что через составной тип разыменование запрещено. Правильно так:

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

Обратите внимание: в этом коротком запросе сработали все три ловушки сразу. .Обороты, потому что регистр оборотный. СтоимостьОборот, а не Стоимость. И ВЫРАЗИТЬ вместо точки. Промахнись в любой из трёх — запрос не соберётся.

 

«Тогда выгрузим всё» — арифметика, которая это ломает

Идея напрашивается: выгрузить модели вообще всю конфигурацию и не думать. Считаем.

Типовая «Розница для Казахстана» 2.2 — 918 объектов метаданных. Если выгрузить их полностью, со всеми реквизитами, типами и табличными частями, получается около 2 миллионов символов. Для русского текста с длинными идентификаторами вроде РегистрСведений.БезопасноеХранилищеДанныхОбластейДанных это примерно 790 000 токенов.

Для сравнения — на типовой УПП обход даёт 2 666 объектов и 45 509 реквизитов, то есть раза в три больше.

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

Значит задача не «выгрузить метаданные» — это тривиально. Задача — отобрать.

 

Что выбрасывать в первую очередь

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

Во-первых, потолок такого сжатия — примерно 2,2 раза. Из 790 тысяч токенов получается 350 тысяч, что всё равно не влезает. Во-вторых, что важнее, выбрасывается не то. Синоним — это мост между вопросом человека («продажи по контрагентам») и именем объекта в конфигураторе. Убрав синонимы, вы получаете справочник для того, кто и так знает все имена наизусть.

Работающий рычаг ровно один: сокращать не детальность, а число объектов. Человека почти никогда не интересует вся база — его интересует один документ и его окружение. Выгружаем подробно объект и всё, с чем он связан напрямую, а остальное сворачиваем в список имён.

Список имён, кстати, выбрасывать нельзя. Модель должна знать, что эти объекты существуют, иначе на вопрос «а есть ли у меня справочник Х» она уверенно ответит «нет».

Замер на той же «Рознице»:

  • без отбора — 790 000 токенов;
  • пропустить объекты, в которых нет ни одной записи, — 117 085 токенов (подробно 569 объектов из 918: в типовой конфигурации живёт заметно меньше половины);
  • фокус на одном документе — 31 130 токенов, подробно 21 объект из 918.

Двадцать пять раз. Вот теперь это файл, который вставляется в чат вместе с вопросом.

 

Воронка отбора: 918 объектов и 790 000 токенов сжимаются до 21 объекта и 31 130 токенов

 

Отдельно про «объекты без данных»

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

Проверять наличие данных нужно правильно. Не КОЛИЧЕСТВО(*) — на многомиллионной таблице это полноценное сканирование, а вам нужен только факт:

ВЫБРАТЬ ПЕРВЫЕ 1 1 КАК Признак ИЗ Справочник.Номенклатура КАК Т

Мелкая, но обидная деталь: не называйте псевдоним Есть. ЕСТЬ — ключевое слово языка запросов (ЕСТЬ NULL), и запрос падает с «Ожидается имя». Я поймал это уже на боевом прогоне: весь фильтр молча не работал, а в логе стояло «не удалось проверить — 487» при 487 проверяемых объектах.

 

Ещё одна ловушка: «любая ссылка» уничтожает граф связей

Если вы решите добавить в выгрузку связи между объектами — «на этот справочник ссылаются вот такие документы», — вас ждёт сюрприз. В каждой конфигурации на БСП есть реквизиты типа «любая ссылка»: РегистрСведений.ВерсииОбъектов.Объект, НаборыЗначенийДоступа.Объект, Справочник.Заметки.Предмет.

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

Лечится отсечением по доле: если тип накрывает заметную часть всех ссылочных объектов конфигурации, это не связь, а «любая ссылка» — показываем свёрнуто и рёбер по ней не строим.

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

 

Что в итоге должно быть в файле

Собираю в чек-лист — пригодится, даже если будете делать выгрузку сами:

  • Технические имена типов, а не синонимы. Тут легко попасться: Строка(Тип) для ссылочного типа возвращает синоним («Пользователи»), с которым запрос не написать. Техническое имя Справочник.Пользователи даёт только Метаданные.НайтиПоТипу(Т).ПолноеИмя().
  • Готовые имена таблиц и полей запроса по каждому объекту — три ловушки из начала статьи закрываются здесь.
  • Значения перечислений целиком. Стоят копейки, а выдумывает их модель постоянно.
  • Предопределённые элементы. В метаданных их нет — коллекции ЭлементыПредопределенныхДанных не существует, доставать надо запросом ГДЕ Предопределенный.
  • Движения документов и регистраторы регистра — единственное ребро графа, которое модель не выведет из типов реквизитов.
  • Синонимы — только осмысленные. Из 3 257 синонимов реквизитов 2 691 оказался именем, разбитым на слова: «МаксимальныйПроцентОплаты» → «Максимальный процент оплаты». Это налог. А вот ИНН → «БИН / ИИН» стоит сохранить.
  • Честный список того, что не попало. Обрезанный файл выглядит для модели как полный, и она уверенно рассуждает о том, чего не видела.

 

Как этим пользоваться на практике

Файл сам по себе ничего не чинит — половина результата в том, что вы напишете рядом с ним.

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

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

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

Задача: <ваш вопрос>

<файл>

Здесь важны две вещи. «Единственный источник истины» — без этой фразы модель подмешивает к вашему файлу типовую УТ. Разрешение попросить недостающее — без него, упёршись в отсутствующий объект, модель его придумает, вместо того чтобы сказать, что его не хватает.

Если запрос всё равно не собрался — покажите модели раздел «Таблицы запроса» того объекта, на котором она споткнулась, и попросите переписать. В девяти случаях из десяти ошибка именно там: не та виртуальная таблица или не то имя ресурса.

А не проще дать модели прямой доступ к базе?

Вопрос резонный: MCP-серверы к 1С уже есть, и модель может выполнять запросы прямо в базе. Это другой инструмент для другой задачи, и выгрузку он не отменяет.

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

 

Инструмент

Всё описанное собрано в готовую внешнюю обработку — «Выгрузка структуры метаданных 1С для нейросети (LLM)». Обходит Метаданные, отдаёт Markdown или JSON, умеет фокус на объекте и пропуск пустых, печатает раздел «Таблицы запроса» по каждому объекту. Работает в любой конфигурации на 8.3.14+, только читает, к СУБД не обращается. Замеры из этой статьи сделаны ею же.

Если делаете своё решение — забирайте грабли из статьи, они честно оплачены прогонами. Вопросы и возражения пишите в комментарии, отвечаю.

 

Другие наши инструменты для связки 1С и нейросетей:

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

нейросеть LLM ChatGPT Claude метаданные 1С язык запросов виртуальные таблицы ВЫРАЗИТЬ составной тип регистр накопления токены контекст структура конфигурации

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

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

См. также

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

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

15250 руб.

25.08.2025    65273    132    36    

141

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-совместимые модели — данные могут не покидать ваш контур.

15250 руб.

20.12.2024    17207    84    29    

77

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

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

12078 руб.

30.07.2026    2241    4    4    

7

Нейросети Программист Бесплатно (free)

SFT-адаптация Qwen/Qwen3.6-27B для разработки на платформе 1C:Enterprise: код на BSL, структура выгрузок BSL+XML, схемы XML и типовые практики конфигураций. Модель ориентирована на ассистента разработчика 1С: навигация по метаданным/XML-выгрузке, пояснение и правка BSL, следование внутренним стандартам кодирования, работа с открытыми кодовыми базами 1С.

03.08.2026    3638    andrew.ab    34    

15

Облачные сервисы, хостинг Сервера Нейросети Программист Бесплатно (free)

В последние годы спор «облако или локалка» стал одним из самых горячих в мире работы с нейросетями. Давайте разберемся.

03.08.2026    1187    dsdred    47    

10

Нейросети Программист Бесплатно (free)

Рассказываем, как использовать библиотеку искусственного интеллекта для 1С не просто как инструмент генерации кода, а как основу для новых бизнес-решений. Показываем, как с ее помощью строить BI-систему на естественном языке: пользователь формулирует вопрос по продажам обычным текстом, а система генерирует запрос к базе и возвращает результат в виде таблицы или графики. Разбираем пример торгового бота-продавца, который общается с покупателем, консультирует по товару и отправляет платежную ссылку, а также объясняем, зачем в таких решениях нужны границы, точки контроля и обычное программирование. Отдельно показываем, как векторные базы и нечеткий поиск помогают создавать помощников менеджера (например, для подбора аналогов), и почему новые задачи лучше решать новыми методами, а не пытаться применять ИИ только к старым сценариям.

31.07.2026    8538    mkalimulin    11    

13

Нейросети Программист Бесплатно (free)

Эта статья не столько про новую программу, сколько про путь: от желания немного улучшить чужой open-source проект — до создания собственного инструмента, который закрывает весь цикл работы с речью. Транскрибация, генерация статей и описаний через LLM, синтез аудиокниг — всё локально, в одном приложении. Исходники открыты, лицензия MIT.

29.07.2026    2011    Ibrogim    23    

29

Нейросети Программист Бесплатно (free)

Новые результаты теста топовых ИИ в вайбкодинге на 1С. Это продолжение прошлой статьи, где нейросети написали внешнюю обработку за 19 минут. Теперь же с этой же задачей справляются за 3–4 минуты. Прошло всего несколько недель. Что будет дальше?

24.07.2026    11886    top_1c    109    

37
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Cерый 30 07.08.26 12:18 Сейчас в теме
Конструктор запросов вместо:
ВЫБРАТЬ ИмяПоля
ИЗ ИмяТаблицы

пишет:
ВЫБРАТЬ ИмяТаблицы.ИмяПоля
ИЗ ИмяТаблицы КАК ИмяТаблицы

делая запрос менее читаемым, кто придерживается этой точки зрения?
Предлагаю направить усилия на работу с конструктором в этом плане, а он уж полей выдумывать не будет.
nedomolkov.ivan; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация