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