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

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

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

Архитектурный подход: использование механизма характеристик

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

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

  1. Справочник характеристик. Создадим подчиненный справочник (например, ХарактеристикиНоменклатуры). Владельцем этого справочника выступает справочник Номенклатура (или справочник категорий/видов номенклатуры, если характеристики являются общими для группы товаров).
  2. Табличные части документов. Во всех документах, регистрирующих движение материальных ценностей (поступление, реализация, перемещение, списание, инвентаризация), табличная часть должна содержать два ключевых реквизита: ссылку на Номенклатура и ссылку на Характеристика (с типом СправочникСсылка.ХарактеристикиНоменклатуры).
  3. Измерения регистров накопления. Чтобы система могла формировать остатки не просто по названию товара, а по конкретному цвету, в регистр остатков (например, ТоварыНаСкладах или ОстаткиТоваров) обязательно добавляется измерение Характеристика.

Организация хранения свойств через планы видов характеристик

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

Для масштабируемой реализации разберем правильную схему на основе специальных объектов платформы:

  1. Создаем объект метаданных План видов характеристик (например, СвойстваОбъектов). В нем перечисляются сами параметры: «Цвет», «Размер», «Материал». Тип значения характеристик настраивается как ссылка на дополнительный справочник ЗначенияСвойств.
  2. Создаем непериодический регистр сведений (например, ЗначенияСвойствХарактеристик) с измерениями Характеристика, Свойство и ресурсом Значение.
  3. В модуле объекта справочника ХарактеристикиНоменклатуры перед записью программно формируем реквизит Наименование путем сцепления названий свойств и их значений. Это исключает дублирование записей пользователями и гарантирует одинаковый формат отображения позиций в печатных формах документов.

Общие или индивидуальные характеристики: что выбрать

Рассмотрим два варианта подчинения характеристик:

  1. Индивидуальные характеристики. Справочник жестко подчинен справочнику Номенклатура. Это удобно, если свойства уникальны для каждого товара. Минус решения — если у десятков разных ручек одинаковые цвета («Красный», «Синий»), в базе создается дублирующее количество записей в таблице характеристик.
  2. Общие характеристики (для вида номенклатуры). Справочник характеристик подчиняется справочнику ВидыНоменклатуры. В этом случае мы один раз заводим цвета для категории «Канцелярия», и они становятся доступны для выбора в любых товарах этой категории. Это существенно экономит дисковое пространство и ускоряет работу базы данных.

Отражение движений в документах и регистрах

Посмотрим на практический пример оформления хозяйственных операций. При поступлении товаров на склад оператор заполняет документ ПоступлениеТоваров строками следующего вида:

  1. Товар: Ручка шариковая | Характеристика: Желтая | Количество: 10 шт.
  2. Товар: Ручка шариковая | Характеристика: Красная | Количество: 15 шт.
  3. Товар: Ручка шариковая | Характеристика: Синяя | Количество: 20 шт.

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

Для контроля остатков при проведении документа списания запрос к виртуальной таблице Остатки формируется с обязательным учетом характеристики:


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

Если выполнять контроль остатков без учета измерения Характеристика, программа позволит продать красную ручку вместо синей, что приведет к пересорту на складе.

Ценообразование и розничная продажа

Обратим внимание на реквизит ЦенаРозничная в исходном справочнике. Если цена товара едина вне зависимости от цвета, ее можно оставить реквизитом номенклатуры. Однако, если стоимость различается в зависимости от свойств (например, ручка с золотым корпусом стоит дороже стандартной), хранить цену в справочнике товаров нельзя.

Для корректного ценообразования создается периодический регистр сведений ЦеныНоменклатуры с измерениями Номенклатура, Характеристика и ресурсом Цена. Также для автоматизации розничной торговли комбинации товара и характеристики назначается собственный штрихкод в регистре сведений ШтрихкодыНоменклатуры, что позволяет кассиру сканировать товар и безошибочно определять нужную позицию в чеке.

← На главную