Почему реквизит Подразделение не виден в отчетах СКД и групповой обработке в 1С:Бухгалтерии 3.0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

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

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

В чем причина скрытия полей в СКД и обработках

Главная причина кроется в механизме Функциональных опций (ФО) платформы «1С:Предприятие 8.3». Разберем подробно, как этот механизм влияет на различные компоненты системы:

  1. Поведение Системы компоновки данных. Если реквизит объекта привязан к функциональной опции, значение которой в текущей информационной базе равно Ложь, платформа автоматически исключает это поле из схемы компоновки данных в пользовательском режиме. Даже если в тексте запроса секция ВЫБРАТЬ содержит явное обращение к полям ОтчетПроизводстваЗаСмену.ПодразделениеЗатрат или ОтчетПроизводстваЗаСмену.ПодразделениеОрганизации, платформа скрывает их из доступных полей, группировок, отборов и колонок отчета.
  2. Поведение типовой обработки группового изменения данных. Обработка «Групповое изменение реквизитов» из состава «Библиотеки стандартных подсистем» (БСП) динамически формирует дерево доступных реквизитов. В обычном режиме она анализирует видимость элементов с учетом прав пользователя и активности функциональных опций. Если опция выключена, соответствующий реквизит вообще не попадает в интерфейсный список для выбора.
  3. Почему данные все равно записываются при синхронизации. Механизмы обмена (через EnterpriseData или правила конвертации) выполняют запись напрямую на уровне объектной модели сервера. Программный код записи объекта не блокируется выключенной функциональной опцией, если реквизит физически присутствует в таблице базы данных. По этой причине данные из внешних баз успешно попадают в реквизит, порождая расхождения, которые не видны стандартными средствами.

Различие реквизитов: Подразделение затрат и Подразделение организации

Проанализируем структуру реквизитов документов производства в «1С:Бухгалтерии 3.0». В конфигурации используются два совершенно разных разреза аналитики:

  1. Подразделение затрат (ПодразделениеЗатрат) — аналитический разрез учета производственных расходов (субконто затратных счетов 20, 23, 25, 26). Данный учет полноценно поддерживается в версии ПРОФ, но может быть отключен в общих параметрах учета информационной базы.
  2. Обособленное подразделение (ПодразделениеОрганизации) — сквозной балансовый учет по филиалам и обособленным подразделениям (с отдельным КПП и собственным балансом). Данный функционал реализован исключительно в версии КОРП. В версии ПРОФ этот реквизит физически присутствует в структуре метаданных документа, но наглухо скрыт неактивной функциональной опцией, включить которую в ПРОФ штатными настройками невозможно.

Решение 1. Включение учета затрат по подразделениям в параметрах учета

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

  1. Перейдем в раздел Администрирование и выберем пункт Параметры учета.
  2. Откроем ссылку Настройка плана счетов.
  3. Найдем пункт Учет затрат. По умолчанию при упрощенном ведении учета там установлено значение «Сводно, по организации в целом».
  4. Переключим настройку в положение «По каждому подразделению» и сохраним изменения.

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

Решение 2. Использование режима разработчика в групповом изменении реквизитов

Если включать учет по подразделениям на постоянной основе не требуется, либо если требуется скорректировать реквизит, скрытый ограничениями версии КОРП (например, ПодразделениеОрганизации), рассмотрим обходной путь через типовую обработку БСП:

  1. Откроем обработку Групповое изменение реквизитов (раздел Администрирование → Обслуживание → Корректировка данных).
  2. Выберем целевой документ (например, Отчет производства за смену).
  3. В нижней части формы откроем Дополнительные параметры.
  4. Установим флажки «Показывать служебные реквизиты» и «Режим разработчика».
  5. Перейдем на появившуюся вкладку «Выполнить произвольный алгоритм».
  6. Напишем простой код для корректировки нужного поля объекта без оглядки на видимость реквизитов в пользовательском интерфейсе.

Посмотрим на пример алгоритма для массовой замены подразделения:


// В контексте обработки доступна переменная Объект
Если Объект.ПодразделениеЗатрат = СтароеПодразделение Тогда
    Объект.ПодразделениеЗатрат = НовоеПодразделение;
КонецЕсли;

Решение 3. Использование инструмента «Поиск и удаление дублей»

Если задача заключается в том, чтобы исправить последствия некорректной синхронизации, когда в базу попал дублирующий или ошибочный элемент справочника Подразделения, самым надежным штатным средством является замена ссылок:

  1. Перейдем в раздел Администрирование → Обслуживание → Корректировка данных → Поиск и удаление дублей.
  2. В поле выбора области поиска укажем справочник Подразделения.
  3. Настроим критерии отбора или выполним поиск вручную.
  4. Назначим правильный элемент в качестве оригинала, а ошибочный поместим в дубли.
  5. Нажмем кнопку «Удалить дубли».

Данный инструмент осуществляет поиск прямых ссылок во всех таблицах информационной базы на уровне СУБД, игнорируя активность функциональных опций. В результате все некорректные подразделения в документах будут корректно заменены на правильные без необходимости ручной правки документов.

← На главную