Перейти к содержимому
Tez Base

Остатки кодов маркировки в 1С: почему их нет в регистрах и как их посчитать

· Опубликовано:

Интеграции и обмены

Готового остатка по коду маркировки в типовой 1С нет. В Управлении торговлей 11.5 ни один регистр накопления не ведёт учёт в разрезе кода: код хранится элементом справочника ШтрихкодыУпаковокТоваров, а документы ссылаются на него из табличной части ШтрихкодыУпаковок. Какие коды сейчас лежат на складе, приходится вычислять самим, по последнему проведённому движению каждого кода.

Структуру мы смотрели по выгрузке метаданных типовой УТ 11.5.22.67, расчёт по последнему движению гоняли на стенде.

Где в УТ 11.5 хранится код маркировки

Сам код живёт в справочнике ШтрихкодыУпаковокТоваров: значение штрихкода, тип упаковки, номенклатура с характеристикой и серией, количество, а у групповой упаковки ещё и вложенные коды в табличной части.

Документ знает о коде через табличную часть ШтрихкодыУпаковок: в каждой строке реквизит ШтрихкодУпаковки со ссылкой на элемент справочника. В 11.5.22.67 эту табличную часть несут 34 вида документов.

Регистра накопления с измерением по коду мы не нашли, перебрав все регистры конфигурации. Код встречается только в регистрах сведений (пул кодов СУЗ, коды к передаче между организациями, результаты проверки кассой, вскрытые упаковки), и остатка ни один из них не ведёт. ДвиженияСерийТоваров считается по серии, до кода он не доходит.

Что типовая уже умеет и почему это не остаток

Всё, что есть в типовой, работает либо в момент операции с кодом, либо со стороны ГИС МТ:

  • “Список КИ на балансе” в документе ОтчетИСМП забирает из ГИС МТ архив с кодами, а отчёт СписокКИНаБалансеИСМП только перечитывает его. С остатками 1С он ничего не сопоставляет.
  • Регистр ОперацииПроверкиКМ хранит проверки разрешительного режима в момент пробития чека.
  • Модуль СверкаКодовМаркировкиИСМП сверяет коды поступления с УПД поставщика и готовит ТОРГ-2.
  • Четыре регламентных задания ИСМП обмениваются данными с ИС МП, загружают сведения об отклонениях и чистят коды.

Выходит, что код, который лежит на полке и никуда не движется, типовая не проверяет совсем. Касса спросит о нём систему, только когда товар начнут продавать.

Как посчитать остаток по коду

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

Механика на двух документах, приобретении и реализации:

ВЫБРАТЬ
	ШК.ЗначениеШтрихкода КАК Код,
	ШК.Номенклатура КАК Номенклатура,
	Т.Ссылка.Дата КАК Дата,
	1 КАК Направление
ИЗ
	Документ.ПриобретениеТоваровУслуг.ШтрихкодыУпаковок КАК Т
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ШтрихкодыУпаковокТоваров КАК ШК
		ПО Т.ШтрихкодУпаковки = ШК.Ссылка
ГДЕ
	Т.Ссылка.Проведен

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ШК.ЗначениеШтрихкода,
	ШК.Номенклатура,
	Т.Ссылка.Дата,
	-1
ИЗ
	Документ.РеализацияТоваровУслуг.ШтрихкодыУпаковок КАК Т
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ШтрихкодыУпаковокТоваров КАК ШК
		ПО Т.ШтрихкодУпаковки = ШК.Ссылка
ГДЕ
	Т.Ссылка.Проведен

УПОРЯДОЧИТЬ ПО
	Код,
	Дата,
	Направление УБЫВ

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

Дальше обход выборки оставляет по каждому коду последнее движение:

НаОстатке = Новый Массив;
ТекущийКод = Неопределено;
Последнее = 0;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
	Если Выборка.Код <> ТекущийКод Тогда
		Если Последнее = 1 Тогда
			НаОстатке.Добавить(ТекущийКод);
		КонецЕсли;
		ТекущийКод = Выборка.Код;
	КонецЕсли;
	Последнее = Выборка.Направление;
КонецЦикла;
Если Последнее = 1 Тогда
	НаОстатке.Добавить(ТекущийКод);
КонецЕсли;

Если учёт идёт по нескольким организациям, в условие каждой части добавьте отбор по организации документа.

Какие документы считать приходом, а какие расходом

Два документа из примера это только начало. Из 34 видов документов с кодами в УТ 11.5.22 направление очевидно у 18. Остальные 16 либо не меняют владельца кода, либо меняют его так, что без разбора не угадаешь.

