Задача выявления товаров, которые не продавались за определенный период, является важной для анализа ассортимента, управления запасами и выявления неликвидов. Однако стандартные отчеты в 1С:Управление торговлей не всегда предоставляют эту информацию напрямую, поскольку большинство из них ориентированы на отображение фактических движений или продаж.
Давайте подробно разберем, почему возникают сложности с получением такого отчета в типовых конфигурациях 1С:УТ и какие подходы мы можем использовать для решения этой задачи, начиная от настройки существующих отчетов и заканчивая разработкой собственных.
Прежде всего, давайте выясним причину, по которой типовые отчеты по продажам, такие как "Валовая прибыль предприятия" или "Отчет по продажам", не позволяют увидеть товары, по которым не было продаж за выбранный период. Эти отчеты строятся на основе данных из регистров накопления, фиксирующих факты продаж (например, РегистрНакопления.ВыручкаИСебестоимостьПродаж или РегистрНакопления.Продажи). Принцип их работы заключается в выборке и агрегации записей, которые уже существуют в этих регистрах за указанный период.
Таким образом, если по какому-либо товару не было ни одной продажи в заданный интервал времени, соответствующая запись просто отсутствует в регистре. Отчет не может отобразить то, чего нет. Для того чтобы увидеть "отсутствие", нам требуется принципиально иной подход – мы должны сначала получить полный список товаров (например, из справочника Номенклатура), а затем сравнить его со списком проданных товаров за период, чтобы найти те позиции, которые остались без пары. Это как раз и вызывает трудности при использовании стандартных инструментов, разработанных для анализа существующих данных.
Одним из наиболее близких к требуемому функционалу и относительно простых в настройке является отчет "Ведомость по товарам на складах". Этот отчет позволяет анализировать движения товаров, включая их приход, расход и остатки на складах. Мы можем адаптировать его для выявления товаров, которые находились на складе, но не отгружались (не продавались) за выбранный период.
Давайте рассмотрим шаги по настройке:
КоличествоРасход (или Количество (Расход)).0 (ноль).КоличествоКонечныйОстаток (или Количество (Конечный остаток)) с видом сравнения "Больше или равно" и значением 1, чтобы видеть только те товары, которые физически присутствовали на складе к концу периода. Либо, если мы хотим видеть товары, которые были на складе в течение периода, но не продавались, мы можем использовать поле КоличествоНачальныйОстаток (или Количество (Начальный остаток)) с условием "Больше или равно" 1.Что покажет этот отчет? Отчет с такой настройкой покажет нам список товаров, которые имели остатки на складах в течение или на конец выбранного периода, но по которым не было движений в сторону расхода (списания) за этот период. Это позволяет выявить позиции, которые "лежат" на складе и не продаются.
Ограничения этого метода:
КоличествоРасход = 0 не делает различия между продажей и другими видами расхода (например, внутренними перемещениями между складами, списаниями на нужды предприятия и т.д.). Если товар перемещался, он будет иметь расход, и не попадет в отчет. Для более точного анализа вам может потребоваться исключить такие виды движения из регистра движения товаров или использовать более сложную логику.ABC/XYZ классификация является мощным инструментом для анализа ассортимента и управления запасами. Хотя она не является прямым отчетом по "непродаваемым" товарам, она может косвенно помочь в их выявлении, группируя номенклатуру по объему продаж и стабильности спроса. Товары, которые попадают в категории с очень низкими или нулевыми продажами, будут выделены этой классификацией. Для оперативного отображения категорий в документах и подборе можно использовать расширение для вывода ABC/XYZ-анализа на формах.
Давайте разберем, как этот метод может быть полезен:
Что покажет этот отчет? Мы сможем увидеть номенклатуру, которая по результатам анализа продаж попала в самые низкие категории (например, CZ, CY, CX), что косвенно указывает на ее низкую оборачиваемость или полное отсутствие продаж за анализируемый период.
Ограничения этого метода:
Для получения наиболее точного и гибкого отчета по товарам, которые не продавались за выбранный период, особенно если нам нужно учесть как товары на складе, так и товары, которых не было на складе, но которые числятся в справочнике, оптимальным решением часто является разработка собственного внешнего отчета или специализированной обработки. Такой подход позволяет нам объединить данные из разных регистров и справочников, используя сложную логику запросов. Чтобы не разрабатывать решение с нуля, можно использовать готовый отчет для выявления товаров без продаж и неликвидов.
Давайте рассмотрим основной принцип построения такого запроса, который ляжет в основу собственного отчета:
Концепция запроса:
Справочник.Номенклатура, исключая услуги и группы.РегистрНакопления.ВыручкаИСебестоимостьПродаж или РегистрНакопления.Продажи.ЛЕВОЕ СОЕДИНЕНИЕ (LEFT JOIN).NULL для полей из регистра продаж).Пример концептуального запроса (на СКД или языке запросов 1С):
Мы используем язык запросов 1С, который очень похож на SQL, для иллюстрации идеи. Этот запрос является основой и может быть доработан в зависимости от специфики регистров вашей конфигурации.
ВЫБРАТЬ
Номенклатура.Ссылка КАК НоменклатураСсылка,
Номенклатура.Наименование КАК НоменклатураНаименование
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.ЭтоГруппа = ЛОЖЬ
И Номенклатура.ПометкаУдаления = ЛОЖЬ
И Номенклатура.ВидНоменклатуры.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
ЛЕВОЕ СОЕДИНЕНИЕ
(ВЫБРАТЬ РАЗЛИЧНЫЕ
ВыручкаИСебестоимостьПродажОбороты.Номенклатура КАК НоменклатураПродаж
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ВыручкаИСебестоимостьПродажОбороты
ГДЕ
ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот > 0) КАК ПродажиЗаПериод
ПО
Номенклатура.Ссылка = ПродажиЗаПериод.НоменклатураПродаж
ГДЕ
ПродажиЗаПериод.НоменклатураПродаж ЕСТЬ NULL
ВЫБРАТЬ...ИЗ Справочник.Номенклатура) формирует полный список всех активных, не удаленных, не являющихся группами и не услугами позиций номенклатуры. Мы получаем Ссылка и Наименование каждой позиции.ВЫБРАТЬ РАЗЛИЧНЫЕ...ИЗ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты) выбирает все уникальные позиции номенклатуры, по которым были продажи (КоличествоОборот > 0) за указанный &НачалоПериода и &КонецПериода.ЛЕВОЕ СОЕДИНЕНИЕ (LEFT JOIN) объединяет полный список номенклатуры с результатом подзапроса по полю Номенклатура. Это означает, что для каждой позиции из справочника Номенклатура будет найдена соответствующая запись в списке ПродажиЗаПериод, если таковая имеется. Если продажи не было, поля из ПродажиЗаПериод будут иметь значение NULL.ГДЕ ПродажиЗаПериод.НоменклатураПродаж ЕСТЬ NULL отфильтровывает только те строки, для которых ЛЕВОЕ СОЕДИНЕНИЕ не нашло соответствия в списке проданных товаров. Именно эти товары и являются искомыми "не продававшимися".Для создания такого отчета на базе 1С мы можем использовать механизм "Система компоновки данных" (СКД), который позволяет создавать сложные отчеты без написания кода, но с использованием запросов. В СКД вы сможете определить параметры (период, склад и т.д.), настроить поля, отборы и группировки.
Преимущества собственного отчета:
Сложность: Разработка требует определенных навыков в 1С-программировании или работе с СКД. Если таких навыков нет, возможно, потребуется привлечение специалиста.
Итак, мы рассмотрели несколько подходов к выявлению товаров, которые не продавались за выбранный период в 1С:Управление торговлей:
КоличествоРасход = 0: Это самый простой и быстрый способ, но он имеет существенные ограничения, так как не учитывает все виды расхода и не показывает товары, отсутствовавшие на складе. Используйте его, если вам нужен экспресс-анализ только по товарам, находящимся на складе.Мы рекомендуем начать с настройки "Ведомости по товарам на складах". Если ее функционал окажется недостаточным из-за специфических требований (например, необходимость учета перемещений или товаров, отсутствовавших на складе), тогда переходите к рассмотрению разработки собственного отчета на СКД. Это позволит вам создать инструмент, максимально адаптированный под ваши бизнес-процессы и аналитические задачи.