Как изменить GTIN номенклатуры в 1С:Розница 2.3, если редактирование заблокировано?

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

При работе с маркированной продукцией в конфигурации 1С:Розница 2.3 пользователи часто сталкиваются с ситуацией, когда требуется изменить ошибочно указанный или сопоставленный 14-значный код GTIN у карточки товара. Однако при попытке внести правки непосредственно в карточке номенклатуры или связанной таблице выясняется, что форма доступна только для чтения. Выясним причину такого поведения системы и подробно разберем все способы решения этой задачи.

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

Проанализируем архитектуру хранения данных подсистемы маркировки (ГИС МТ / Честный ЗНАК). Основная информация об упаковках и кодах фиксируется в специализированном регистре сведений Описание GTIN ИС. В этом регистре ключевое поле GTIN выступает в роли измерения. По правилам платформы 1С:Предприятие изменить значение измерения у существующей записи невозможно: для этого требуется физически удалить старую запись и добавить новую.

Кроме того, если данные были загружены в результате синхронизации с Национальным каталогом (GS1 / КЦ), они считаются входящей нормативно-справочной информацией от оператора маркировки и по умолчанию блокируются от прямого редактирования в типовых пользовательских формах.

Где физически хранятся GTIN в базе данных

Посмотрим на структуру конфигурации, где могут присутствовать сведения о GTIN:

  1. Регистр сведений Описание GTIN ИС — базовое хранилище связок 14-значного кода GTIN, номенклатуры, характеристики, вида упаковки (потребительская, групповая и т.д.) и коэффициента.
  2. Регистр сведений Штрихкоды номенклатуры — стандартный регистр штрихкодов. В процессах обмена с ИС МП 13-значные штрихкоды EAN-13 автоматически преобразуются в GTIN путем добавления лидирующего нуля.
  3. Справочник Штрихкоды упаковок и товаров — хранит уже считанные уникальные коды маркировки DataMatrix, в структуре которых также присутствует идентификатор GTIN.

Способ 1. Ручная корректировка в регистре сведений через служебные функции

Разберем по шагам самый быстрый способ исправления данных в пользовательском режиме при наличии полных прав доступа:

  1. Откроем главное меню программы и перейдем в раздел Функции для технического специалиста (в более ранних релизах — Все функции).
  2. В дереве объектов раскроем ветку Регистры сведений и откроем Описание GTIN ИС.
  3. Установим отбор по необходимой позиции номенклатуры или по старому неверному коду GTIN.
  4. Так как поле GTIN является измерением, выделим ошибочную строку и удалим ее клавишей Delete или через контекстное меню.
  5. Нажмем кнопку Создать и добавим новую запись: введем корректный 14-значный GTIN, укажем нужную номенклатуру (и характеристику при наличии), выберем вид упаковки (например, «Потребительская») и установим коэффициент (обычно 1).
  6. Запишем и закроем форму создания записи.

Способ 2. Исправление через штрихкоды номенклатуры

Рассмотрим альтернативный вариант, когда сопоставление формируется на основании штрихкода товара:

  1. Откроем карточку требуемой номенклатуры.
  2. На панели навигации перейдем по ссылке Штрихкоды (или в соответствующую вкладку регистра Штрихкоды номенклатуры).
  3. Удалим некорректный штрихкод и создадим запись с правильным значением (EAN-13 либо полным GTIN).
  4. Если в форме доступно действие по сопоставлению или уточнению упаковок ИС, запустим его заново для синхронизации записей с подсистемой маркировки.

Способ 3. Программная замена записи через встроенный язык

Если доступ к непосредственному редактированию регистров закрыт или требуется массово обновить данные, применим программный метод с использованием внешней обработки или консоли кода. Посмотрим на пример кода, выполняющего корректную замену записи в регистре Описание GTIN ИС:


// Удаляем старую запись по измерению
СтарыйМенеджер = РегистрыСведений.ОписаниеGTINИС.СоздатьМенеджерЗаписи();
СтарыйМенеджер.GTIN = "04600000000000";
СтарыйМенеджер.Прочитать();

Если СтарыйМенеджер.Выбран() Тогда
    СтарыйМенеджер.Удалить();
КонецЕсли;

// Создаем новую корректную запись
НовыйМенеджер = РегистрыСведений.ОписаниеGTINИС.СоздатьМенеджерЗаписи();
НовыйМенеджер.GTIN = "04609999999999";
НовыйМенеджер.Номенклатура = ВыбраннаяНоменклатура;
НовыйМенеджер.Характеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
НовыйМенеджер.ВидУпаковки = Перечисления.ВидыУпаковокИС.Потребительская;
НовыйМенеджер.Коэффициент = 1;
НовыйМенеджер.Записать(Истина);

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

Способ 4. Перепривязка в рабочем месте интеграции с ИС МП

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

  1. Перейдем в раздел Администрирование — Интеграция с ИС МП (Обувь, одежда, табак...) или в журнал обмена с маркировкой.
  2. Откроем рабочее место сопоставления номенклатуры (или Подготовка сведений в Национальный каталог).
  3. Найдем позицию, разорвем текущую связь со старой карточкой каталога и выполним сопоставление заново с позицией, содержащей правильный GTIN.

Важные нюансы и возможные последствия

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

  1. Уже поступившие маркированные остатки. Если на остатках магазина уже числятся коды маркировки, содержащие старый GTIN, простая смена кода в карточке приведет к тому, что при сканировании DataMatrix на кассе в РМК программа выдаст ошибку несоответствия номенклатуры. Такие остатки необходимо либо реализовать по старым настройкам, либо произвести их перемаркировку.
  2. Контроль уникальности. Недопустимо привязывать один и тот же GTIN к двум разным товарам без использования характеристик. При сканировании штрихкода система не сможет однозначно определить товарную позицию в чеке.
← На главную