6 ошибок Честного ЗНАКА в 1С:Розница: кассир не пробьёт

Почему кассир не может пробить маркированный товар
Каждый день в розничных магазинах по всей России повторяется одна и та же картина: покупатель стоит у кассы, кассир сканирует штрихкод — и касса зависает, выдаёт ошибку или вовсе отказывается проводить продажу. Очередь растёт, менеджер нервничает, покупатель уходит. Причина почти всегда одна — неправильно настроенная интеграция с системой Честный ЗНАК в 1С:Розница.
Маркировка товаров стала обязательной для десятков товарных групп: табак, алкоголь, молочная продукция, обувь, одежда, лекарства, шины, духи и многое другое. Ошибки при подключении к маркировке в 1С блокируют продажи и грозят штрафами от Роспотребнадзора. В этой статье мы детально разберём шесть самых распространённых причин, по которым касса отказывается пробивать маркированный товар, и покажем, как их устранить.
Ошибка №1: Некорректная настройка обмена с ОФД и ГИС МТ
Симптомы
Кассир сканирует код маркировки, 1С принимает его, но при попытке закрыть чек появляется сообщение: «Ошибка передачи данных в ОФД» или «Не удалось подтвердить выбытие кода маркировки». Иногда чек всё же пробивается, но в ГИС МТ (Государственная информационная система мониторинга товаров) код не выбывает — и через несколько дней приходит уведомление о нарушении.
Причина
В 1С:Розница обмен с Честным ЗНАКом происходит через ОФД (оператора фискальных данных), который выступает посредником между кассой и ГИС МТ. Если в настройках кассового оборудования или в параметрах ОФД указаны неверные данные — коды маркировки не передаются корректно.
Как исправить
Откройте раздел Администрирование → Подключаемое оборудование → Кассы ККМ. Для каждой кассы проверьте:
- Наименование ОФД и его реквизиты (ИНН, адрес сервера)
- Версию протокола обмена с ОФД (должна быть не ниже 1.2 для поддержки маркировки)
- Флаг «Передавать коды маркировки в ОФД» — он должен быть установлен
- Сертификат организации в личном кабинете ОФД — срок действия и привязку к ИНН
// Пример программной проверки настроек ОФД через встроенный язык 1С
Процедура ПроверитьНастройкиОФД(КассаККМ)
// Получаем настройки кассы из справочника
НастройкиКассы = КассаККМ.НастройкиОФД.Получить();
Если НастройкиКассы = Неопределено Тогда
Сообщить("ОШИБКА: Настройки ОФД не заданы для кассы: " + КассаККМ.Наименование);
Возврат;
КонецЕсли;
// Проверяем заполненность обязательных полей
Если НЕ ЗначениеЗаполнено(НастройкиКассы.АдресСервераОФД) Тогда
Сообщить("ОШИБКА: Не указан адрес сервера ОФД!");
КонецЕсли;
Если НЕ ЗначениеЗаполнено(НастройкиКассы.ПортОФД) Тогда
Сообщить("ОШИБКА: Не указан порт ОФД!");
КонецЕсли;
// Проверяем поддержку маркировки
Если НЕ НастройкиКассы.ПередаватьКодыМаркировки Тогда
Сообщить("ПРЕДУПРЕЖДЕНИЕ: Передача кодов маркировки отключена!");
КонецЕсли;
КонецПроцедуры
После исправления настроек обязательно выполните тестовую продажу с маркированным товаром и проверьте статус кода в личном кабинете Честного ЗНАКа через 15–30 минут.
Ошибка №2: Устаревшая версия 1С:Розница без поддержки новых товарных групп
Симптомы
При сканировании кода маркировки программа выдаёт: «Неизвестный формат кода маркировки» или «Товарная группа не поддерживается». Особенно часто это происходит после того, как Честный ЗНАК расширяет список обязательных товарных групп.
Причина
Каждая новая товарная группа требует обновления алгоритмов валидации кода DataMatrix. Если версия 1С:Розница устарела — программа просто не знает, как обработать новый формат. Например, коды молочной продукции и упакованной воды имеют иную структуру, чем коды обуви или табака.
Как исправить
Проверьте текущую версию: Справка → О программе. Минимальные версии для поддержки основных групп:
| Товарная группа | Мин. версия 1С:Розница | Дата введения |
|---|---|---|
| Обувь | 2.3.4.23 | 01.07.2020 |
| Табак | 2.3.5.12 | 01.07.2019 |
| Молочная продукция | 2.3.7.15 | 01.09.2021 |
| Упакованная вода | 2.3.9.8 | 01.03.2023 |
| БАДы | 2.3.10.5 | 01.10.2023 |
Своевременное обновление 1С — это не просто получение новых функций, это обязательное условие для легальной работы с маркированными товарами. Не откладывайте обновление: штраф за продажу немаркированного товара для юридических лиц составляет от 50 000 до 300 000 рублей.
Ошибка №3: Неверная настройка сканера штрихкодов для DataMatrix
Симптомы
Сканер физически считывает код, но в поле ввода 1С появляется набор нечитаемых символов, строка обрывается на середине, или программа вообще не реагирует на сканирование. Кассир вынужден вводить код вручную — что практически нереально, учитывая длину кода DataMatrix (до 150 символов).
Причина
Код маркировки DataMatrix содержит специальные управляющие символы — в частности, символ GS (Group Separator, ASCII 29), который разделяет части кода. Большинство бюджетных сканеров не настроены на передачу этого символа, и код «обрезается» или искажается.
Как исправить
Необходимо перепрограммировать сканер. Для большинства популярных моделей (Honeywell, Zebra, MERTECH, Datalogic) это делается сканированием специальных настроечных штрихкодов из инструкции. Ключевые настройки:
- Включить передачу символа GS (0x1D) — обязательно
- Режим передачи: USB HID Keyboard или USB COM в зависимости от подключения
- Суффикс после сканирования: Enter (0x0D)
- Таймаут между символами: минимальный (иначе 1С не успевает принять весь код)
После перенастройки сканера проверьте работу в 1С через специальный тест:
// Обработчик события сканирования штрихкода на форме кассира
// Проверяем корректность принятого кода маркировки
Процедура ПроверитьКодМаркировки(КодМаркировки)
// Минимальная длина кода DataMatrix для большинства групп
МинДлинаКода = 29;
// Проверяем наличие идентификатора применения "01" (GTIN)
Если Лев(КодМаркировки, 2) <> "01" Тогда
Сообщить("ОШИБКА: Код не начинается с идентификатора 01 (GTIN). " +
"Возможно, сканер не передаёт полный код.");
Возврат Ложь;
КонецЕсли;
// Проверяем наличие серийного номера (идентификатор "21")
ПозицияСерийного = Найти(КодМаркировки, "21");
Если ПозицияСерийного = 0 Тогда
Сообщить("ОШИБКА: Отсутствует серийный номер (идентификатор 21). " +
"Проверьте настройку передачи символа GS в сканере.");
Возврат Ложь;
КонецЕсли;
// Проверяем общую длину кода
Если СтрДлина(КодМаркировки) < МинДлинаКода Тогда
Сообщить("ПРЕДУПРЕЖДЕНИЕ: Длина кода (" + СтрДлина(КодМаркировки) +
" символов) меньше минимальной (" + МинДлинаКода + ").");
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецПроцедуры
Если самостоятельная перенастройка не помогает — обратитесь к поставщику сканера или найдите разработчика 1С, специализирующегося на торговом оборудовании.
Ошибка №4: Отсутствие или неправильная привязка GTIN в номенклатуре
Симптомы
Код маркировки сканируется корректно, сканер работает исправно, но 1С выдаёт: «Товар с данным кодом маркировки не найден в базе» или «GTIN не соответствует номенклатуре». Кассир не понимает, что делать, и просит помощи у администратора.
Причина
Код маркировки DataMatrix содержит GTIN (Global Trade Item Number) — глобальный идентификатор торговой единицы. В 1С:Розница каждая позиция номенклатуры должна быть связана с соответствующим GTIN. Если эта связь не установлена или установлена неверно — программа не может сопоставить отсканированный код с товаром в базе.
Как исправить
Перейдите в Нормативно-справочная информация → Номенклатура. Откройте карточку нужного товара и перейдите на вкладку «Штрихкоды». Здесь должен быть указан GTIN в формате EAN-14 (14 цифр). Если его нет — добавьте вручную или загрузите из ГИС МТ.
// Процедура массовой проверки привязки GTIN к номенклатуре
// Выводит список товаров без GTIN для маркированных групп
Процедура НайтиНоменклатуруБезGTIN()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ТребуетМаркировки = ИСТИНА
| И НЕ Номенклатура.Ссылка В (
| ВЫБРАТЬ
| Штрихкоды.Владелец
| ИЗ
| РегистрСведений.ШтрихкодыНоменклатуры КАК Штрихкоды
| ГДЕ
| Штрихкоды.ТипШтрихкода = ЗНАЧЕНИЕ(Перечисление.ТипыШтрихкодов.EAN14)
| )
| И НЕ Номенклатура.ПометкаУдаления
|УПОРЯДОЧИТЬ ПО
| Номенклатура.Наименование";
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Сообщить("Все маркируемые товары имеют привязанный GTIN.");
Возврат;
КонецЕсли;
// Выводим список проблемных позиций
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить("Нет GTIN: " + Выборка.Наименование +
" (" + Выборка.ВидНоменклатуры + ")");
КонецЦикла;
КонецПроцедуры
Для массовой загрузки GTIN можно использовать обмен с GS1 Russia или вручную внести данные из документов поставщика. Также GTIN указывается в УПД (универсальном передаточном документе) при приёмке маркированного товара через электронный документооборот.
Ошибка №5: Неправильная настройка прав доступа для кассира
Симптомы
Кассир видит сообщение: «Недостаточно прав для выполнения операции», «Запрещено проводить документ» или «Обращение к данным маркировки запрещено». При этом администратор с теми же действиями проблем не испытывает. Иногда кассир может пробить обычный товар, но маркированный — нет.
Причина
В 1С:Розница работа с маркировкой требует специфических прав доступа, которые не входят в стандартный профиль «Кассир». После обновления программы новые роли для работы с Честным ЗНАКом могут не добавляться автоматически в существующие профили пользователей.
Как исправить
Перейдите в Администрирование → Настройка пользователей и прав → Профили групп доступа. Найдите профиль «Кассир» (или аналогичный, используемый в вашей организации) и убедитесь, что в нём присутствуют следующие роли:
- ПродажаМаркированныхТоваров — основная роль для работы с маркировкой на кассе
- ЧтениеДанныхМаркировки — для проверки статуса кодов
- ВыбытиеКодовМаркировки — для фиксации продажи в ГИС МТ
- ИспользованиеПодключаемогоОборудования — для работы со сканером
// Программная проверка наличия необходимых ролей у пользователя-кассира
Функция ПроверитьПраваКассира(ПользовательСсылка) Экспорт
МассивНеобходимыхРолей = Новый Массив;
МассивНеобходимыхРолей.Добавить("ПродажаМаркированныхТоваров");
МассивНеобходимыхРолей.Добавить("ЧтениеДанныхМаркировки");
МассивНеобходимыхРолей.Добавить("ВыбытиеКодовМаркировки");
ОтсутствующиеРоли = Новый Массив;
Для Каждого ИмяРоли Из МассивНеобходимыхРолей Цикл
Если НЕ ПользователиИнформационнойБазы.ТекущийПользователь().Роли.Содержит(
Метаданные.Роли[ИмяРоли]) Тогда
ОтсутствующиеРоли.Добавить(ИмяРоли);
КонецЕсли;
КонецЦикла;
Если ОтсутствующиеРоли.Количество() > 0 Тогда
ТекстОшибки = "У пользователя отсутствуют роли: " +
СтрСоединить(ОтсутствующиеРоли, ", ");
Сообщить(ТекстОшибки);
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
Обратите внимание: если вы используете 1С:Бухгалтерию в связке с розницей, права доступа настраиваются отдельно в каждой базе. Подробнее о настройке прав в 1С:Бухгалтерия на Кодерион.
Ошибка №6: Проблемы с криптографией и сертификатами для подписания данных
Симптомы
Самая коварная ошибка. Внешне всё выглядит нормально: код сканируется, товар находится в базе, права настроены корректно. Но при закрытии чека появляется: «Ошибка подписания данных», «Сертификат недействителен», «КриптоПро: ошибка инициализации» или «Не удалось установить защищённое соединение с сервером ГИС МТ».
Причина
Для взаимодействия с Честным ЗНАКом требуется квалифицированная электронная подпись (КЭП) и криптографическое программное обеспечение — как правило, КриптоПро CSP. Проблемы возникают в нескольких случаях:
- Истёк срок действия сертификата КЭП (сертификаты выдаются на 1 год)
- Сертификат не установлен в хранилище «Личные» для нужного пользователя Windows
- Не установлены корневые сертификаты удостоверяющего центра
- Устаревшая версия КриптоПро CSP (нужна версия 4.0 или 5.0)
- Конфликт нескольких установленных криптопровайдеров
- Сертификат привязан к другому ИНН или ОГРН
Пошаговая диагностика
- Откройте КриптоПро CSP → Сервис → Просмотр сертификатов в контейнере — убедитесь, что контейнер доступен и сертификат не истёк.
- Проверьте установку сертификата: certmgr.msc → Личные → Сертификаты. Сертификат должен отображаться без красного крестика.
- Установите цепочку доверия: скачайте и установите корневые сертификаты вашего УЦ.
- Проверьте версию КриптоПро: Панель управления → КриптоПро CSP → Общие.
Найдите специалиста для решения этой задачи на koderion.ru