В процессе работы торгового предприятия часто возникает ситуация, когда на складах числятся остатки номенклатуры, которая фактически не продается и не перемещается уже долгое время. Чтобы привести учет в порядок и «обнулить» такие позиции через документ Пересчет товаров, необходимо эффективно отфильтровать список номенклатуры. В типовой конфигурации «1С:Розница 2.3» прямой фильтр по «Дате последнего движения» в самом документе пересчета отсутствует, однако мы можем решить эту задачу несколькими способами, используя возможности СКД и механизмы загрузки данных.
Проанализируем возможности встроенных отчетов. В конфигурации «Розница 2.3» одним из самых мощных инструментов для работы с залежалым товаром является отчет АнализОборачиваемостиТоваров. Несмотря на то, что его основная цель — расчет KPI продаж, настройки Системы компоновки данных (СКД) позволяют извлечь из него нужную нам информацию.
Полученный результат мы можем сохранить в файл для последующей загрузки в документ инвентаризации.
Рассмотрим более универсальный способ, который не требует программирования и подходит большинству пользователей. Этот метод основан на комбинировании данных из отчета и стандартного механизма заполнения документов.
Шаг 1. Формирование списка в отчете
Сформируем отчет ВедомостьПоТоварамНаСкладах. В настройках отчета (СКД) добавим группировку по Номенклатуре. Чтобы увидеть «зависшие» товары, нам нужно убедиться, что по ним есть остаток, но не было оборотов за длительный период. Выберем период формирования отчета — весь 2023 и 2024 год. Если в колонках «Приход» и «Расход» стоят нули, значит, последнее движение было в 2022 году или ранее.
Шаг 2. Сохранение и подготовка файла
Сохраним сформированный отчет в формате Excel. В файле оставим только две колонки: Номенклатура (или её Артикул/Штрихкод) и Количество. Поскольку наша цель — обнулить остатки, в колонке фактического количества в Excel мы можем сразу проставить «0».
Шаг 3. Загрузка в документ Пересчет товаров
Выясним, как быстро перенести эти данные в документ:
Если требуется регулярное выполнение такой операции, рассмотрим, как настроить отбор на уровне запроса в СКД. Основная сложность заключается в том, что «движение» товара фиксируется в регистре накопления ТоварыНаСкладах. Чтобы найти дату последнего движения, нам необходимо получить максимальный период по каждой позиции.
Проанализируем пример запроса, который можно использовать во внешней обработке или расширении:
ВЫБРАТЬ
ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
МАКСИМУМ(ТоварыНаСкладах.Период) КАК ДатаПоследнегоДвижения,
ТоварыНаСкладахОстатки.КоличествоОстаток КАК ТекущийОстаток
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ПО ТоварыНаСкладахОстатки.Номенклатура = ТоварыНаСкладах.Номенклатура
СГРУППИРОВАТЬ ПО
ТоварыНаСкладахОстатки.Номенклатура,
ТоварыНаСкладахОстатки.КоличествоОстаток
ИМЕЮЩИЕ
МАКСИМУМ(ТоварыНаСкладах.Период) < &ДатаОтсечки
В данном запросе параметр &ДатаОтсечки будет равен, например, 01.01.2023. Функция МАКСИМУМ(Период) вернет нам время самого последнего документа, изменившего остаток. Если эта дата меньше нашей границы, значит, товар не двигался более года.
Важно понимать методику работы документов инвентаризации в «1С:Розница». Документ Пересчет товаров сам по себе не изменяет остатки в регистре. Он лишь фиксирует разницу между учетными данными и фактическими.
Посмотрим на последовательность действий после заполнения списка «залежалых» товаров:
ТоварыНаСкладах и фактически обнулит остатки.Важный нюанс: при использовании автоматического заполнения по отбору (через кнопку «Заполнить») в типовой Рознице 2.3, система предлагает стандартные фильтры (группа номенклатуры, наличие остатка). Чтобы внедрить туда фильтр по дате движения, потребуется создание небольшого Расширения, которое изменит запрос в процедуре заполнения. Если вы не являетесь программистом, наиболее надежным и быстрым способом остается Метод 2 (через Excel).