Как создать отчет по остаткам материалов в разрезе выбранной спецификации в 1С:УНФ

Программист 1С v8.3 (Управляемые формы) Управленческий учет Промышленность, строительство и АПК
← На главную

В процессе управления производством часто возникает задача: оперативно понять, хватит ли материалов на складе для выпуска конкретного изделия по определенной спецификации еще до того, как будет сформирован документ Заказ на производство. Рассмотрим детально, как реализовать такой механизм в конфигурации 1С:Управление нашей фирмой (УНФ), используя как встроенные инструменты, так и возможности самостоятельной разработки на системе компоновки данных (СКД).

Метод 1: Использование стандартного механизма «Расчет потребностей»

Прежде чем приступать к программированию, проанализируем типовой функционал программы. В 1С:УНФ существует мощный инструмент — Расчет потребностей в запасах. Зачастую он полностью перекрывает потребность в создании отдельного отчета, описанного в теме форума.

Разберем, как работает этот механизм:

  1. Перейдем в раздел Закупки или Склад и выберем пункт Расчет потребностей.
  2. На вкладке Настройки укажем период и склад, по которому хотим произвести анализ.
  3. В колонке Потребность система автоматически соберет данные из всех заказов. Однако, если мы хотим проверить «гипотетическую» потребность, мы можем временно создать документ Заказ на производство в статусе «В работе» или «Заявка» (не проводя его по учету, а просто записав).
  4. Обработка проанализирует спецификации, указанные в заказе, сопоставит их с текущими остатками на складе (регистр Запасы) и выведет дефицит в колонке Дефицит/Излишек. Недостающее количество будет подсвечено красным цветом.

Преимущество этого метода: система позволяет сразу же сформировать документы Заказ поставщику на то количество материала, которого не хватает для выполнения производственной программы.

Метод 2: Создание собственного отчета на базе СКД

Если типовая обработка по каким-то причинам не подходит и нужен именно отчет с жестко заданной структурой (Остаток, Необходимо, Дефицит), воспользуемся Системой компоновки данных (СКД). Как справедливо отмечено в сообщении 4, «Универсальный отчет» в данном контексте менее гибок, чем прямое создание схемы компоновки.

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

Шаг 1: Определение источников данных

Для построения отчета нам потребуются две таблицы:

  1. Справочник.Спецификации.Состав — здесь хранятся нормы расхода материалов.
  2. РегистрНакопления.Запасы.Остатки — здесь хранятся текущие физические остатки на складах.

Шаг 2: Написание запроса

Рассмотрим пример запроса для СКД. Нам важно учесть, что количество материала в спецификации указано на определенное количество готовой продукции (поле КоличествоПродукции в шапке спецификации).


ВЫБРАТЬ
    СпецификацияСостав.Номенклатура КАК Материал,
    СпецификацияСостав.Характеристика КАК ХарактеристикаМатериала,
    (СпецификацияСостав.Количество / СпецификацияСостав.Ссылка.КоличествоПродукции) * &КоличествоКВыпуску КАК НеобходимоНаПроизводство,
    ЕСТЬNULL(ЗапасыОстатки.КоличествоОстаток, 0) КАК ОстатокНаСкладе
ИЗ
    Справочник.Спецификации.Состав КАК СпецификацияСостав
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Запасы.Остатки(Период = &Период) КАК ЗапасыОстатки
    ПО СпецификацияСостав.Номенклатура = ЗапасыОстатки.Номенклатура
    И СпецификацияСостав.Характеристика = ЗапасыОстатки.Характеристика
ГДЕ
    СпецификацияСостав.Ссылка = &ВыбраннаяСпецификация

Разберем по шагам ключевые моменты этого запроса:

Шаг 3: Настройка вычисляемых полей и оформления

Чтобы реализовать логику «Конечного остатка» и выделения красным (как просил автор в сообщении 9), перейдем на закладку Вычисляемые поля в СКД:

  1. Добавим поле КонечныйОстаток с формулой: ОстатокНаСкладе - НеобходимоНаПроизводство.
  2. На закладке Условное оформление добавим правило: если КонечныйОстаток < 0, то цвет текста — Красный.

Проблема разузлования (вложенные спецификации)

В сообщении 6 упоминается проблема «разузловки». Если ваш прибор состоит из узлов, которые сами имеют спецификации, простой запрос к табличной части Состав покажет только узлы, но не их компоненты.

Для решения этой задачи в 1С:УНФ рекомендуется использовать механизм обеспечения или писать рекурсивный запрос в СКД. Однако для начинающего разработчика проще всего будет применить следующий подход: в настройках спецификации для вложенных узлов указывать способ пополнения «Производство». Тогда типовой отчет Анализ потребности сможет «раскрутить» дерево изделий до самого нижнего уровня — до покупных материалов.

Практические советы по работе с отчетом

Проанализируем нюансы, которые могут возникнуть при эксплуатации:

Таким образом, для быстрого решения задачи лучше всего использовать встроенный Расчет потребностей, а для получения специфической печатной формы — создать отчет на СКД, соединив данные спецификации с остатками по регистрам накопления.

← На главную