В процессе разработки отчетов в системе компоновки данных (СКД) для конфигурации «Управление производственным предприятием 1.3» начинающие разработчики часто сталкиваются с двумя типами проблем: отсутствием ожидаемых данных в регистрах и «расползанием» структуры отчета, когда строки дублируются вместо того, чтобы группироваться. В данной статье мы подробно разберем, как вывести информацию о браке, почему документ может не делать движений по специализированным регистрам и как правильно настроить дерево группировок, чтобы отчет выглядел профессионально и читаемо.
Для начала разберем архитектурную особенность 1С:УПП 1.3. Когда вы пытаетесь добавить строку «Брак» в складской отчет, важно понимать, откуда именно система должна брать эти цифры. Автор темы столкнулся с тем, что документ Отчет производства за смену не делает движений по регистру Брак в производстве. Рассмотрим подробнее, почему это происходит и где на самом деле искать количественные данные.
Проанализируем работу регистра Брак в производстве. В УПП этот регистр предназначен в первую очередь для учета затрат (стоимостного выражения потерь), а не физических остатков бракованных изделий на полке склада. Если ваша задача — показать остатки брака на складе (в штуках), то обращаться нужно к регистру накопления Товары на складах или Партии товаров на складах.
В этих регистрах есть измерение Качество. Когда вы выпускаете продукцию, в документе указывается качество: «Новый», «Брак», «Подлежит восстановлению» и так далее. Система фиксирует остаток именно в разрезе этого качества. Таким образом, чтобы добавить строку «Брак» в ваш отчет, в запросе СКД необходимо наложить условие или сделать группировку по полю Качество.
Если вы все же уверены, что данные должны попадать в специфический регистр, но их там нет, необходимо воспользоваться отладчиком. Это базовый навык для любого программиста 1С. Разберем по шагам, как проверить проведение документа Отчет производства за смену:
ОтчетПроизводстваЗаСмену.ОбработкаПроведения.Теперь программа «замрет» на вашей точке останова. Используя клавиши F11 (шаг с заходом в подпрограммы) и F10 (шаг через процедуры), проследим логику кода. Особое внимание уделим условиям Если... Тогда. Часто в УПП движения по регистру брака не формируются, если:
Учет затрат.Перейдем к визуальной части отчета. Типичная ошибка — когда склад «Склад 1» выводится несколько раз, если у него есть товары разного качества (например, «Новый» и «Брак»). Проанализируем, как сделать так, чтобы склад шел «шапкой» или единой группировкой, а внутри него уже детализировались показатели.
Для этого в конструкторе СКД на закладке «Настройки» нам нужно правильно выстроить иерархию. Посмотрим на пример правильной структуры дерева настроек:
Склад).
План, НачОстаток, Приход и т.д.).Если мы хотим, чтобы отчет выглядел как таблица, где качества идут в колонках, нам нужно сменить тип группировки. Рассмотрим подробнее вариант с Таблицей в СКД:
Склад.Качество.В этом случае система автоматически объединит одинаковые склады в одну строку, а разные виды качества распределит по столбцам, что исключит любое дублирование.
Часто для такого отчета одного регистра недостаточно. Нам нужно объединить остатки на складах и данные о производственных планах. Рассмотрим пример текста запроса, который собирает данные из нескольких источников для СКД:
ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
ТоварыНаСкладахОстаткиИОбороты.Качество КАК Качество,
ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачОст,
ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК Приход,
ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КАК Расход,
ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонОст,
0 КАК План
ПОМЕСТИТЬ ВТ_ДанныеСкладов
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК ТоварыНаСкладахОстаткиИОбороты
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ПланыПроизводства.Склад,
ПланыПроизводства.Номенклатура,
ЗНАЧЕНИЕ(Перечисление.Качество.Новый),
0,
0,
0,
0,
ПланыПроизводства.Количество
ИЗ
РегистрНакопления.ПланыПроизводства КАК ПланыПроизводства
ГДЕ
ПланыПроизводства.Период МЕЖДУ &НачалоПериода И &КонецПериода
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ДанныеСкладов.Склад,
ВТ_ДанныеСкладов.Номенклатура,
ВТ_ДанныеСкладов.Качество,
СУММА(ВТ_ДанныеСкладов.НачОст) КАК НачОст,
СУММА(ВТ_ДанныеСкладов.Приход) КАК Приход,
СУММА(ВТ_ДанныеСкладов.Расход) КАК Расход,
СУММА(ВТ_ДанныеСкладов.КонОст) КАК КонОст,
СУММА(ВТ_ДанныеСкладов.План) КАК План
ИЗ
ВТ_ДанныеСкладов КАК ВТ_ДанныеСкладов
СГРУППИРОВАТЬ ПО
ВТ_ДанныеСкладов.Склад,
ВТ_ДанныеСкладов.Номенклатура,
ВТ_ДанныеСкладов.Качество
Обратите внимание: в запросе мы используем ОБЪЕДИНИТЬ ВСЕ, чтобы собрать данные из складского регистра и регистра планов. Для планов мы принудительно проставляем качество «Новый» (через ЗНАЧЕНИЕ(Перечисление.Качество.Новый)), так как планируется обычно выпуск качественной продукции. Это позволит системе сопоставить план и факт в одной строке отчета.
Чтобы отчет был максимально информативным для пользователя, рекомендуем выполнить следующие настройки в СКД:
НачальныйОстаток и КонечныйОстаток в наборе данных правильно проставлены роли. Для начального остатка это должна быть роль «Начальный остаток» с указанием соответствующего поля периода, для конечного — «Конечный остаток». Если этого не сделать, при группировке по складу итоги по остаткам могут суммироваться некорректно.Качество Равно "Брак". Установите цвет текста красный. Теперь в отчете бракованные позиции будут сразу бросаться в глаза.НачалоПериода и КонецПериода в пользовательские настройки, чтобы бухгалтер или мастер цеха мог самостоятельно выбирать интервал отчета.Подведем итог: решение задачи кроется в правильном выборе регистра (складской учет вместо стоимостного учета брака) и корректной настройке иерархии группировок в СКД. Используя отладчик, вы всегда сможете понять, на каком этапе «теряются» данные, а использование временных таблиц в запросе позволит собрать воедино план, факт и остатки по всем категориям качества.