При настройке аналитики в 1С:ERP часто возникает задача сгруппировать позиции номенклатуры по определенным критериям, например, отобрать «дорогостоящие товары» для последующего анализа заказов. На практике разработчики и консультанты сталкиваются с ограничением: одна позиция номенклатуры может принадлежать строго одному виду номенклатуры. Поэтому использовать справочник Виды номенклатуры для таких классификаций нельзя.
Разберем основные архитектурные способы решения этой задачи в «1С:ERP Управление предприятием» и определим, какой из них наиболее эффективен для аналитических отчетов.
Наиболее гибким и типовым решением для произвольной группировки товаров является подсистема Сегменты номенклатуры. В отличие от жесткой привязки к виду номенклатуры, одна позиция может одновременно входить в неограниченное количество сегментов.
Проанализируем варианты формирования сегментов:
НоменклатураСегмента (измерения: Сегмент, Номенклатура, Характеристика). Обновление записей выполняется вручную по кнопке или автоматически по расписанию регламентным заданием «Обновление сегментов номенклатуры». Это оптимальный вариант для тяжелых отчетов, так как наложение фильтра выполняется простым соединением с регистром.Разберем по шагам настройку правила для автоматического наполнения сегмента:
ЦеныНоменклатуры.Цена > 100000.Если нет необходимости в автоматическом расчете состава по формулам СКД, рассмотрим альтернативные варианты классификации:
ЦеноваяГруппа справочника Номенклатура позволяет разделить позиции по ценовым диапазонам. Однако этот реквизит заполняется пользователем вручную, и одна позиция может иметь только одну ценовую группу.Если задача заключается исключительно в формировании отчета по заказам с дорогостоящими позициями, создавать отдельный сегмент необязательно. Необходимую выборку можно построить прямо в запросе СКД отчета.
Посмотрим на пример построения запроса СКД, где соединяются табличная часть заказов и срез последних цен из регистра ЦеныНоменклатуры:
ВЫБРАТЬ
ЗаказТовары.Ссылка КАК ЗаказКлиента,
ЗаказТовары.Номенклатура КАК Номенклатура,
ЗаказТовары.Характеристика КАК Характеристика,
ЗаказТовары.Количество КАК Количество,
ЗаказТовары.Сумма КАК Сумма,
ЦеныСрез.Цена КАК ДействующаяЦена
ИЗ
Документ.ЗаказКлиента.Товары КАК ЗаказТовары
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
&Период,
ВидЦены = &ВидЦены) КАК ЦеныСрез
ПО ЗаказТовары.Номенклатура = ЦеныСрез.Номенклатура
И ЗаказТовары.Характеристика = ЦеныСрез.Характеристика
ГДЕ
ЦеныСрез.Цена >= &МинимальнаяЦена
В параметрах схемы вынесем ВидЦены и МинимальнаяЦена в пользовательские настройки, что позволит формировать отчет по дорогостоящим товарам без предварительной настройки сегментов.
РегистрСведений.НоменклатураСегмента. Помните, что состав периодического сегмента обновляется только после отработки регламентного задания или ручного перезапуска.ЦеныНоменклатуры поддерживают эту связь, поэтому при настройке связей обязательно учитывайте поле Характеристика.