Инвентаризация кодов маркировки в 1С через True API: сроки годности, виртуальный склад и объёмно-сортовой учёт

05.11.26

Интеграция - Обмен с ГосИС

Продолжение разработки для инвентаризации кодов маркировки в 1С через True API «Честного знака». Разбираю практические задачи: почему API возвращает пустой список марок при наличии товара на остатках, как получить баланс виртуального склада, запросить дату производства и срок годности каждой марки. На реальном примере показано, как среди 94 кодов маркировки в статусе «В обороте» обнаружилась просроченная продукция. Приведены методы API, примеры JSON, фрагменты кода 1С и результаты тестирования.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Инвентаризация кодов маркировки в 1С через True API: сроки годности, виртуальный склад и объёмно-сортовой учёт:
.epf 25,57Kb
0 6 200 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

Инвентаризация кодов маркировки в 1С через True API: сроки годности, виртуальный склад и объёмно-сортовой учёт

Продолжение разработки «Запрос списка кодов маркировки „Честный знак“ по заданным фильтрам и списание».

 

От инвентаризации марок к контролю сроков годности

В феврале 2026 года я опубликовал внешнюю обработку для инвентаризации кодов маркировки в 1С:Розница 2.3.

Первая публикация на Инфостарте

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

Если марка физически присутствует, оператор сканирует её, и соответствующая строка отмечается в таблице. Отсутствующие марки можно выбрать и перенести в документ «Вывод из оборота ИС МП».

Обработка использует штатные механизмы 1С для авторизации в ГИС МТ, поэтому не требуется создавать собственную систему хранения токенов.

За время эксплуатации появились дополнительные задачи:

  • Получать не только статус марки, но и дату производства и срок годности.

  • Выявлять просроченную продукцию, которая по данным ГИС МТ продолжает находиться в обороте.

  • Работать с товарными группами, где применяется объёмно-сортовой учёт.

  • Отличать отсутствие индивидуальных марок от отсутствия товара на виртуальном складе.

В результате первоначальная обработка превратилась в более функциональный инструмент контроля маркированной продукции.

 

1. Почему для сигарет всё работало, а для мороженого — нет?

Один из интересных случаев возник при попытке получить список марок мороженого.

Для табачной продукции обработка корректно возвращала коды маркировки через метод:

POST /api/v4/true-api/cises/search

При выборе мороженого запрос выполнялся успешно, но возвращал пустой список:

{
  "result": [],
  "isLastPage": true
}

Первоначально возникло подозрение на неправильно сформированный фильтр.

Проверили товарную группу:

{
  "filter": {
    "productGroups": ["milk"]
  },
  "pagination": {
    "perPage": "110",
    "lastEmissionDate": "2027-01-01T00:00:00.000Z",
    "sgtin": "0"
  }
}

Для диагностики последовательно исключили фильтрацию по GTIN, периоду эмиссии, статусу марки и виду упаковки.

Результат не изменился.

При этом в организации имелись остатки молочной продукции.

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

Причина — особенности учёта маркированной продукции

В системе «Честный знак» применяются разные механизмы учёта.

При поэкземплярном учёте отслеживаются конкретные коды маркировки.

При объёмно-сортовом учёте (ОСУ) сведения о движении продукции передаются по GTIN и количеству, без обязательной передачи индивидуальных кодов каждой упаковки.

Поэтому наличие товара на балансе организации не всегда означает наличие соответствующего количества индивидуальных марок в результатах поиска.

Важное уточнение: пустой ответ cises/search сам по себе не доказывает ОСУ. Он показывает лишь отсутствие записей по условиям конкретного запроса.

Для проверки количественных остатков нужен другой метод API.

 

2. Получение остатков виртуального склада

В True API предусмотрен метод получения баланса виртуального склада:

POST /api/v3/true-api/warehouse/balance

Для молочной продукции используем параметр товарной группы:

?pg=milk

Пример запроса для одного GTIN:

{
  "gtins": [
    "04620021194272"
  ],
  "pagination": {
    "page": 0,
    "perPage": 100
  }
}

В ходе тестирования выяснилась важная деталь: для получения первой страницы мы использовали page = 0.

Первоначальные запросы с page = 1 возвращали пустой результат.

После изменения номера страницы API вернул сведения об остатке.

Пример реального ответа, полученного при тестировании:

{
  "code": 0,
  "description": "Ok",
  "balances": [
    {
      "saldo": 1,
      "actualInput": 0,
      "actualOutput": 0,
      "quantity": 1,
      "netWeight": 78,
      "volume": 0,
      "actualOperationsCount": 0
    }
  ]
}

Из ответа исключён GTIN.

