Как исправить ошибку дублирования кодов товаров при выгрузке из 1С:УТ 11.2 в ККМ Frontol Offline

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При работе с торговым оборудованием в режиме Offline пользователи 1С:Управление торговлей 11.2 часто сталкиваются с критической ошибкой: «Выгрузить товары не удалось: Описание ошибок для устройства Фронтол. Выгрузка невозможно! Дублируются следующие коды товаров: [номер кода]». Эта проблема блокирует обновление кассовой базы и может привести к остановке розничных продаж. Рассмотрим подробно причины возникновения этой ситуации и разберем пошаговые методы её решения.

Почему возникает дублирование кодов при обмене?

Для начала проанализируем механизм работы 1С с оборудованием Offline. В отличие от обычной продажи, где идентификация идет по штрихкоду или ссылке на объект, ККМ Frontol требует уникальный числовой идентификатор — PLU (Price Look-Up). В системе 1С эти идентификаторы хранятся в специализированном регистре сведений КодыТоваровПодключаемогоОборудованияOffline.

Ошибка дублирования возникает в следующих случаях:

  1. Сбой счетчика кодов: Программа пытается присвоить новой позиции код, который уже занят в регистре другой номенклатурой.
  2. Конфликт диапазонов: Смешивание кодов весовых и штучных товаров.
  3. Мусорные записи: В регистре остались ссылки на удаленную номенклатуру или характеристики, которые система продолжает учитывать.
  4. Учет по характеристикам: Если одна номенклатура имеет несколько характеристик, но настройки обмена не учитывают их уникальность, программа может попытаться выгрузить их под одним кодом.

Метод 1: Очистка и переинициализация регистра кодов

Самый быстрый и эффективный способ решить проблему «здесь и сейчас» — полная очистка регистра сведений, отвечающего за хранение кодов для ККМ. Разберем этот процесс по шагам:

  1. Перейдем в режим «Все функции» (или «Функции для технического специалиста») и найдем регистр сведений КодыТоваровПодключаемогоОборудованияOffline.
  2. Проанализируем записи. Если мы видим, что одной и той же номенклатуре присвоено несколько разных кодов или, наоборот, разным товарам один код, регистр необходимо очистить.
  3. Удалим записи регистра. Можно сделать это вручную (если позиций немного) или программно.
  4. После очистки перейдем в раздел «Продажи» — «Обмен с подключаемым оборудованием Offline».
  5. Удалим текущее правило обмена и создадим его заново, выставив необходимые фильтры по складам и группам товаров.
  6. Нажмем кнопку «Переназначить коды». Программа заново пронумерует всю номенклатуру, попавшую в отбор, начиная с начального номера, указанного в настройках оборудования.

Важно: При полной очистке регистра и переназначении кодов необходимо обязательно выполнить полную загрузку справочника товаров в самом Frontol, так как старые коды в кассе больше не будут соответствовать новым кодам в 1С.

Метод 2: Разделение диапазонов весового и штучного товара

Выясним причину конфликта между весовыми и штучными позициями. В торговле принято использовать определенные стандарты для кодирования. Рассмотрим типичную логику системы:

Для весового товара коды обычно ограничиваются диапазоном до 100 000. Это связано с форматом этикеток и штрихкодов EAN-13, где под код товара выделяется всего 5 знаков (префикс 2x + 5 знаков кода + 5 знаков веса + контрольное число).

Для штучного товара рекомендуется использовать диапазон свыше 100 000. Если в настройках 1С начальный код установлен как «1», а весовых товаров много, система неизбежно начнет пересекать эти диапазоны. Проверим настройки:

  1. Зайдем в настройки подключаемого оборудования (ККМ Offline).
  2. Проверим параметр «Начальный код». Установим его значение, например, 100 001 для штучных товаров, если весовые занимают нижний диапазон.
  3. Проверим справочник номенклатуры. Если у весового товара в карточке вручную забит код, превышающий лимиты весов, это также вызовет ошибку при формировании файла обмена.

Метод 3: Исправление программной проверки на дубли (для разработчиков)

Иногда проблема кроется в ошибке самого релиза 1С:УТ 11.2. Проанализируем ситуацию: программа при выгрузке делает проверку всей таблицы товаров на уникальность кодов. Если в таблицу попали дубли (например, из-за ошибки в запросе формирования данных), выгрузка прерывается.

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


// Пример логики проверки дублей перед выгрузкой
ТаблицаТоваров.Загрузить(РезультатЗапроса.Выгрузить());
ТаблицаПроверки = ТаблицаТоваров.Скопировать();
ТаблицаПроверки.Свернуть("Код", "Количество"); // Где Количество - вспомогательная колонка

Для Каждого СтрокаПроверки Из ТаблицаПроверки Цикл
    Если СтрокаПроверки.Количество > 1 Тогда
        ТекстОшибки = "Выгрузка невозможна! Дублируются следующие коды товаров: " + СтрокаПроверки.Код;
        ВызватьИсключение ТекстОшибки;
    КонецЕсли;
КонецЦикла;

Если вы обнаружили, что 1С «видит» дубли там, где их нет в основной базе, проверьте, не попадают ли в выгрузку одновременно и сам товар, и его характеристики как отдельные записи с одинаковым PLU. В коде конфигурации следует убедиться, что при формировании запроса учитывается связка Номенклатура + Характеристика как уникальный ключ для получения кода из регистра.

Диагностика с помощью консоли запросов

Чтобы быстро найти конкретные позиции-виновники, не дожидаясь ошибки выгрузки, проанализируем состояние регистра с помощью простого запроса. Это поможет выявить «битые» ссылки или дублирующиеся записи.


ВЫБРАТЬ
    КодыТоваров.Код КАК Код,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ КодыТоваров.Номенклатура) КАК КоличествоНоменклатуры
ИЗ
    РегистрСведений.КодыТоваровПодключаемогоОборудованияOffline КАК КодыТоваров
СГРУППИРОВАТЬ ПО
    КодыТоваров.Код
ИМЕЮЩИЕ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ КодыТоваров.Номенклатура) > 1

Этот запрос покажет все коды, которые присвоены более чем одной номенклатурной позиции. Если результат запроса не пустой — это и есть причина ошибки. Вам останется лишь найти эти позиции в регистре и исправить их вручную или через переназначение кодов.

Дополнительные рекомендации

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

Подводя итог, можно сказать, что в 90% случаев проблема решается полной очисткой регистра сведений и повторным переназначением кодов с учетом правильных диапазонов для весовой продукции. Регулярная профилактика базы и контроль за уникальностью кодов в регистре позволят избежать подобных сбоев в будущем.

← На главную