При автоматизации ювелирной розницы и оптовой торговли специалисты часто сталкиваются со специфическим поведением конфигурации «1С:Ювелирный торговый дом» (разработка компании «ЮвелирСофт» на базе «1С:Управление торговлей 10.3»). Одна из самых распространенных и неочевидных проблем — автоматическое создание множества «дублей» характеристик с уникальными штрихкодами при проведении документов «Поступление товаров и услуг» (ПТУ).
На обычных форумах по 1С пользователям часто дают универсальный совет: «У вас включен учет по сериям, зайдите в настройки параметров учета и просто отключите его». Однако для ювелирного бизнеса этот совет является фатальной ошибкой, которая может полностью заблокировать работу предприятия и привести к крупным штрафам со стороны контролирующих органов. В этой статье мы подробно разберем природу этого явления, выясним, почему программа так себя ведет, и рассмотрим правильные, безопасные способы решения проблемы.
Для начала проанализируем ситуацию и поймем, почему поведение системы, которое кажется пользователю «багом» и «созданием дублей», на самом деле является заложенной методологией ювелирного учета. В отличие от торговли обычной одеждой или продуктами питания, в ювелирной отрасли действует строгий поштучный и посерийный учет. Это обусловлено следующими факторами:
Таким образом, то, что в интерфейсе программы выглядит как «дубли характеристик», на самом деле является уникальными карточками для каждого конкретного физического изделия. Программа вынуждена создавать новую характеристику под каждый новый точный вес и набор вставок, а также генерировать под эту характеристику уникальный внутренний штрихкод (обычно формата EAN-13), чтобы в дальнейшем корректно сопоставить его с УИН ГИИС ДМДК при розничной продаже.
Рассмотрим совет из классических веток форумов по УТ 10.3 — перейти в меню Сервис -> Настройка учета -> Настройка параметров учета и снять флаги Использовать серии номенклатуры и Использовать серийные номера.
Если мы последуем этому совету в ювелирной конфигурации, то столкнемся со следующими критическими последствиями:
Вывод очевиден: полностью отключать серии и характеристики в ювелирном учете категорически запрещено.
Выясним истинную причину недовольства пользователей. Зачастую «дублирование» мешает тогда, когда оно происходит на товарах, которые не требуют индивидуального ювелирного учета (например, подарочные футляры, открытки, чистящие салфетки, дешевая бижутерия из недрагоценных металлов). Для таких товаров действительно не нужны уникальные характеристики с весом и собственные штрихкоды на каждую единицу.
Правильным решением является тонкая настройка учета на уровне Видов номенклатуры. Разберем этот процесс по шагам:
Виды номенклатуры.Использовать характеристики и Использовать серии.После этого при проведении ПТУ для обычных сопутствующих товаров система больше не будет плодить новые характеристики и штрихкоды, а для драгоценностей сохранится корректный поштучный учет.
Часто автоматическое создание характеристик происходит не при ручном вводе документов, а в момент загрузки электронных накладных (в форматах XML, Excel или через API) от крупных поставщиков (таких как SOKOLOV, Platina, Костромской ювелирный завод и др.).
Поставщик передает спецификацию, где для каждого изделия указан его точный вес. Обработка загрузки в «1С:Ювелирный торговый дом» ищет подходящую характеристику в базе данных. Если алгоритм поиска написан неидеально, он может не найти уже существующую в базе характеристику с точно таким же весом и размером, создавая под нее новую запись.
Чтобы исправить это на программном уровне, нам необходимо скорректировать модуль загрузки накладных. Рассмотрим пример кода, который выполняет корректный поиск существующей характеристики по ключевым реквизитам (размер, вес) перед тем, как принять решение о создании новой записи:
// Функция ищет существующую характеристику по размеру и весу
Функция НайтиХарактеристикуПоПараметрам(НоменклатураСсылка, РазмерИзделия, ВесИзделия) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Характеристики.Ссылка КАК Характеристика
|ИЗ
| Справочник.ХарактеристикиНоменклатуры КАК Характеристики
|ГДЕ
| Характеристики.Владелец = &Владелец
| И Характеристики.Размер = &Размер
| И Характеристики.ФактическийВес = &Вес
| И НЕ Характеристики.ПометкаУдаления";
Запрос.УстановитьПараметр("Владелец", НоменклатураСсылка);
Запрос.УстановитьПараметр("Размер", РазмерИзделия);
Запрос.УстановитьПараметр("Вес", ВесИзделия);
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Возврат Выборка.Характеристика;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Использование подобного жесткого контроля при импорте спецификаций позволит кардинально сократить количество действительно избыточных характеристик в вашей базе данных.
Если в базе данных уже успело накопиться большое количество ошибочных дублей характеристик для немаркируемых товаров, их простое удаление невозможно, так как они уже задействованы в проведенных документах движения товаров. В этом случае нам поможет обработка «Поиск и удаление дублей».
Рассмотрим последовательность действий для безопасного слияния дубликатов:
Сервис -> Групповая обработка справочников и документов (или воспользуемся встроенной обработкой поиска дублей в более свежих релизах платформы).Характеристики номенклатуры.Объединить. Система автоматически найдет все документы (ПТУ, Отчеты о розничных продажах, Реализации), где фигурировали дубли, заменит их ссылки на выбранный оригинал и аккуратно перенесет связанные штрихкоды, после чего пометит дубликаты на удаление.Если вы хотите точно разобраться, какая именно процедура или бизнес-процесс в вашей конфигурации инициирует создание новой характеристики при проведении ПТУ, выполним отладку кода. Разберем по шагам алгоритм локализации проблемы:
ХарактеристикиНоменклатуры.ПередЗаписью(Отказ).Ctrl + Alt + C). В этом окне мы увидим всю цепочку процедур и функций, приведших к записи характеристики. Анализируя стек вызовов сверху вниз, мы сможем точно определить, какая внешняя обработка, подписка на событие или встроенный модуль проведения документа вызывает перезапись или создание новой характеристики, и внесем необходимые корректировки в алгоритм.