Как оптимально организовать хранение и учет уникальных свойств ТМЦ в 1С, сохраняя одну карточку номенклатуры

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

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

Анализ проблемы: почему стандартного справочника недостаточно

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

Решение 1: Использование механизма характеристик номенклатуры

Это стандартный и наиболее рекомендуемый путь в системе 1С. Характеристики позволяют добавить дополнительное измерение в регистры накопления (такие как ТоварыНаСкладах или ПартииТоваровНаСкладах), не затрагивая основной справочник номенклатуры.

Разберем алгоритм действий:

  1. В карточке номенклатуры необходимо установить флаг «Использовать характеристики».
  2. Для вида номенклатуры или конкретной позиции настраивается набор свойств (например, «Цвет», «Разрешение сенсора»).
  3. При оприходовании товара в документе «Поступление товаров и услуг» для одной номенклатуры «Мышь» указываются разные характеристики.

Преимущество: В регистрах накопления остатки будут храниться в разрезе комбинации Номенклатура + Характеристика. Менеджер в любом стандартном отчете (например, «Ведомость по товарам на складах») сможет выставить фильтр по конкретному свойству характеристики, так как система умеет «пробрасывать» свойства характеристик в отчеты через механизм СКД.

Решение 2: Использование серий номенклатуры

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

Проанализируем преимущества этого подхода:

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


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |   ТоварыНаСкладахОстатки.Номенклатура,
    |   ТоварыНаСкладахОстатки.СерияНоменклатуры,
    |   ТоварыНаСкладахОстатки.КоличествоОстаток
    |ИЗ
    |   РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, ) КАК ТоварыНаСкладахОстатки
    |ГДЕ
    |   ТоварыНаСкладахОстатки.СерияНоменклатуры.Цвет = &НужныйЦвет";

Запрос.УстановитьПараметр("Период", ТекущаяДата());
Запрос.УстановитьПараметр("НужныйЦвет", Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Красный"));
Результат = Запрос.Выполнить();

Решение 3: Комбинированный учет через доп. сведения и серийные номера

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

Посмотрим, как это работает на практике:

  1. В документе поступления мы фиксируем 100 строк с одной номенклатурой, но разными серийными номерами.
  2. Для каждого серийного номера программно или вручную заполняются записи в регистре сведений.
  3. Для получения остатков используется соединение таблицы остатков регистра накопления с таблицей значений свойств регистра сведений.

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

Техническая оптимизация: как не «положить» базу

При хранении большого количества уникальных свойств важно помнить о производительности. Если мы решим записывать свойства в виде строки в регистр накопления (например, через JSON или простое перечисление в комментарии), мы потеряем возможность быстрого поиска. Индексация строковых полей большой длины невозможна.

Поэтому рекомендуем придерживаться следующих правил:

Итоги и рекомендации

Подводя итог, для конфигурации «Управление торговым предприятием» наиболее сбалансированным решением будет использование Характеристик Номенклатуры. Если же менеджеру требуется видеть в приходе именно 100 разных записей для визуального контроля каждой «мышки», следует использовать механизм Серий или Серийных номеров в сочетании с дополнительными свойствами объектов. Это обеспечит и единство аналитики по номенклатуре, и требуемую детализацию в складских остатках.

← На главную