В практике работы с 1С:Управление нашей фирмой (УНФ) часто возникает ситуация, когда в базе данных на одну позицию номенклатуры заведено несколько штрихкодов. Это может быть связано с тем, что товар поступает от разных производителей, в разных упаковках или из разных партий, но учет изначально велся «скопом». Однако современные требования, особенно при работе с маркетплейсами (Wildberries, Ozon, Яндекс Маркет), диктуют правило: один штрихкод — одна карточка товара. Разберем подробно, как корректно разделить номенклатуру в 1С:УНФ, сохранив данные и обеспечив правильный учет остатков.
В типовом функционале 1С:УНФ не предусмотрена кнопка «Размножить номенклатуру по штрихкодам». Штрихкоды хранятся не внутри самой карточки товара, а в специальном регистре сведений ШтрихкодыНоменклатуры. В этом регистре штрихкод привязан к «Владельцу» — ссылке на объект номенклатуры. Если мы просто создадим новые карточки вручную, нам придется вручную перебивать штрихкоды, что чревато ошибками, а старые записи в регистре будут конфликтовать с новыми.
Рассмотрим наиболее эффективный способ решения задачи — написание небольшой обработки или использование консоли запросов с возможностью обработки результатов. Проанализируем основные этапы этого процесса.
Шаг 1: Поиск «проблемных» позиций
Для начала нам необходимо выявить товары, у которых в регистре сведений ШтрихкодыНоменклатуры числится более одной записи. Проанализируем структуру запроса, который поможет нам собрать такие данные:
ВЫБРАТЬ
Штрихкоды.Владелец КАК Номенклатура,
КОЛИЧЕСТВО(Штрихкоды.Штрихкод) КАК КолШК
ИЗ
РегистрСведений.ШтрихкодыНоменклатуры КАК Штрихкоды
ГДЕ
Штрихкоды.Владелец ССЫЛКА Справочник.Номенклатура
СГРУППИРОВАТЬ ПО
Штрихкоды.Владелец
ИМЕЮЩИЕ
КОЛИЧЕСТВО(Штрихкоды.Штрихкод) > 1
Шаг 2: Создание новых карточек (дублей)
Для каждой найденной позиции (начиная со второго штрихкода) нам нужно создать новую карточку номенклатуры. Чтобы сохранить все свойства (категорию, единицы измерения, счета учета), воспользуемся методом Скопировать(). Рассмотрим пример кода:
// Предположим, Выборка - это результат запроса по конкретной номенклатуре
Пока ВыборкаШтрихкодов.Следующий() Цикл
Если НомерШК > 1 Тогда // Пропускаем первый, оставляем его у текущей номенклатуры
НовыйОбъект = ИсхНоменклатура.Скопировать();
НовыйОбъект.Наименование = ИсхНоменклатура.Наименование + " (" + ВыборкаШтрихкодов.Штрихкод + ")";
НовыйОбъект.Записать();
// Теперь нужно перепривязать штрихкод к новой карточке
МенеджерЗаписи = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Штрихкод = ВыборкаШтрихкодов.Штрихкод;
МенеджерЗаписи.Прочитать();
Если МенеджерЗаписи.Выбран() Тогда
МенеджерЗаписи.Владелец = НовыйОбъект.Ссылка;
МенеджерЗаписи.Записать();
КонецЕсли;
КонецЕсли;
НомерШК = НомерШК + 1;
КонецЦикла;
Важно понимать, что простое создание новых карточек не переносит на них физический товар, числящийся на складе. После программного разделения все остатки «зависнут» на первой (исходной) номенклатуре. Выясним, как правильно распределить запасы:
Инвентаризация запасов, фиксируем фактическое наличие товаров под конкретными штрихкодами.Пересортица запасов. В нем в качестве «Списываемого товара» указываем исходную номенклатуру, а в качестве «Приходуемого товара» — нашу новую карточку. Это позволит сохранить себестоимость партии.Проанализируем ситуацию с присоединенными файлами. Картинки в 1С:УНФ хранятся в отдельном справочнике НоменклатураПрисоединенныеФайлы. При использовании метода Скопировать() для номенклатуры, сами файлы не копируются автоматически в смысле владения. Нам потребуется программно найти все записи в справочнике файлов, где владельцем является старая номенклатура, и создать аналогичные записи для новых карточек, чтобы товар не остался «пустым» в прайс-листах и на витринах магазинов.
Создание большого количества одинаковых по наименованию товаров несет в себе определенные риски. Рассмотрим их подробнее:
Риск 1: Путаница при подборе. Когда менеджер будет вводить название товара в заказе, система выдаст список из трех абсолютно идентичных позиций. Чтобы этого избежать, рекомендуется программно добавлять в НаименованиеДляПечати или в рабочее наименование уникальный идентификатор (например, последние 4 цифры штрихкода или артикул).
Риск 2: Ошибки в отчетах. Группировка по номенклатуре в отчетах по продажам теперь будет показывать данные по каждой позиции отдельно. Чтобы увидеть общую картину по модели товара, вам придется использовать механизм категорий номенклатуры или дополнительные реквизиты.
Если бизнес-процесс позволяет, лучше не плодить номенклатуру-дубли, а включить использование характеристик. В 1С:УНФ штрихкод может быть привязан к связке Номенклатура + Характеристика. Это позволит:
Этот путь считается архитектурно правильным в системе 1С, так как он не засоряет справочник номенклатуры и позволяет видеть остатки в разрезе одного объекта учета, но с детализацией по свойствам.
Подводя итог, разделим наши действия на четкие этапы: сначала определяем, действительно ли нужны новые карточки или достаточно характеристик; затем программно копируем объекты и перепривязываем записи в регистре ШтрихкодыНоменклатуры; и в завершение — выравниваем складские остатки документами пересортицы. Такой комплексный подход гарантирует чистоту базы и корректность последующей выгрузки на маркетплейсы.