Как исправить ошибку «Превышен максимально допустимый результат 10000» в 1С при получении GTIN из «Честного Знака»?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Управленческий учет Торговля и дистрибуция
← На главную

При работе со вторым этапом маркировки остатков товаров легкой промышленности пользователи 1С часто сталкиваются с критической ошибкой при попытке запросить GTIN на остатки. Система выдает сообщение: «При выполнении запроса api/v4/true-api/product/gtin возникла ошибка. Код состояния HTTP: 400. Текст ошибки: { "error_message": "Превышен максимально допустимый результат 10000. Уточните запрос." }». В этой статье мы подробно разберем причины возникновения этой ситуации и предложим пошаговый алгоритм решения проблемы.

Разберем техническую причину ошибки

Для начала проанализируем, почему возникает именно число 10 000. В архитектуре True-API системы «Честный Знак» (ГИС МТ) реализовано жесткое ограничение на глубину пагинации (постраничного вывода). Метод GET /api/v4/true-api/product/gtin позволяет получать список кодов товаров, но система не отдает данные, порядковый номер которых превышает 10 000. Если в запросе 1С указано page=100 и limit=100, это означает, что программа пытается получить записи начиная с 10 001-й.

Проблема кроется в логике типовых конфигураций 1С. Когда мы нажимаем кнопку «Запросить GTIN на остатки», программа обращается к модулю ИнтерфейсИСМП и функции НайтиПродукциюПоИННПроизводителя. Если подходящий GTIN не найден на первой странице, 1С в цикле запрашивает следующую страницу, увеличивая индекс. Если в личном кабинете организации в «Национальном каталоге» накоплено огромное количество карточек (черновиков, архивных товаров, дублей), алгоритм перебора упирается в лимит 10 000 записей, установленный на стороне ГИС МТ, и возвращает ошибку 400.

Проанализируем ситуацию во втором этапе маркировки легпрома

Важно понимать контекст: на втором этапе маркировки легкой промышленности (2024 год) правила игры изменились по сравнению с опытом прошлых лет. Выясним основные отличия:

  1. Полное описание: В отличие от первого этапа, где допускалось упрощенное описание остатков, сейчас требуется полная модерация карточек в Национальном каталоге.
  2. Статусы карточек: Если карточка товара находится в статусе «Черновик» или «На модерации», 1С может видеть её в общем списке через API, но не может корректно сопоставить. Это заставляет цикл поиска крутиться дальше, пока не будет достигнут лимит.
  3. Накопленный «мусор»: За несколько лет работы в ЛК «Честного Знака» у многих И.П. и организаций скопились тысячи неиспользуемых карточек, которые и создают ту самую выборку более 10 000 позиций. Эта проблема особенно остро стоит в крупных сетях, где ведется маркировка остатков в распределенной рознице и общее число позиций легко превышает установленные лимиты.

Способ 1: Очистка данных в Национальном каталоге

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

Выполним следующие шаги:

  1. Зайдем в личный кабинет «Честного Знака» в раздел «Национальный каталог».
  2. Перейдем в реестр товаров и установим фильтр по статусу «Черновик».
  3. Если обнаружены тысячи ненужных черновиков, их необходимо удалить или отправить в архив.
  4. Проверим наличие карточек, созданных по «упрощенной схеме» (технические GTIN, начинающиеся на 029). Их также желательно архивировать, если они более не используются.

После уменьшения общего количества активных карточек ниже порога в 10 000, стандартный поиск 1С снова начнет работать корректно. Помимо наведения порядка в личном кабинете, важно поддерживать чистоту и в самой базе данных. Для сложных случаев, когда нужно удалить устаревшие организации или номенклатуру, может пригодиться универсальная обработка для очистки базы.

Способ 2: Ручной ввод GTIN в документ