Таким образом, получили два результата:

  1. Поиск индивидуальных марок — пустой список.

  2. Баланс виртуального склада — положительный остаток.

Для рассматриваемого товара это согласуется с объёмно-сортовым учётом.

Однако следует учитывать, что баланс виртуального склада не всегда позволяет однозначно определить способ учёта конкретного остатка.

Поэтому в обработке правильнее показывать отдельно количество найденных индивидуальных марок и баланс виртуального склада.

Универсальная работа с товарными группами

Важное требование — не ограничивать эту проверку молочной продукцией.

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

ГруппаТоваров =
    ИнтеграцияИСРТКлиентСервер.
    ОсобенностьУчетаПоВидуПродукции(
        Товар.ВидНоменклатуры.ОсобенностьУчета);

Далее используется функция преобразования значения перечисления 1С в код товарной группы True API:

КодГруппы = ТоварнаяГруппа(ГруппаТоваров);

Это позволяет использовать одну архитектуру для различных товарных групп, при условии поддержки соответствующего метода API.

Проверку применимости метода к товарной группе необходимо выполнять отдельно.

 

3. Получаем срок годности каждой марки

Следующая задача оказалась ещё интереснее.

При инвентаризации важно знать не только то, находится ли марка в обороте, но и не истёк ли срок годности товара.

Для этого можно использовать метод:

POST /api/v3/true-api/cises/info

Он позволяет получать дополнительную информацию по списку кодов маркировки.

В частности, для поддерживаемых товарных групп в ответе могут присутствовать:

  • productionDate — дата производства.

  • expirationDate — срок годности.

  • status — статус кода маркировки.

  • cis — код идентификации.

В нашей обработке список марок сначала получается через cises/search, а затем найденные коды передаются в cises/info.

Используем существующую авторизацию 1С

Для получения токена применяется штатный механизм:

КлючСессии =
    ИнтерфейсАвторизацииИСМПСлужебный.
    ПроверитьОбновитьКлючСессии(
        ИнтерфейсИСМПОбщегоНазначенияКлиентСервер.
        ПараметрыЗапросаКлючаСессии(Организация));

Далее выполняется HTTP-запрос:

КодГруппы = ТоварнаяГруппа(ГруппаТоваров);

URLЗапроса =
    "api/v3/true-api/cises/info?pg="
    + КодГруппы;

РезультатЗапроса =
    ОбменДаннымиИСМПКлиентСервер.
    ОтправитьДанныеВСервис(
        URLЗапроса,
        ТелоЗапроса,
        КлючСессии,
        "POST",
        ИнтерфейсИСМПОбщегоНазначенияКлиентСервер.
        ПараметрыОтправкиHTTPЗапросов(, Истина));

Здесь ТелоЗапроса содержит JSON-массив кодов маркировки.

Небольшой нюанс с версиями API

При разработке столкнулись с ошибкой:

HTTP: 404

{
  "error_message": "Метод с указанным URL не найден"
}

Ошибка возникала при обращении по адресу:

/api/v4/true-api/cises/info

После перехода на /api/v3/true-api/cises/info удалось получить данные о сроках годности.

Поэтому при реализации интеграции стоит проверять актуальный адрес конкретного метода, а не предполагать, что все методы True API работают с одинаковой версией URL.

 

4. Заполняем сроки годности в табличной части

В существующую таблицу кодов маркировки добавлены три реквизита:

Реквизит Тип
ДатаПроизводства Дата
ГоденДо Дата
СрокГодности Строка

Поскольку API возвращает даты в формате ISO 8601, для заполнения реквизитов 1С используется преобразование даты.

После получения даты годности определяем состояние товара:

Функция ОпределитьСрокГодностиКМ(ДатаГодности)

    Если ДатаГодности = Дата(1, 1, 1) Тогда
        Возврат "Не указан";
    КонецЕсли;

    Сегодня = НачалоДня(ТекущаяДата());

    Если ДатаГодности < Сегодня Тогда

        Возврат "Просрочен";

    ИначеЕсли ДатаГодности <= Сегодня + 7 * 86400 Тогда

        Возврат "Истекает";

    Иначе

        Возврат "Годен";

    КонецЕсли;

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

В приведённом варианте порог предупреждения составляет семь дней. Его можно сделать настраиваемым.

Для промышленного использования желательно дополнительно учитывать точное время окончания срока годности, если оно передаётся в ответе API.

 

5. Практический результат: среди 94 марок обнаружены просроченные

Проверку провели на маркированной пивной продукции.

Метод cises/search вернул 94 индивидуальные марки.

После дополнительного запроса сведений о кодах получили даты годности.

