Задача массового заполнения поля «Продукция» в табличной части «Материалы» документа «Отчёт о производстве» возникает в 1С УПП, ERP 2.5 и ЗУП 3.1, когда в базе накоплено большое количество документов без этой связи. Вручную редактировать каждый документ нереально — задача решается через обработку «Групповое изменение реквизитов» с алгоритмом на встроенном языке 1С 8.3.
Что такое поле «Продукция» в материалах отчёта о производстве
В документе «Отчёт о производстве» есть две связанные табличные части:
- Продукция — что выпустили (номенклатура готовой продукции, количество, счёт учёта).
- Материалы — что потратили на производство (сырьё, полуфабрикаты). Каждая строка материалов должна быть привязана к конкретной строке продукции через поле «Продукция».
Без заполнения этого поля программа не может корректно распределить затраты на себестоимость конкретного выпуска. В платформе 8.3.20 и выше это поле является обязательным для корректного закрытия месяца.
Причины возникновения проблемы
- Документы создавались в старой версии конфигурации, где поле «Продукция» не было обязательным
- Перенос данных из другой программы (Excel, другой конфигурации 1С) без учёта этой связи
- Ошибки при начальном вводе: пользователи заполняли только материалы, не указывая к какой продукции они относятся
- Массовое создание документов через внешнюю обработку или API без заполнения реквизита
Способ 1: Алгоритм через «Групповое изменение реквизитов»
Стандартный инструмент 1С 8.3 — обработка «Групповое изменение реквизитов» (доступна в меню Все функции или в разделе Администрирование в зависимости от конфигурации).
- Откройте обработку «Групповое изменение реквизитов» через меню Все функции → Стандартные.
- В поле «Тип объекта» выберите Документ.ОтчётОПроизводствеЗаСмену (или соответствующий документ вашей конфигурации).
- Настройте отбор при необходимости (период, организация, подразделение).
- В поле «Алгоритм» вставьте следующий код:
Для Каждого СтрокаМатериал Из Объект.Материалы Цикл
Если Объект.Продукция.Количество() > 0 Тогда
СтрокаМатериал.Продукция = Объект.Продукция[0].Номенклатура;
Сообщить("Продукция обновлена для материала: " + СтрокаМатериал.Номенклатура);
Иначе
Сообщить("Нет продукции для документа: " + Объект.Ссылка);
КонецЕсли;
КонецЦикла; - Нажмите Выполнить. Алгоритм обработает все отобранные документы.
- Проверьте результат: откройте несколько документов и убедитесь, что поле «Продукция» в материалах заполнено.
Пояснение работы алгоритма
Что делает цикл «Для Каждого»
Алгоритм перебирает все строки табличной части «Материалы» текущего документа. Для каждой строки проверяет наличие хотя бы одной записи в табличной части «Продукция» того же документа:
Если Объект.Продукция.Количество() > 0 Тогда
Логика присвоения значения
Если продукция в документе есть — берётся первая строка из табличной части «Продукция» и её значение записывается в поле «Продукция» каждой строки материалов:
СтрокаМатериал.Продукция = Объект.Продукция[0].Номенклатура;
Важно: обращение [0] — это индекс с нуля, то есть первая строка. Если нужно присваивать разные строки продукции разным материалам — алгоритм потребует усложнения (добавить логику сопоставления).
Обработка документов без продукции
Если в документе нет ни одной строки в табличной части «Продукция», алгоритм выводит сообщение:
Сообщить("Нет продукции для документа: " + Объект.Ссылка); Эти документы нужно проверить вручную — возможно, они заполнены некорректно.
Способ 2: Обработка через запрос для сложных случаев
Если у вас в документах несколько строк продукции и нужно сопоставить материалы с конкретной продукцией по определённому признаку (например, по переделу или субконто), используйте расширенный алгоритм с запросом. Это требует участия программиста 1С, знакомого с вашей конфигурацией.
Для ERP 2.5 задача может решаться через встроенный механизм «Управление производством» — проверьте наличие автоматического заполнения этого реквизита в настройках конфигурации.
Что делать если ничего не помогло
- Проверьте типы данных: убедитесь, что тип поля «Продукция» в строке материалов совпадает с типом значения
Объект.Продукция[0].Номенклатура. В разных конфигурациях это может быть ссылка на номенклатуру, документ или составной тип — откройте конфигуратор и сверьте. - Проверьте журнал регистрации на наличие ошибок при выполнении обработки: Администрирование → Журнал регистрации.
- Технологический журнал (для сложных ошибок платформы 8.3.24+): настраивается в файле
logcfg.xmlкаталога платформы. - Обратитесь к сопровождающему 1С: если база работает на нестандартной конфигурации или сильно доработана, имена реквизитов могут отличаться.
FAQ
В каких конфигурациях 1С есть документ «Отчёт о производстве»?
Документ «Отчёт о производстве за смену» есть в 1С:УПП (Управление производственным предприятием), 1С:ERP Управление предприятием 2.5, 1С:Комплексная автоматизация. В Бухгалтерии 3.0 и ЗУП 3.1 он отсутствует или имеет другую структуру.
Безопасно ли запускать групповое изменение реквизитов?
Операция изменяет данные в базе. Перед запуском сделайте резервную копию базы данных. В тестовой базе проверьте алгоритм на 2–3 документах, прежде чем запускать массово.
Алгоритм присваивает первую продукцию всем материалам — как сопоставить правильно?
Это упрощённый алгоритм для случая, когда в документе одна строка продукции. Если строк несколько — нужна логика сопоставления: по номеру строки, по переделу, по дополнительным реквизитам. Это задача для программиста 1С.
Можно ли сделать то же самое через консоль запросов?
Прямое изменение данных через консоль запросов (UPDATE в SQL) в 1С не рекомендуется — это обходит бизнес-логику платформы. Используйте групповое изменение реквизитов или внешнюю обработку.
Что такое индекс [0] в 1С и почему счёт начинается с нуля?
В 1С табличные части являются коллекциями, и обращение по индексу начинается с нуля: [0] — первая строка, [1] — вторая. Это стандартное поведение платформы 8.3.
После обработки документы не записываются — в чём причина?
Проверьте, нет ли активных блокировок на документах (другой пользователь открыл их для редактирования). Также убедитесь, что у вашей роли есть права на изменение этих документов. Ошибки записи отображаются в технологическом журнале.