Как в отчете СКД по складам добавить данные о браке и настроить правильную группировку складов в 1С:УПП 1.3

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

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

Анализируем источники данных: почему «Брак» не попадает в отчет

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

Проанализируем работу регистра Брак в производстве. В УПП этот регистр предназначен в первую очередь для учета затрат (стоимостного выражения потерь), а не физических остатков бракованных изделий на полке склада. Если ваша задача — показать остатки брака на складе (в штуках), то обращаться нужно к регистру накопления Товары на складах или Партии товаров на складах.

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

Выясняем причины отсутствия движений через отладчик

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

  1. Откроем Конфигуратор и найдем документ ОтчетПроизводстваЗаСмену.
  2. Перейдем в Модуль объекта и найдем процедуру ОбработкаПроведения.
  3. Установим точку останова (клавиша F9) в самом начале процедуры.
  4. Запустим сеанс «1С:Предприятие» в режиме отладки (клавиша F5).
  5. Найдем нужный документ, изменим в нем что-нибудь (например, комментарий) и нажмем «Провести».

Теперь программа «замрет» на вашей точке останова. Используя клавиши F11 (шаг с заходом в подпрограммы) и F10 (шаг через процедуры), проследим логику кода. Особое внимание уделим условиям Если... Тогда. Часто в УПП движения по регистру брака не формируются, если:

Настройка структуры СКД: избавляемся от дублирования складов

Перейдем к визуальной части отчета. Типичная ошибка — когда склад «Склад 1» выводится несколько раз, если у него есть товары разного качества (например, «Новый» и «Брак»). Проанализируем, как сделать так, чтобы склад шел «шапкой» или единой группировкой, а внутри него уже детализировались показатели.

Для этого в конструкторе СКД на закладке «Настройки» нам нужно правильно выстроить иерархию. Посмотрим на пример правильной структуры дерева настроек:

  1. Отчет (корневой элемент).
    • Группировка: Склад (здесь в выбранных полях оставляем только Склад).
      • Группировка: Качество (вложенная группировка).
        • Детальные записи (здесь выводим ресурсы: План, НачОстаток, Приход и т.д.).

Если мы хотим, чтобы отчет выглядел как таблица, где качества идут в колонках, нам нужно сменить тип группировки. Рассмотрим подробнее вариант с Таблицей в СКД:

В этом случае система автоматически объединит одинаковые склады в одну строку, а разные виды качества распределит по столбцам, что исключит любое дублирование.

Работа с запросом: объединение данных из разных регистров

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


ВЫБРАТЬ
    ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстаткиИОбороты.Качество КАК Качество,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачОст,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК Приход,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КАК Расход,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонОст,
    0 КАК План
ПОМЕСТИТЬ ВТ_ДанныеСкладов
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК ТоварыНаСкладахОстаткиИОбороты

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ПланыПроизводства.Склад,
    ПланыПроизводства.Номенклатура,
    ЗНАЧЕНИЕ(Перечисление.Качество.Новый),
    0,
    0,
    0,
    0,
    ПланыПроизводства.Количество
ИЗ
    РегистрНакопления.ПланыПроизводства КАК ПланыПроизводства
ГДЕ
    ПланыПроизводства.Период МЕЖДУ &НачалоПериода И &КонецПериода
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ДанныеСкладов.Склад,
    ВТ_ДанныеСкладов.Номенклатура,
    ВТ_ДанныеСкладов.Качество,
    СУММА(ВТ_ДанныеСкладов.НачОст) КАК НачОст,
    СУММА(ВТ_ДанныеСкладов.Приход) КАК Приход,
    СУММА(ВТ_ДанныеСкладов.Расход) КАК Расход,
    СУММА(ВТ_ДанныеСкладов.КонОст) КАК КонОст,
    СУММА(ВТ_ДанныеСкладов.План) КАК План
ИЗ
    ВТ_ДанныеСкладов КАК ВТ_ДанныеСкладов

СГРУППИРОВАТЬ ПО
    ВТ_ДанныеСкладов.Склад,
    ВТ_ДанныеСкладов.Номенклатура,
    ВТ_ДанныеСкладов.Качество

Обратите внимание: в запросе мы используем ОБЪЕДИНИТЬ ВСЕ, чтобы собрать данные из складского регистра и регистра планов. Для планов мы принудительно проставляем качество «Новый» (через ЗНАЧЕНИЕ(Перечисление.Качество.Новый)), так как планируется обычно выпуск качественной продукции. Это позволит системе сопоставить план и факт в одной строке отчета.

Важные советы по оформлению отчета

Чтобы отчет был максимально информативным для пользователя, рекомендуем выполнить следующие настройки в СКД:

  1. Роли полей периода: Убедитесь, что для ресурсов НачальныйОстаток и КонечныйОстаток в наборе данных правильно проставлены роли. Для начального остатка это должна быть роль «Начальный остаток» с указанием соответствующего поля периода, для конечного — «Конечный остаток». Если этого не сделать, при группировке по складу итоги по остаткам могут суммироваться некорректно.
  2. Оформление: Для строки «Брак» можно настроить Условное оформление. Выясним, как это сделать: на закладке «Условное оформление» добавьте новое правило. Выберите область — все поля, и условие — Качество Равно "Брак". Установите цвет текста красный. Теперь в отчете бракованные позиции будут сразу бросаться в глаза.
  3. Параметры: Не забудьте вынести параметры НачалоПериода и КонецПериода в пользовательские настройки, чтобы бухгалтер или мастер цеха мог самостоятельно выбирать интервал отчета.

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

← На главную