В таблице появились строки двух типов:

Первая группа:

  • Статус марки: INTRODUCED.

  • Годен до: 22.01.2027.

  • Состояние: «Годен».

Вторая группа:

  • Статус марки: INTRODUCED.

  • Годен до: 29.10.2026.

  • Состояние: «Просрочен».

Проверка выполнялась 5 ноября 2026 года.

Таким образом, удалось обнаружить продукцию, срок годности которой уже истёк, хотя коды маркировки продолжали иметь статус INTRODUCED.

Именно ради этого стоило добавлять второй запрос.

Статус марки «В обороте» не означает, что товар пригоден для реализации по сроку годности.

Теперь при инвентаризации можно видеть обе характеристики одновременно.

Здесь целесообразно разместить скриншот обработки с обезличенными названиями организаций, магазинов, товаров, GTIN и кодами маркировки.

Что это даёт на практике

Обработка теперь позволяет выявлять товары, которые:

  • Числятся за организацией в ГИС МТ.

  • Имеют индивидуальные коды маркировки.

  • Физически проверяются сканированием.

  • Могут иметь истёкший срок годности.

Следующим этапом можно автоматизировать отбор просроченной продукции для формирования документов списания.

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

 

6. Почему нельзя просто считать количество марок остатком товара?

Это ещё один вывод, к которому пришли в процессе разработки.

Для продукции с поэкземплярным учётом количество найденных марок может использоваться для инвентаризации индивидуальных кодов.

Но для продукции с ОСУ такая логика неприменима.

Например:

Источник Результат
cises/search 0 индивидуальных марок
warehouse/balance Есть количественный остаток
Вывод Требуется проверка способа учёта

Причём нельзя автоматически складывать баланс виртуального склада и количество найденных марок: эти показатели могут пересекаться.

Поэтому универсальная обработка должна рассматривать два источника данных отдельно.

В перспективе это позволит реализовать разные сценарии инвентаризации: индивидуальных марок и количественных остатков.

 

7. Что планируется доработать

На следующем этапе хочу добавить:

  1. Отбор марок по сроку годности: годные, истекающие, просроченные.

  2. Подсветку просроченной продукции в таблице.

  3. Сводную информацию о количестве просроченных марок по магазинам.

  4. Отдельный сценарий инвентаризации для товаров с объёмно-сортовым учётом.

  5. Формирование документов списания по результатам инвентаризации.

  6. Дополнительную проверку корректности сведений о принадлежности кодов организации.

Также планируется дальнейшая проверка обработки на других товарных группах.

 

Заключение

Первоначально задача заключалась в том, чтобы получить из «Честного знака» список марок и проверить их физическое наличие.

Но в процессе эксплуатации выяснилось, что одного списка кодов недостаточно.

Информация о сроках годности позволяет обнаруживать продукцию, которая формально остаётся в обороте, но уже не должна продаваться.

А запрос баланса виртуального склада помогает разобраться в ситуациях, когда индивидуальные марки не возвращаются, хотя у организации имеются количественные остатки.

В результате постепенно формируется инструмент, который позволяет не только инвентаризировать маркированную продукцию, но и контролировать её состояние по сведениям ГИС МТ.

Работу над обработкой продолжаю. По мере проверки новых товарных групп и сценариев учёта буду публиковать результаты.


Предыдущая публикация:

Запрос списка кодов маркировки «Честный знак» по заданным фильтрам и списание

Документация и материалы:

Проверено на следующих конфигурациях и релизах:

  • Розница, редакция 2.3, релизы 2.3.26.24

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

См. также

Обмен с ГосИС Бюджетный учет Регламентированный учет и отчетность Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 1С:Управление холдингом Химическая промышленность Государственные, бюджетные структуры Электротехника и микроэлектроника Машиностроение и приборостроение Металлургическая промышленность Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Автоматизация раздельного учета в 1С:Бухгалтерии по ГОЗ в соответствии с 275-ФЗ. Готовое решение для учета госконтрактов, формирования отчетности и контроля исполнения. Поддержка военной приемки, НИОКР и требований Минпромторга. Профессиональный консалтинг и регулярные обновления продукта

40000 руб.

28.08.2020    575829    4208    145    

1531

Бюджетный учет Обмен с ГосИС Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Государственные, бюджетные структуры Россия Бухгалтерский учет Платные (руб)

Доработка конфигурации 1С:Бухгалтерия предприятия, редакция 3.0. реализована в виде расширения. Предназначена для ведения раздельного учета и автоматизации заполнения отчетности исполнения контрактов ГОЗ в конфигурациях 1С БП КОРП, ПРОФ, Базовая, БИТ.ФИНАНС.