Если нам нужно срочно получить марки на 2 штуки товара (как в примере автора темы), а заниматься очисткой каталога нет времени, воспользуемся обходным путем. Разберем по шагам, как исключить автоматический поиск:

  1. Найдем нужный GTIN непосредственно в личном кабинете «Честного Знака» (в разделе «Национальный каталог»).
  2. Скопируем 14-значный код товара.
  3. В 1С откроем документ Заказ на эмиссию кодов маркировки СУЗ.
  4. В табличной части «Товары» не нажимаем «Запросить GTIN на остатки», а вручную вставляем скопированный код в колонку GTIN.
  5. Если колонка недоступна, убедимся, что в справочнике Номенклатура для данного товара заполнен штрихкод в соответствующем регистре.

Таким образом, мы исключаем обращение к проблемному методу API и сразу переходим к этапу заказа кодов эмиссии.

Способ 3: Обновление конфигурации и БЭД

Проанализируем программную часть. Фирма 1С регулярно выпускает патчи для Библиотеки электронного документооборота (БЭД). В последних обновлениях логика поиска была скорректирована: теперь запросы к API формируются с более точными фильтрами (например, по полному коду ТН ВЭД из 10 знаков), что значительно сужает выборку и не позволяет процессу выйти за пределы 100-й страницы.

Убедимся, что у нас установлены актуальные версии:

Для пользователей, которые по разным причинам не могут обновиться, например, продолжая работать на старых версиях, существуют практические руководства по адаптации маркировки для УТ 10.3 и других нетиповых конфигураций.

Технический разбор кода для разработчиков

Если вы имеете доступ к конфигуратору и планируете внести правки, обратите внимание на то, как формируется запрос. В типовых решениях за это отвечает механизм интеграции. Рассмотрим пример того, как выглядит проблемный участок логики (условно):


// Пример логики, которая может приводить к ошибке
Для НомерСтраницы = 1 По 1000 Цикл
    ПараметрыЗапроса = Новый Структура;
    ПараметрыЗапроса.Вставить("page", НомерСтраницы);
    ПараметрыЗапроса.Вставить("limit", 100);
    
    Результат = ИнтеграцияИСМПВызовСервера.ВыполнитьЗапросGTIN(ПараметрыЗапроса);
    
    Если Результат.КодСостояния = 400 Тогда
        // Здесь мы получаем ошибку о превышении 10000
        Прервать;
    КонецЕсли;
    
    // Поиск нужного GTIN в полученном массиве
    Если НашлиНужныйGTIN(Результат.Данные) Тогда
        ЗаполнитьДокумент(Результат.Данные);
        Прервать;
    КонецЕсли;
КонецЦикла;

Чтобы исправить это поведение программно, рекомендуется изменить фильтрацию в запросе. Вместо перебора всех товаров организации, следует добавить фильтр по атрибутам товара (например, конкретный ТН ВЭД), чтобы API возвращало не весь список, а только подходящие позиции. В актуальных версиях 1С для этого используется объект ЗапросПеречняGTIN, в котором можно задать дополнительные условия отбора.

Итоги и рекомендации

Выясним краткую последовательность действий при возникновении ошибки «Превышен максимально допустимый результат 10000»:

  1. Проверьте количество черновиков в Национальном каталоге Честного Знака. Если их больше 10 000 — архивируйте лишние.
  2. Обновите 1С и установите все доступные патчи для подсистемы ИСМП.
  3. Для срочных заказов вводите GTIN вручную, предварительно найдя его в личном кабинете Честного Знака.
  4. Убедитесь, что в 1С правильно указан вид продукции и код ТН ВЭД, так как некорректные фильтры заставляют систему просматривать весь каталог организации.

Помните, что второй этап маркировки остатков легпрома требует более тщательного подхода к описанию товаров, и автоматизация 1С успешно работает только при условии порядка в мастер-данных на стороне ГИС МТ. Для компаний, постоянно сталкивающихся с большими объемами маркируемой продукции, может быть целесообразно использовать специализированные решения для массовой работы с «Честным Знаком», чтобы упростить и ускорить все процессы.

← На главную