НаправлениеДокументы в УТ 11.5
приходприобретение товаров, приёмка и маркировка ИСМП, возврат от клиента, приходный ордер, прочее оприходование, поступление от хранителя, приёмка на хранение
расходреализация, отгрузка ИСМП, вывод из оборота, списание кодов маркировки, возврат поставщику, внутреннее потребление, расходный ордер, передача хранителю и между организациями, отгрузка с хранения
владельца не меняютперемещение, отбор и размещение: для сверки с ГИС МТ важно, ваш код или нет, а склад значения не имеет
требуют разборакорректировки приобретения и реализации, акты о расхождениях, сборка, возврат между организациями, документы ВЕТИС и ЕГАИС с кодами

Корректировки владение кодом меняют по-настоящему, и если в базе их много, остаток без них будет неполным. В Бухгалтерии предприятия 3.0 набор свой: коды несут поступление и реализация, и корректировки поступления и реализации так же меняют владельца. Поэтому список направлений между конфигурациями вслепую не переносят: сначала перебор документов с табличной частью ШтрихкодыУпаковок через Метаданные.Документы, потом решение по каждому виду.

Где такой расчёт ошибается

  • Непроведённые документы в выборку не попадают. Код, пришедший документом, который забыли провести, числится отсутствующим.
  • Документы без направления выпадают молча, и ваши собственные с табличной частью кодов тоже. Хороший расчёт перечисляет виды, которые не смог отнести ни к приходу, ни к расходу, иначе неполный остаток выглядит полным.
  • Склады в правиле последнего движения не участвуют. Ответ получается на вопрос “наш код или нет”, для складского учёта этого мало.

Вторая половина сверки: список кодов из ГИС МТ

Остаток по документам говорит, что лежит у вас. Что Честный Знак числит за организацией, отвечает список кодов владельца, его отдаёт метод cises/search в True API. Три детали, на которых спотыкаются чаще всего:

  1. Статус фильтруется массивом states. Поля status, cisStatus и statuses сервис принимает без ошибки и просто не применяет: в ответ приходят коды не того статуса, который просили. “В обороте” это INTRODUCED, выбывшие приходят как RETIRED.
  2. Страницы листаются курсором. На следующей странице в pagination передают lastEmissionDate и sgtin последней записи предыдущей, размер страницы до 1 000, конец по isLastPage. Параметры limit, page и offset не работают, общего числа кодов в ответе нет.
  3. Товарная группа обязательна и передаётся только в теле. Имена групп берут из поля product_group_info токена авторизации: числовой код из справочника видов продукции сервис отклоняет.

Тело запроса для первой страницы:

{
  "filter": {
    "productGroups": ["gadgets"],
    "ownerInn": "ИНН организации",
    "states": [{"status": "INTRODUCED"}]
  },
  "pagination": {"perPage": 1000}
}

Ответ 429 значит, что сервис просит сбавить темп: нужна пауза между вызовами и повтор с растущей задержкой. И про ключ: если отдать его типовому слою отправки структурой, а не строкой, сервис ответит “Токен не действителен”, тем же текстом, что на просроченный.

Сопоставить два списка, разложить расхождения по типам и открыть документ, которым код попал на остаток, умеет наша обработка аудита кодов маркировки. Она работает с российской ГИС МТ, берёт ключ из типовых настроек обмена с ИС МП и ничего не пишет ни в данные базы, ни в Честный Знак. Файл и описание лежат в карточке на Инфостарте, цена 10 SM.

Могу починить это за вас

Россия, система "Честный Знак": смартфоны, планшеты, ноутбуки и фототехнику с 2026 года нельзя ввести в оборот без маркировки. Берём на себя цифровую часть в 1С: регистрацию, каталог, заказ кодов, ввод в оборот и отгрузку на маркетплейсы. Для Казахстана своя система, ИС МПТ, про неё ниже.

Стоимость
700 000 - 1 000 000 ₸ТЗ и внедрение под ключ, без налогов; доработки сверх типового решения - единым счётом по факту оценки ассортимента

Рано писать? Измерьте сами

Какие коды маркировки на складе уже нельзя продать

Открыть обработку

INFOSTART TECH EVENT 2026: конференция для 1с-специалистов. если собираетесь, регистрируйтесь по нашей ссылке. Регистрация →

Читайте также

Регистрация изменений в плане обмена 1С: почему правка не встала в очередь

Между записью объекта и строкой в таблице изменений узла в БСП стоят пять ступеней: подписка на событие, включённая синхронизация, выборочная регистрация, авторегистрация и правила регистрации. Разбираем каждую по коду типовой УТ 11.5.22, запрос к очереди узла, замер на стенде и границу того, что показывает файл правил.

Регламентное задание 1С не выполняется: порядок проверки и скрипт для консоли

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

Обмен 1С с внешним сервисом падает по таймауту: сервис занят или лежит, и когда повтор создаёт дубль

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