62220 руб.

16.08.2019    108311    338    97    

190

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

Автоматизация учета ЕГАИС в 1С для оптовой торговли, производства и импорта алкогольной продукции. Получение и отправка ТТН, отправка акта о постановке на баланс и акта о списании. Получение остатков. Загрузка и сопоставление номенклатуры и контрагентов. Оправка в ЕГАИС отчетов о производстве и импорте.

1091 руб.

15.12.2015    188320    1401    374    

421

Оптовая торговля Розничная торговля Обмен с ГосИС Разработчик Бухгалтер Пользователь 1С:Предприятие 8 1C:Бухгалтерия Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия Бухгалтерский учет Управленческий учет Платные (руб)

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

20900 руб.

18.03.2019    128278    108    115    

211

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

Интеграция для работы 1С с ГИИС ДМДК. Государственная интегрированная информационная система в сфере контроля за оборотом драгоценных металлов, драгоценных камней и изделий из них на всех этапах этого оборота.

80000 руб.

12.04.2022    27965    216    34    

57

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

Внешняя обработка для инвентаризации кодов маркировки в системе "Честный знак". Позволяет быстро определить и списать коды маркировки проданного, испорченного, утраченного (полный перечень причин списания указан ниже)  товара, которые всё ещё числятся за организацией. Привести в соответствие остатки маркированного товара программы 1С и системы "Честного знака".

6649 руб.

09.01.2024    22035    226    30    

204

Обмен с ГосИС Разработчик 1С:Предприятие 8 1C:Бухгалтерия Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)

Универсальная конфигурация ХамелеонЗерно для взаимодействия с системой ФГИС Зерно (тестовый+рабочий контур) может использоваться для интеграции в любую конфигурацию на базе 1С, версии ПРОФ и выше. Работа через API 1.0.7 и на API 1.0.8. Для удобства реализован общий интерфейс в виде обработки, схожей с интерфейсом ФГИС Зерно, но возможностей гораздо больше, т.к. при интеграции в Вашу учетную систему, можно на основании Ваших справочников и документов, создавать соответствующие документы и справочники в системе ФГИС Зерно и наоборот.

25498 руб.

27.06.2023    9793    52    2    

25

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Обмен с ГосИС Разработчик Бухгалтер Пользователь 1С:Предприятие 8 1C:Бухгалтерия Сельское хозяйство и рыболовство Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Пищевая промышленность Россия Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная конфигурация Хамелеон Меркурий для взаимодействия с системой Меркурий (тестовый+рабочий+демо контур) может использоваться для интеграции в любую конфигурацию на базе 1С, версии ПРОФ и выше. Основное отличие от других решений - работа через веб-интерфейс и API 2.0(API 2.1). Для удобства реализован общий интерфейс в виде обработки, схожей с интерфейсом Меркурий, но возможностей гораздо больше, т.к. при интеграции в Вашу учетную систему, можно на основании Ваших справочников и документов, создавать соответствующие документы и справочники в системе Меркурий и наоборот.

11000 руб.

08.11.2017    131985    293    153    

409
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. V.Nikonov 141 07.11.26 15:24 Сейчас в теме
Срок годности можно хранить в Номенклатуре, и вычислять Процент срока годности... для широкого диапазона сроков годности - это корректнее. Тогда и пороги настроить на основании Процента срока.
2. aldar 121 07.11.26 16:55 Сейчас в теме
(1) Да 10 единиц с разными сроками с разбежкой до 1 года можно хранить процентом, но штрафы придётся платить реальные.

С 1 сентября 2026 года в России действуют автоматические штрафы за продажу просроченных товаров, подлежащих обязательной маркировке (системы «Честный знак»).
Штраф начисляется за каждую проданную единицу товара после получения запрета на продажу из системы мониторинга (ГИС МТ):
• Для индивидуальных предпринимателей (ИП): 10 000 рублей за каждую единицу.
• Для юридических лиц (организаций): 20 000 рублей за каждую единицу.

Особенности новых правил:

• Автоматическая фиксация: Нарушение выявляется системой «Честный знак» при сканировании на кассе и поступлении данных об истекшем сроке годности.
3. V.Nikonov 141 09.11.26 11:01 Сейчас в теме
(2) Я про другое. Вместо отсечки Марок по Дням годности, отсекать по проценту оставшейся годности. Для вычисления Процента требуется знать Срок Хранения в Днях для Номенклатуры...
Для примера, Сливки хранятся около 9 дней, а сметана 28 суток. Отсечка в 7 дней до окончания срока годности - слишком разная для этих продуктов.
Для отправки сообщения требуется регистрация/авторизация