Как исправить автоматическое создание дублей характеристик при проведении поступления в «1С:Ювелирный торговый дом»?

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

При автоматизации ювелирной розницы и оптовой торговли специалисты часто сталкиваются со специфическим поведением конфигурации «1С:Ювелирный торговый дом» (разработка компании «ЮвелирСофт» на базе «1С:Управление торговлей 10.3»). Одна из самых распространенных и неочевидных проблем — автоматическое создание множества «дублей» характеристик с уникальными штрихкодами при проведении документов «Поступление товаров и услуг» (ПТУ).

На обычных форумах по 1С пользователям часто дают универсальный совет: «У вас включен учет по сериям, зайдите в настройки параметров учета и просто отключите его». Однако для ювелирного бизнеса этот совет является фатальной ошибкой, которая может полностью заблокировать работу предприятия и привести к крупным штрафам со стороны контролирующих органов. В этой статье мы подробно разберем природу этого явления, выясним, почему программа так себя ведет, и рассмотрим правильные, безопасные способы решения проблемы.

Почему программа создает уникальные характеристики и штрихкоды?

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

  1. Уникальный вес каждого изделия. Даже если золотые кольца выполнены по одному эскизу (один артикул) и имеют одинаковый размер, их фактический вес на бирке будет отличаться на сотые доли грамма (например, 2.15 г, 2.18 г, 2.21 г). Соответственно, стоимость каждого изделия рассчитывается индивидуально.
  2. Различия в характеристиках вставок. Драгоценные камни (бриллианты, изумруды, сапфиры) имеют уникальные геммологические свойства (чистота, огранка, каратность), которые напрямую влияют на итоговую цену изделия.
  3. Интеграция с ГИИС ДМДК. Согласно действующему законодательству РФ, каждое ювелирное изделие обязано иметь свой уникальный идентификационный номер (УИН), зарегистрированный в государственной системе маркировки. Этот номер жестко связывается со штрихкодом на бирке изделия.

Таким образом, то, что в интерфейсе программы выглядит как «дубли характеристик», на самом деле является уникальными карточками для каждого конкретного физического изделия. Программа вынуждена создавать новую характеристику под каждый новый точный вес и набор вставок, а также генерировать под эту характеристику уникальный внутренний штрихкод (обычно формата EAN-13), чтобы в дальнейшем корректно сопоставить его с УИН ГИИС ДМДК при розничной продаже.

Опасность отключения серийного учета в параметрах системы

Рассмотрим совет из классических веток форумов по УТ 10.3 — перейти в меню Сервис -> Настройка учета -> Настройка параметров учета и снять флаги Использовать серии номенклатуры и Использовать серийные номера.

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

Вывод очевиден: полностью отключать серии и характеристики в ювелирном учете категорически запрещено.

Решение 1. Разделение учета по видам номенклатуры

Выясним истинную причину недовольства пользователей. Зачастую «дублирование» мешает тогда, когда оно происходит на товарах, которые не требуют индивидуального ювелирного учета (например, подарочные футляры, открытки, чистящие салфетки, дешевая бижутерия из недрагоценных металлов). Для таких товаров действительно не нужны уникальные характеристики с весом и собственные штрихкоды на каждую единицу.

Правильным решением является тонкая настройка учета на уровне Видов номенклатуры. Разберем этот процесс по шагам:

  1. Откроем справочник Виды номенклатуры.
  2. Создадим (или настроим существующий) вид номенклатуры для сопутствующих товаров, например, «Футляры и упаковка».
  3. В карточке этого вида номенклатуры снимем флаги Использовать характеристики и Использовать серии.
  4. Для видов номенклатуры, относящихся к ювелирным изделиям (например, «Ювелирные изделия из золота»), эти флаги обязательно оставляем включенными.
  5. Перенесем все сопутствующие товары в правильные виды номенклатуры.

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

Решение 2. Корректировка алгоритмов импорта накладных

Часто автоматическое создание характеристик происходит не при ручном вводе документов, а в момент загрузки электронных накладных (в форматах XML, Excel или через API) от крупных поставщиков (таких как SOKOLOV, Platina, Костромской ювелирный завод и др.).

Поставщик передает спецификацию, где для каждого изделия указан его точный вес. Обработка загрузки в «1С:Ювелирный торговый дом» ищет подходящую характеристику в базе данных. Если алгоритм поиска написан неидеально, он может не найти уже существующую в базе характеристику с точно таким же весом и размером, создавая под нее новую запись.

Чтобы исправить это на программном уровне, нам необходимо скорректировать модуль загрузки накладных. Рассмотрим пример кода, который выполняет корректный поиск существующей характеристики по ключевым реквизитам (размер, вес) перед тем, как принять решение о создании новой записи:


// Функция ищет существующую характеристику по размеру и весу
Функция НайтиХарактеристикуПоПараметрам(НоменклатураСсылка, РазмерИзделия, ВесИзделия) Экспорт
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Характеристики.Ссылка КАК Характеристика
        |ИЗ
        |   Справочник.ХарактеристикиНоменклатуры КАК Характеристики
        |ГДЕ
        |   Характеристики.Владелец = &Владелец
        |   И Характеристики.Размер = &Размер
        |   И Характеристики.ФактическийВес = &Вес
        |   И НЕ Характеристики.ПометкаУдаления";
        
    Запрос.УстановитьПараметр("Владелец", НоменклатураСсылка);
    Запрос.УстановитьПараметр("Размер",   РазмерИзделия);
    Запрос.УстановитьПараметр("Вес",      ВесИзделия);
    
    РезультатЗапроса = Запрос.Выполнить();
    Если НЕ РезультатЗапроса.Пустой() Тогда
        Выборка = РезультатЗапроса.Выбрать();
        Выборка.Следующий();
        Возврат Выборка.Характеристика;
    КонецЕсли;
    
    Возврат Неопределено;
КонецФункции

Использование подобного жесткого контроля при импорте спецификаций позволит кардинально сократить количество действительно избыточных характеристик в вашей базе данных.

Решение 3. Поиск и объединение уже созданных дублей

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

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

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

Решение 4. Отладка для программистов (поиск процедуры-инициатора)

Если вы хотите точно разобраться, какая именно процедура или бизнес-процесс в вашей конфигурации инициирует создание новой характеристики при проведении ПТУ, выполним отладку кода. Разберем по шагам алгоритм локализации проблемы:

  1. Запустим конфигуратор 1С в режиме отладки.
  2. Найдем в дереве метаданных справочник ХарактеристикиНоменклатуры.
  3. Откроем модуль объекта этого справочника и найдем предопределенную процедуру ПередЗаписью(Отказ).
  4. Поставим точку останова внутри этой процедуры на первой же строчке кода (клавиша F9).
  5. Вернемся в режим предприятия и запустим проведение проблемного документа ПТУ.
  6. В момент проведения система перенаправит нас в конфигуратор и остановит выполнение кода на нашей точке останова.
  7. Откроем окно Стек вызовов (сочетание клавиш Ctrl + Alt + C). В этом окне мы увидим всю цепочку процедур и функций, приведших к записи характеристики.

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

← На главную