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