Как настроить отчет по производству мебели с расчетом среднего состава изделий и учетом себестоимости по FIFO?

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

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

Анализ постановки задачи

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

  1. Списание материалов по FIFO: При проведении документа себестоимость материалов должна определяться на основании партий (документов поступления).
  2. Учет работ: Стоимость работ должна увеличивать себестоимость изделия, но сами работы не должны отображаться в строках материалов в отчете.
  3. Сложная структура отчета: Отчет должен выводить количество собранных изделий, их итоговую стоимость, а для вложенных материалов — среднее количество и среднюю стоимость, затраченную на производство одной единицы продукции.

Шаг 1: Настройка учетной политики и плана счетов

Для реализации партионного учета нам понадобится настроить ПланСчетов. Разумно использовать счет "Материалы" (например, 10) и счет "Основное производство" (20), а также "Товары" (41) или "Готовая продукция" (43).

На счете "Материалы" необходимо организовать аналитику (Субконто) по Номенклатуре и Партиям. В качестве типа данных для субконто Партии обычно выступает документ поступления. Помните, что для корректного расчета FIFO признак "Учет по партиям" должен быть установлен в настройках параметров учета или реализован через соответствующее измерение регистра бухгалтерии.

Шаг 2: Реализация алгоритма проведения документа «Сборка»

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

Разберем пример кода для получения остатков по партиям и формирования проводок списания (FIFO):


// 1. Создаем блокировку данных для обеспечения целостности остатков
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрБухгалтерии.Хозрасчетный");
ЭлементБлокировки.УстановитьЗначение("Счет", ПланыСчетов.Хозрасчетный.Материалы);
// ... установка фильтров по номенклатуре из ТЧ документа
Блокировка.Заблокировать();

// 2. Запрос к остаткам в разрезе партий
Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|   ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
|   ХозрасчетныйОстатки.Субконто2 КАК Партия,
|   ХозрасчетныйОстатки.КоличествоОстаток КАК Количество,
|   ХозрасчетныйОстатки.СуммаОстаток КАК Сумма
|ИЗ
|   РегистрБухгалтерии.Хозрасчетный.Остатки(&МоментВремени, Счет = &СчетМатериалы, , ) КАК ХозрасчетныйОстатки
|ГДЕ
|   ХозрасчетныйОстатки.Субконто1 В (&СписокНоменклатуры)
|УПОРЯДОЧИТЬ ПО
|   ХозрасчетныйОстатки.Субконто2.Дата ВОЗР";

После получения выборки мы обходим партии и списываем необходимое количество. Сумма списания для готового изделия будет складываться из себестоимости материалов и стоимости работ. Стоимость работ мы получаем из периодического Регистра Сведений, так как по условию она меняется не чаще раза в месяц.

Шаг 3: Настройка отчета «Средний состав изделия» в СКД

Это самая интересная часть задачи. Нам нужно получить иерархию Изделие -> Материал. Рассмотрим подробнее, как вычислить колонки "Количество" и "Сумма".

Для уровня изделия:

Для уровня материала (вложенный уровень):

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

Выясним, как прописать формулы ресурсов. Для поля Количество формула будет выглядеть так:

ВЫБОР КОГДА Уровень() = 0 ТОГДА Сумма(КоличествоВыпущено) ИНАЧЕ Сумма(КоличествоСписано) / Сумма(КоличествоВыпущено) КОНЕЦ

Важно помнить: чтобы значение КоличествоВыпущено было доступно на уровне группировки по материалам, в запросе СКД эти данные должны быть связаны. Обычно используется левое соединение оборотов по выпуску продукции и оборотов по списанию материалов в рамках одного документа или периода.

Шаг 4: Обработка трудозатрат (Работ) в отчете

Согласно условию, работы входят в стоимость изделия, но не детализируются как материалы. Чтобы добиться этого, выполним следующие действия:

  1. В запросе набора данных для отчета добавим условие фильтрации: выбираем только те записи из оборотов, где тип номенклатуры НЕ равен "Работа".
  2. При этом в итоговую сумму по изделию (верхний уровень группировки) мы должны включить все затраты. Для этого можно использовать отдельное поле в запросе, которое суммирует все движения по дебету счета 43 (или 41) в корреспонденции со счетом 20.

Таким образом, на уровне Изделия мы увидим полную себестоимость (с учетом работ), а в списке Материалов под ним будут только физические комплектующие.

Шаг 5: Оформление внешнего вида

Чтобы отчет выглядел профессионально и соответствовал требованиям, в настройках СКД на вкладке "Наборы данных" установим правильные Роли для полей. Для полей количества и суммы на разных уровнях можно использовать разные заголовки или условное оформление, чтобы визуально разделить показатели "Всего по изделию" и "Среднее на единицу".

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

← На главную