При работе в конфигурациях 1С:Розница 2.3 и 1С:УНФ 3.0 многие технические специалисты сталкиваются со специфической проблемой: при попытке продать маркированный товар через интерфейс РМК (Рабочее место кассира) в режиме распределения продаж между двумя и более организациями, система выдает ошибку. Суть ошибки заключается в том, что при сканировании кода маркировки программа обращается в систему «Честный ЗНАК» (ГИС МТ) от имени «неправильной» организации. В результате сервер возвращает ответ: «Товар не ваш» или «Код маркировки не принадлежит отправителю». Это происходит даже в тех случаях, когда обычный (немаркированный) товар распределяется по организациям корректно. Для временного обхода этой проблемы без изменения кода можно применить обработку для переноса даты проверки владельца кода маркировки.
В данной статье мы подробно разберем причины возникновения этой ситуации, проанализируем механизмы работы разрешительного режима и предложим несколько вариантов решения проблемы — от административных настроек до программной доработки.
Выясним причину, почему автоматическое распределение «спотыкается» именно на маркировке. С введением разрешительного режима (Check-up) в 2024 году, проверка кода маркировки должна выполняться до момента добавления товара в чек. В этот момент программа делает запрос через API к серверам ГИС МТ.
Основная сложность заключается в том, что для выполнения запроса 1С должна передать токен авторизации конкретной организации. В стандартной логике РМК, пока товар не идентифицирован полностью и не сопоставлен с конкретным складом, система использует параметры организации, которая установлена для данного рабочего места или магазина «по умолчанию». Если товар фактически принадлежит Организации №2, а проверка инициируется от имени Организации №1, «Честный ЗНАК» отклоняет запрос, так как организация пытается проверить статус чужого имущества.
Рассмотрим первый и самый простой способ решения, который не требует вмешательства в программный код. Часто корень проблемы кроется в настройках НСИ. Проанализируем ситуацию: если в настройках магазина установлен «Склад по умолчанию», программа при открытии РМК всегда ориентируется на него.
Посмотрим на техническую сторону взаимодействия с системой «Честный ЗНАК». Для работы разрешительного режима используется ТС ПИОТ (Транспортный сервис промышленного интернета вещей). Стандартная установка предполагает работу с одним ИНН. Однако, если на одном рабочем месте работают две организации, нам нужно обеспечить доступ к обоим токенам.
Разберем возможные схемы настройки:
Обмен с ИС МП — Организации необходимо для каждой фирмы четко прописать свой токен авторизации и сертификат. Проверьте, чтобы в поле «Вариант работы» стоял «Локальный модуль», и пути к сертификатам не пересекались.Если типовые настройки не помогают, и программа продолжает «подсовывать» неверный ИНН при сканировании, потребуется создание расширения. Нам необходимо вмешаться в процесс обработки сканирования, чтобы система определяла владельца товара до того, как будет отправлен запрос в ГИС МТ.
Проанализируем логику работы: при сканировании кода DataMatrix, система получает GTIN. Мы можем использовать этот идентификатор для поиска остатков по регистрам. Найдя организацию, у которой данный товар числится на остатке, мы можем принудительно установить контекст организации для процедуры проверки.
Пример фрагмента кода, который можно использовать в расширении для перехвата события сканирования:
&Вместо("ПередОбработкойСканирования")
Процедура Расш_ПередОбработкойСканирования(ДанныеСканирования)
// Получаем GTIN из кода маркировки
ДанныеКода = МаркировкаОбъекты.РазобратьКодМаркировки(ДанныеСканирования.Штрихкод);
ТекущийGTIN = ДанныеКода.GTIN;
// Пытаемся найти организацию-владельца по остаткам на складах магазина
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ТоварыНаСкладахОстатки.Организация КАК Организация
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
|ГДЕ
| ТоварыНаСкладахОстатки.Номенклатура.GTIN = >IN";
Запрос.УстановитьПараметр("GTIN", ТекущийGTIN);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
// Подменяем организацию в параметрах сессии РМК для текущей проверки
ДанныеСканирования.Вставить("ОрганизацияДляПроверки", Выборка.Организация);
КонецЕсли;
ПродолжитьВызов(ДанныеСканирования);
КонецПроцедуры
Этот подход позволяет динамически менять организацию запроса в зависимости от того, чей товар оказался в руках у кассира.
Разберем ситуацию, когда касса работает через веб-сервер. В этом случае отладка кода затруднена. Специалисты рекомендуют проверять логи обмена с ИС МП. В них можно четко увидеть, какой ИНН передается в заголовке запроса и какой идентификатор токена используется. Если вы видите, что для товара Организации №2 используется ИНН Организации №1 — проблема на уровне сопоставления объектов Организация и НастройкиИнтеграцииИСМП в базе данных.
Важно отметить, что ветка 2.3 постепенно уходит с приоритетной поддержки. Разработчики фирмы 1С заявляют, что в новой архитектуре Розница 3.0 (на базе УНФ) механизмы разрешительного режима при многофирменном учете реализованы более глубоко. В версии 3.0 система лучше справляется с определением контекста организации через механизм «Склады в табличной части», что минимизирует количество ошибок при проверке маркировки. Если вы планируете переход на актуальную версию программы, для миграции накопленной информации подойдет раздел с решениями для переноса в Розницу.
Подведем итог: Для исправления ошибки «Товар не ваш» в 1С:Розница 2.3 необходимо в первую очередь убедиться в жесткой привязке складов к организациям и правильной настройке распределения продаж. Если это не помогает — настройте раздельные экземпляры ПИОТ для каждой организации или воспользуйтесь механизмом расширений для уточнения организации в момент сканирования кода. Для организации продаж от имени нескольких юридических лиц на одном рабочем месте также может пригодиться расширение для работы с несколькими кассами ККМ в РМК.