Как узнать, какая функциональная опция скрывает объект или реквизит в 1С?

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

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

Поиск функциональных опций объекта в конфигураторе

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

  1. Откроем дерево метаданных в конфигураторе.
  2. Найдем интересующий объект или его реквизит (например, Реквизиты.Организация у документа).
  3. Нажмем на объект правой кнопкой мыши и выберем пункт Дополнительно, затем перейдем на вкладку Функциональные опции (либо откроем палитру свойств объекта и перейдем на соответствующую закладку).
  4. В открывшемся списке проанализируем, напротив каких функциональных опций установлены флажки.

Если к объекту привязана опция (например, ИспользоватьНесколькоОрганизаций), то при отключенном значении соответствующей константы в режиме 1С:Предприятие (раздел НСИ и администрирование — Настройка параметров системы — Предприятие) поле автоматически скрывается из командного интерфейса и управляемых форм.

Логика работы нескольких функциональных опций

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

Для проверки текущего состояния всех ФО, в состав которых входит объект, под конкретным пользователем можно использовать программный поиск:


ИскомыйОбъект = Метаданные.Справочники.Организации;

Для Каждого ФО Из Метаданные.ФункциональныеОпции Цикл
    Если ФО.Состав.Содержит(ИскомыйОбъект) Тогда
        ЗначениеФО = ПолучитьФункциональнуюОпцию(ФО.Имя);
        Сообщить(СтрШаблон("ФО: %1 | Значение: %2 | Хранилище: %3", ФО.Имя, ЗначениеФО, ФО.Хранение));
    КонецЕсли;
КонецЦикла;

Почему поле пропадает из Конструктора запросов: ФО или права доступа?

Важно понимать разграничение зон ответственности механизмов платформы:

  1. Функциональные опции управляют исключительно элементами пользовательского интерфейса (видимостью полей на формах, командами в панели навигации) и не скрывают таблицы или поля из дерева метаданных в Конструкторе запросов.
  2. Если поле отсутствует в дереве Конструктора запросов или консоли запросов под конкретным пользователем, причина всегда заключается в ограничениях прав доступа (RLS или правах по ролям). У пользователя отсутствует право Чтение или Просмотр на данный реквизит объекта.

Особенности отображения граф в журналах документов

Если колонка (графа) скрывается именно в общем журнале документов, но отображается в формах самих документов, проанализируем механизм работы журнала:

  1. Графа журнала объединяет однотипные реквизиты всех видов документов, входящих в данный журнал.
  2. Правило платформы: если у пользователя нет прав на Чтение или Просмотр реквизита хотя бы одного документа из состава графы журнала, платформа скрывает всю колонку целиком для этого пользователя.

Для поиска документа, который блокирует отображение графы журнала, выполним программную проверку доступности прав:


Журнал = Метаданные.ЖурналыДокументов.ВнутренниеТовародвижения;

Для Каждого Графа Из Журнал.Графы Цикл
    Если Графа.Имя = "Организация" Тогда
        Для Каждого СсылкаРеквизита Из Графа.Ссылки Цикл
            Реквизит = СсылкаРеквизита.Реквизит;
            Документ = Реквизит.Родитель();
            
            ПравоЧтения    = ПравоДоступа("Чтение", Документ);
            ПравоПросмотра = ПравоДоступа("Просмотр", Реквизит);
            
            Если Не (ПравоЧтения И ПравоПросмотра) Тогда
                Сообщить(СтрШаблон("Ограничение в документе: %1 (Чтение: %2, Просмотр реквизита: %3)", 
                    Документ.Имя, ПравоЧтения, ПравоПросмотра));
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
КонецЦикла;

Программная настройка видимости в типовых конфигурациях

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

← На главную