При работе со вторым этапом маркировки остатков товаров легкой промышленности пользователи 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 год) правила игры изменились по сравнению с опытом прошлых лет. Выясним основные отличия:
Рассмотрим самый правильный с точки зрения чистоты данных способ. Поскольку ошибка прямо говорит об избыточности результатов, нам нужно сократить объем данных, которые API отдает программе 1С.
Выполним следующие шаги:
После уменьшения общего количества активных карточек ниже порога в 10 000, стандартный поиск 1С снова начнет работать корректно. Помимо наведения порядка в личном кабинете, важно поддерживать чистоту и в самой базе данных. Для сложных случаев, когда нужно удалить устаревшие организации или номенклатуру, может пригодиться универсальная обработка для очистки базы.
Если нам нужно срочно получить марки на 2 штуки товара (как в примере автора темы), а заниматься очисткой каталога нет времени, воспользуемся обходным путем. Разберем по шагам, как исключить автоматический поиск:
Заказ на эмиссию кодов маркировки СУЗ.GTIN.Номенклатура для данного товара заполнен штрихкод в соответствующем регистре.Таким образом, мы исключаем обращение к проблемному методу API и сразу переходим к этапу заказа кодов эмиссии.
Проанализируем программную часть. Фирма 1С регулярно выпускает патчи для Библиотеки электронного документооборота (БЭД). В последних обновлениях логика поиска была скорректирована: теперь запросы к API формируются с более точными фильтрами (например, по полному коду ТН ВЭД из 10 знаков), что значительно сужает выборку и не позволяет процессу выйти за пределы 100-й страницы.
Убедимся, что у нас установлены актуальные версии:
Обслуживание — Обновление программы — Установленные исправления.ИСМП или Маркировкой, их необходимо установить в первую очередь.Для пользователей, которые по разным причинам не могут обновиться, например, продолжая работать на старых версиях, существуют практические руководства по адаптации маркировки для УТ 10.3 и других нетиповых конфигураций.
Если вы имеете доступ к конфигуратору и планируете внести правки, обратите внимание на то, как формируется запрос. В типовых решениях за это отвечает механизм интеграции. Рассмотрим пример того, как выглядит проблемный участок логики (условно):
// Пример логики, которая может приводить к ошибке
Для НомерСтраницы = 1 По 1000 Цикл
ПараметрыЗапроса = Новый Структура;
ПараметрыЗапроса.Вставить("page", НомерСтраницы);
ПараметрыЗапроса.Вставить("limit", 100);
Результат = ИнтеграцияИСМПВызовСервера.ВыполнитьЗапросGTIN(ПараметрыЗапроса);
Если Результат.КодСостояния = 400 Тогда
// Здесь мы получаем ошибку о превышении 10000
Прервать;
КонецЕсли;
// Поиск нужного GTIN в полученном массиве
Если НашлиНужныйGTIN(Результат.Данные) Тогда
ЗаполнитьДокумент(Результат.Данные);
Прервать;
КонецЕсли;
КонецЦикла;
Чтобы исправить это поведение программно, рекомендуется изменить фильтрацию в запросе. Вместо перебора всех товаров организации, следует добавить фильтр по атрибутам товара (например, конкретный ТН ВЭД), чтобы API возвращало не весь список, а только подходящие позиции. В актуальных версиях 1С для этого используется объект ЗапросПеречняGTIN, в котором можно задать дополнительные условия отбора.
Выясним краткую последовательность действий при возникновении ошибки «Превышен максимально допустимый результат 10000»:
Помните, что второй этап маркировки остатков легпрома требует более тщательного подхода к описанию товаров, и автоматизация 1С успешно работает только при условии порядка в мастер-данных на стороне ГИС МТ. Для компаний, постоянно сталкивающихся с большими объемами маркируемой продукции, может быть целесообразно использовать специализированные решения для массовой работы с «Честным Знаком», чтобы упростить и ускорить все процессы.