Создание отчетов для отдела закупок — одна из самых частых задач для начинающего разработчика 1С. Основная сложность здесь заключается не столько в написании кода, сколько в понимании логики движения товаров и правильном соединении данных о продажах и остатках. В этой статье мы подробно разберем, как пройти путь от постановки задачи до готового инструмента планирования закупок.
Прежде чем открывать конфигуратор, проанализируем ситуацию. Как советуют опытные специалисты, нельзя приступать к разработке без четкого понимания того, как будет использоваться отчет. Разберем по шагам подготовительные действия:
РегистрНакопления.ВыручкаИПродажи и РегистрНакопления.ТоварыНаСкладах (в УТ 11) или Продажи и ТоварыНаСкладах (в УТ 10.3).Заказ = СреднемесячныеПродажи - Остаток. Однако в реальной жизни нужно уточнить, учитывать ли «Товары в пути» (которые уже заказаны, но еще не приехали) и «Резервы» (которые лежат на складе, но уже проданы).Если вы новичок, вам понадобятся базовые знания по Системе компоновки данных (СКД). Это основной инструмент в 1С для создания сложных отчетов. Рассмотрим рекомендуемую литературу для быстрого старта:
Также стоит обратить внимание на специализированные курсы по разработке на платформе 1С:Предприятие 8, которые обучают работе с запросами и виртуальными таблицами.
Рассмотрим алгоритм действий, который поможет постепенно собрать отчет, не запутавшись в данных:
Обороты регистра продаж.Остатки.Номенклатура.Проанализируем пример того, как может выглядеть запрос для такого отчета. Нам нужно использовать ЛЕВОЕ СОЕДИНЕНИЕ, чтобы в отчет попали все товары, по которым были продажи, даже если их сейчас нет на остатке.
Пример упрощенной структуры запроса:
ВЫБРАТЬ
ПродажиОбороты.Номенклатура КАК Номенклатура,
ПродажиОбороты.КоличествоОборот / 5 КАК СМП,
ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток
ПОМЕСТИТЬ ВТ_Данные
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ПродажиОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ПериодОстатков, ) КАК ТоварыНаСкладахОстатки
ПО ПродажиОбороты.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Данные.Номенклатура,
ВТ_Данные.СМП,
ВТ_Данные.Остаток,
ВЫБОР
КОГДА ВТ_Данные.СМП - ВТ_Данные.Остаток > 0
ТОГДА ВТ_Данные.СМП - ВТ_Данные.Остаток
ИНАЧЕ 0
КОНЕЦ КАК КЗаказу
ИЗ
ВТ_Данные КАК ВТ_Данные
В СКД (Системе компоновки данных) расчет СМП лучше выносить в закладку «Вычисляемые поля» или использовать агрегатные функции на закладке «Ресурсы», чтобы отчет корректно работал при различных группировках (например, по складам или категориям товаров).
Чтобы ваш отчет был действительно полезным, рассмотрим дополнительные параметры, которые стоит внедрить:
1. Учет дефицита: Если товара не было на складе часть периода (например, 10 дней из 30), СМП нужно считать не как Продажи / 30, а как Продажи / (30 - ДниОтсутствия). Это позволит увидеть реальный потенциал спроса.
2. Страховой запас: Добавьте в формулу коэффициент на случай задержки поставки. Закупка не должна быть «впритык», иначе любая задержка фуры приведет к пустым полкам.
3. Период анализа: 5 месяцев — хороший срок, но он может включать разные сезоны. Выясните у отдела закупок, нужно ли внедрять коэффициенты сезонности.
4. Работа с характеристиками: Если в вашей базе ведется учет по цветам или размерам, обязательно добавьте поле ХарактеристикаНоменклатуры в группировки и связи запроса, иначе данные «схлопнутся» и отчет покажет неверную картину.
Создание качественного отчета для закупок — это итерационный процесс. Скорее всего, после первой версии пользователи попросят добавить «товары в пути», фильтрацию по поставщикам или ABC-классификацию. Главное — заложить правильный фундамент в виде грамотной структуры запроса и использования СКД. Используйте рекомендации из мануалов Радченко и Хрусталевой, и через некоторое время вы сможете создавать инструменты любой сложности.