Работа с Системой компоновки данных (СКД) — это стандарт де-факто для разработки отчетов в современной экосистеме 1С. Однако иногда разработчики сталкиваются с ситуацией, когда поле, идеально настроенное в Конфигураторе, напрочь отсутствует в режиме Предприятия: его нет ни в доступных полях выбора, ни в группировках, ни в отборах. Проанализируем основные причины этого поведения и разберем по шагам, как вернуть пропавшие данные.
Наиболее частая причина, по которой поле исчезает «отовсюду», — это влияние функциональных опций (ФО). В крупных конфигурациях, таких как 1С:ERP или 1С:Комплексная автоматизация, многие реквизиты объектов привязаны к настройкам системы. Если функциональная опция выключена, платформа автоматически скрывает связанные с ней поля в интерфейсе и в отчетах.
Рассмотрим, как это работает в СКД. В свойствах самого объекта конфигурации Отчет существует важная настройка. Проанализируем наши действия:
Если этот флаг установлен, то СКД будет жестко фильтровать все поля запроса. Если поле в базе данных связано с какой-либо ФО, которая в данный момент не активна в константах, это поле будет вырезано из схемы компоновки «на лету». Решение: для отладки или в специфических отчетах этот флаг можно снять, чтобы отчет игнорировал глобальные настройки видимости реквизитов.
Довольно часто программист добавляет новое поле или отбор в схему, сохраняет конфигурацию, но в режиме Предприятия ничего не меняется. Выясним причину: это происходит потому, что 1С сохраняет настройки отчета для каждого конкретного пользователя в специальном хранилище.
Когда вы открываете отчет, система не всегда берет «свежую» схему из конфигуратора. Она пытается применить те настройки (выбранные поля, порядок, отборы), которые пользователь установил в прошлый раз. Разберем, как сбросить эти настройки:
Это действие заставит платформу перечитать структуру из XML-схемы, заложенной в конфигураторе, и обновить список доступных полей. Как показывает практика, в 50% случаев проблема «исчезновения» решается именно этим простым действием.
Если поле доступно для выбора, но его невозможно использовать в отборах, или наоборот, нам необходимо проверить вкладку «Наборы данных» в конструкторе СКД. Посмотрим на колонки ограничений:
Проверьте эти флаги. Иногда при копировании наборов данных или импорте схем эти ограничения устанавливаются автоматически или по ошибке.
В тексте темы упоминалась проблема: «В режиме конфигуратора добавил отбор, но в предприятии он не отображается». Это классическая ситуация, связанная с Режимом отображения элемента настройки. Рассмотрим подробнее уровни настроек в СКД:
Режим отображения. Если установлено Недоступный, пользователь не увидит этот отбор, хотя он будет применяться программно. Установите Обычный или Быстрый доступ.В некоторых случаях нам может потребоваться программно проверить, какие поля доступны компоновщику. Рассмотрим пример кода, который можно использовать в модуле отчета для анализа доступных полей компоновки:
Процедура ПриКомпоновкеРезультата(ДанныеРасшифровки, СтандартнаяОбработка)
// Проанализируем доступные поля выбора
Для Каждого Поле Из КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора.Элементы Цикл
Сообщить("Поле: " + Поле.Заголовок + " | Путь: " + Поле.Поле);
КонецЦикла;
// Если нужно программно включить поле, игнорируя настройки
// Это делается через модификацию схемы перед выводом
КонецПроцедуры
Использование этого кода в отладке поможет вам понять, видит ли вообще КомпоновщикНастроек ваше поле. Если в этом цикле поля нет — значит, оно отсечено либо правами доступа (RLS), либо функциональными опциями на уровне метаданных.
Как справедливо заметили коллеги в обсуждении, отличным подспорьем является Консоль компоновки данных (например, из состава ИР — Инструментария Разработчика). В таких консолях часто есть визуальные индикаторы, которые показывают, почему то или иное поле стало недоступным. Например, они могут подсвечивать поля, скрытые функциональными опциями, серым цветом или выводить их в отдельный список «Отключенные поля».
Если вы работаете в ERP, помните, что из-за использования Управляемых форм и защиты от опасных действий некоторые внешние консоли могут требовать запуска в режиме Толстый клиент (управляемое приложение) или наличия определенных расширений для корректной работы с метаданными.
Подведем итог. Если у вас пропало поле в СКД, действуйте по следующему алгоритму:
Недоступный).Эти шаги позволяют решить большинство проблем с видимостью данных в 99% случаев, сохраняя нервы разработчика и время пользователя.