При настройке или доработке стандартных бухгалтерских отчетов, таких как Оборотно-сальдовая ведомость или ОСВ по счету, разработчики нередко сталкиваются с ситуацией: в коде отчета или при отладке реквизит формы имеет значение Видимость = Истина и Доступность = Истина, счет учета поддерживает налоговый учет (например, счет 57.03), однако флажок показателя НУ в настройках отчета или колонка на форме физически отсутствуют.
Разберем подробно механизм платформы 1С:Предприятие 8.3, который приводит к такому поведению, выясним прикладную причину скрытия налогового учета и рассмотрим порядок исправления ситуации.
Проанализируем работу клиент-серверной архитектуры управляемого интерфейса. В управляемых формах 1С итоговое отображение элементов рассчитывается платформой динамически на основе нескольких уровней ограничений. Даже если разработчик программно устанавливает свойство Элементы.ИмяЭлемента.Видимость = Истина, платформа применяет вышестоящие правила видимости.
Ключевым механизмом управления интерфейсом здесь выступают Функциональные опции. Если элемент формы, реквизит или колонка таблицы связаны с определенной функциональной опцией, то при ее значении Ложь платформа принудительно скрывает элемент с экрана клиента, игнорируя базовые значения свойств формы.
Аналогично функциональные опции воздействуют на Систему компоновки данных (СКД): если опция отключена, связанные с ней ресурсы, поля группировок и настройки отчета автоматически исключаются из списка доступных полей отчета и панели настроек.
Рассмотрим, какие именно настройки конфигурации влияют на состояние функциональных опций, отвечающих за налоговый учет:
Ложь.Разберем по шагам, как вернуть отображение показателей НУ или корректно учесть влияние функциональных опций при разработке.
Посмотрим на пример кода, который вызывается на клиенте при изменении организации в шапке отчета для корректного пересчета видимости элементов:
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
УстановитьПараметрыФункциональныхОпций();
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыФункциональныхОпций()
ПараметрыОпций = Новый Структура;
ПараметрыОпций.Вставить("Организация", Отчет.Организация);
УстановитьПараметрыФункциональныхОпцийФормы(ПараметрыОпций);
КонецПроцедуры
Использование метода УстановитьПараметрыФункциональныхОпцийФормы() инициирует обновление интерфейса управляемой формы в соответствии с настройками выбранной организации, после чего показатели налогового учета становятся доступны пользователю.