Что делать, если в 1С:Розница не открываются виды упаковок GTIN?

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

При переходе на новые форматы работы с маркированной продукцией (система «Честный ЗНАК») и внедрении разрешительного режима на кассах пользователи конфигурации 1С:Розница 2.3 (а также смежных решений, таких как 1С:УНФ и 1С:УТ) часто сталкиваются со следующей проблемой. В карточке номенклатуры при нажатии на гиперссылку «Виды упаковок GTIN» открывается абсолютно пустое окно, где невозможно выбрать вид упаковки или сопоставить штрихкод. Из-за этого при оформлении продажи в РМК касса блокирует отпуск товара, выдавая ошибку отсутствия сопоставления упаковок.

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

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

Для начала разберем внутреннее устройство этого механизма. Ссылка «Виды упаковок по GTIN» ведет к записям регистра сведений РегистрСведений.ОписаниеGTINИС. Программа сопоставляет считанный штрихкод формата EAN13 или EAN8 с реестром маркируемой продукции ИС МП. Для успешной продажи на кассе в этом регистре должна существовать запись, указывающая, что данный GTIN соответствует, например, потребительской упаковке в количестве 1 штуки.

Если у конкретного пользователя эта форма открывается пустой, причина кроется в одном из следующих факторов:

  1. Сбой персонального кэша настроек формы. Платформа 1С:Предприятие сохраняет индивидуальные настройки отображения окон, ширину колонок и наложенные фильтры для каждого пользователя отдельно. Если произошел программный сбой, табличная часть на форме могла «схлопнуться» до нулевой высоты или заблокироваться невидимым отбором.
  2. Ограничения прав на уровне записей (RLS). Даже при наличии полных прав в базе, если у пользователя настроены ограничения по магазинам, складам или организациям, механизмы RLS могут неявно скрывать записи регистра сведений ОписаниеGTINИС.
  3. Проблемы кэширования конфигурации на локальном ПК. При обновлении конфигурации или изменении прошивки ККТ локальный кэш пользователя базы данных может некорректно обрабатывать новые структуры метаданных ИС МП.

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

Решение 1. Сброс настроек формы под проблемным пользователем

Это самый быстрый способ вернуть отображение элементов интерфейса. Если форма открывается, но табличная часть пуста, выполним следующие шаги прямо из-под учетной записи проблемного пользователя:

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

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

Решение 2. Очистка пользовательских настроек через администрирование

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

  1. Перейдем в раздел «Администрирование» — «Настройки пользователей и прав».
  2. Откроем гиперссылку «Персональные настройки пользователей» (или перейдем непосредственно в карточку нужного пользователя и выберем пункт «Настройки»).
  3. Выберем пункт «Очистка настроек».
  4. В появившемся списке найдем настройки, связанные с формой регистра ОписаниеGTINИС (или выберем очистку всех настроек внешнего вида для этого пользователя) и нажмем кнопку «Очистить».

Решение 3. Копирование настроек от «работающего» пользователя

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

  1. Зайдем в справочник «Пользователи» под правами администратора.
  2. Найдем пользователя, у которого ссылка «Виды упаковок GTIN» открывается корректно и данные отображаются.
  3. Нажмем кнопку «Копировать» (или клавишу F9) для создания нового пользователя на основе работающего. При этом автоматически скопируются все его группы доступа, роли и права.
  4. Для переноса персональных настроек интерфейса воспользуемся стандартной обработкой: «Администрирование» — «Настройки пользователей и прав» — «Копирование настроек». Выберем в качестве донора работающего пользователя, а в качестве получателя — нашего нового (или проблемного) пользователя. Перенесем настройки внешнего вида окон и отчетов.

Решение 4. Полная очистка локального кэша 1С

Если проблема не уходит даже после манипуляций с настройками внутри предприятия, велика вероятность сбоя локального кэша платформы на конкретном рабочем месте кассира (РМК). Выполним очистку кэша по шагам:

  1. Закроем все запущенные сеансы программы 1С:Предприятие на компьютере пользователя.
  2. Откроем окно запуска 1С и выберем в списке нашу информационную базу. Нажмем кнопку «Удалить» (при этом сама база с сервера или диска не удалится, сотрется лишь ссылка на нее).
  3. Нажмем кнопку «Добавить» и заново пропишем путь к базе данных. При повторном добавлении базы платформа создает для нее новую уникальную папку кэша, что полностью исключает влияние старых поврежденных файлов метаданных.
  4. Альтернативный вариант: вручную очистить папки по пути %userprofile%\AppData\Local\1C\1cv8 и %userprofile%\AppData\Roaming\1C\1cv8, удалив каталоги с длинными буквенно-цифровыми названиями (например, ascii-1234-...).

