Как в 1С:ERP выделить группу дорогостоящих товаров и сформировать по ним отчет?

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

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

Разберем основные архитектурные способы решения этой задачи в «1С:ERP Управление предприятием» и определим, какой из них наиболее эффективен для аналитических отчетов.

Вариант 1. Использование механизма сегментов номенклатуры

Наиболее гибким и типовым решением для произвольной группировки товаров является подсистема Сегменты номенклатуры. В отличие от жесткой привязки к виду номенклатуры, одна позиция может одновременно входить в неограниченное количество сегментов.

Проанализируем варианты формирования сегментов:

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

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

  1. Перейдем в карточку создания сегмента и выберем способ формирования Периодически обновлять.
  2. Откроем форму настройки правил (схему компоновки данных) и свяжем данные номенклатуры со срезом последних регистра сведений ЦеныНоменклатуры.
  3. Установим отбор по нужному Виду цены и зададим пороговое значение, например: Цена > 100000.
  4. После сохранения схемы нажмем кнопку формирования состава или настроим регламентное задание.

Вариант 2. Использование ценовых групп или дополнительных реквизитов

Если нет необходимости в автоматическом расчете состава по формулам СКД, рассмотрим альтернативные варианты классификации:

  1. Ценовые группы: Реквизит ЦеноваяГруппа справочника Номенклатура позволяет разделить позиции по ценовым диапазонам. Однако этот реквизит заполняется пользователем вручную, и одна позиция может иметь только одну ценовую группу.
  2. Дополнительные реквизиты: Если в системе включена опция использования дополнительных реквизитов и сведений, в карточку номенклатуры можно добавить признак (например, переключатель «Дорогостоящий товар»). Данный подход также требует ручной актуализации данных пользователями при изменении цен.

Вариант 3. Реализация отбора напрямую в схеме компоновки данных (СКД) отчета

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

Посмотрим на пример построения запроса СКД, где соединяются табличная часть заказов и срез последних цен из регистра ЦеныНоменклатуры:


ВЫБРАТЬ
	ЗаказТовары.Ссылка КАК ЗаказКлиента,
	ЗаказТовары.Номенклатура КАК Номенклатура,
	ЗаказТовары.Характеристика КАК Характеристика,
	ЗаказТовары.Количество КАК Количество,
	ЗаказТовары.Сумма КАК Сумма,
	ЦеныСрез.Цена КАК ДействующаяЦена
ИЗ
	Документ.ЗаказКлиента.Товары КАК ЗаказТовары
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
				&Период,
				ВидЦены = &ВидЦены) КАК ЦеныСрез
		ПО ЗаказТовары.Номенклатура = ЦеныСрез.Номенклатура
			И ЗаказТовары.Характеристика = ЦеныСрез.Характеристика
ГДЕ
	ЦеныСрез.Цена >= &МинимальнаяЦена

В параметрах схемы вынесем ВидЦены и МинимальнаяЦена в пользовательские настройки, что позволит формировать отчет по дорогостоящим товарам без предварительной настройки сегментов.

Нюансы и практические рекомендации

  1. Многомерность цен: В 1С:ERP цена зависит от вида цены, валюты, характеристики и единицы измерения. При построении условий всегда фиксируйте конкретный вид цены и валюту, чтобы избежать некорректных сравнений.
  2. Использование периодических сегментов в СКД: В типовых и произвольных отчетах фильтрация по сегменту выполняется через отбор по вхождению в регистр РегистрСведений.НоменклатураСегмента. Помните, что состав периодического сегмента обновляется только после отработки регламентного задания или ручного перезапуска.
  3. Учет характеристик: Если по номенклатуре ведется учет по характеристикам, цена может быть установлена индивидуально для каждой характеристики. Механизм сегментов и регистр ЦеныНоменклатуры поддерживают эту связь, поэтому при настройке связей обязательно учитывайте поле Характеристика.
← На главную