Решение 5. Программное заполнение видов упаковок по GTIN

Бывают ситуации, когда в карточках товаров вообще отсутствуют записи GTIN, из-за чего форма открывается пустой у абсолютно всех пользователей базы. Вводить эти данные вручную для тысяч позиций номенклатуры невозможно. Рассмотрим, как решить эту проблему программно. Для быстрого создания и привязки позиций со штрихкодами и GTIN также подойдет обработка для загрузки номенклатуры из файла выгрузки Честного знака.

Для автоматического формирования записей в регистре сведений РегистрСведений.ОписаниеGTINИС мы можем написать небольшую процедуру во внешней обработке, которая выберет все товары с заполненными штрихкодами и автоматически создаст для них привязку потребительской упаковки со значением «1 шт».

Проанализируем пример кода на языке 1С:


Процедура ЗаполнитьУпаковкиПоGTIN() Экспорт
    
    // Выбираем штрихкоды номенклатуры, для которых ведется учет маркировки
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |	Штрихкоды.Номенклатура КАК Номенклатура,
        |	Штрихкоды.Характеристика КАК Характеристика,
        |	Штрихкоды.Штрихкод КАК Штрихкод
        |ИЗ
        |	РегистрСведений.ШтрихкодыНоменклатуры КАК Штрихкоды
        |ГДЕ
        |	Штрихкоды.Номенклатура.ДоляИмпортаМаркируемойПродукции <> ЗНАЧЕНИЕ(Перечисление.ДаНет.Нет)
        |	ИЛИ Штрихкоды.Номенклатура.ВидНоменклатуры.ТипНоменклатуры В (
        |		ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МаркируемаяОбувнаяПродукция),
        |		ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МаркируемаяТабачнаяПродукция)
        |	)"; // Добавьте типы под вашу специфику маркировки
        
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    
    Пока Выборка.Следующий() Цикл
        
        // Формируем GTIN из штрихкода (дополняем нулями слева до 14 символов)
        ИсходныйШтрихкод = СокрЛП(Выборка.Штрихкод);
        GTIN = ПовторитьСимвол("0", 14 - СтрДлина(ИсходныйШтрихкод)) + ИсходныйШтрихкод;
        
        // Создаем запись в регистре описания GTIN
        МенеджерЗаписи = РегистрыСведений.ОписаниеGTINИС.СоздатьМенеджерЗаписи();
        МенеджерЗаписи.GTIN = GTIN;
        МенеджерЗаписи.Прочитать();
        
        Если Не МенеджерЗаписи.Выбран() Тогда
            МенеджерЗаписи.GTIN = GTIN;
            МенеджерЗаписи.Номенклатура = Выборка.Номенклатура;
            МенеджерЗаписи.Характеристика = Выборка.Характеристика;
            МенеджерЗаписи.ВидУпаковки = Перечисления.ВидыУпаковокИП.Потребительская;
            МенеджерЗаписи.КоличествоСодержимого = 1;
            
            Попытка
                МенеджерЗаписи.Записать();
            Исключение
                ЗаписьЖурналаРегистрации("ОшибкаЗаполненияGTIN", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
            КонецПопытки;
        КонецЕсли;
        
    КонецЦикла;
    
    ПоказатьПредупреждение(, "Заполнение регистра Описание GTIN ИС успешно завершено!");

КонецПроцедуры

Функция ПовторитьСимвол(Символ, Количество)
    Результат = "";
    Для Сч = 1 По Количество Цикл
        Результат = Результат + Символ;
    КонецЦикла;
    Возврат Результат;
КонецФункции

Этот код позволяет автоматизировать рутинную работу администратора 1С и полностью устранить проблему отсутствия упаковок для всех существующих товаров в базе. В качестве альтернативы для автоматического заполнения сведений можно использовать обработку для получения карточек товаров по GTIN и кодов марок из Честного знака.

Выводы

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

← На главную