При настройке прав доступа и интерфейса в конфигурациях на платформе 1С:Предприятие 8.3 разработчики часто сталкиваются с ситуацией, когда определенное поле (например, Организация или Подразделение) пропадает из форм, списков или журналов документов. Разберем детально, как определить состав функциональных опций (ФО), влияющих на видимость объекта, и выясним основные причины скрытия реквизитов из интерфейса.
Для того чтобы быстро определить, в какие функциональные опции включен конкретный справочник, документ или отдельный реквизит, выполним следующие действия:
Реквизиты.Организация у документа).Если к объекту привязана опция (например, ИспользоватьНесколькоОрганизаций), то при отключенном значении соответствующей константы в режиме 1С:Предприятие (раздел НСИ и администрирование — Настройка параметров системы — Предприятие) поле автоматически скрывается из командного интерфейса и управляемых форм.
Если один и тот же объект или реквизит включен сразу в несколько функциональных опций, платформа 1С применяет логическую операцию ИЛИ. Это означает, что объект будет виден в интерфейсе пользователя, если включена хотя бы одна из привязанных функциональных опций. Никакая отдельная выключенная ФО не может принудительно скрыть объект, если другая связанная с ним опция активна.
Для проверки текущего состояния всех ФО, в состав которых входит объект, под конкретным пользователем можно использовать программный поиск:
ИскомыйОбъект = Метаданные.Справочники.Организации;
Для Каждого ФО Из Метаданные.ФункциональныеОпции Цикл
Если ФО.Состав.Содержит(ИскомыйОбъект) Тогда
ЗначениеФО = ПолучитьФункциональнуюОпцию(ФО.Имя);
Сообщить(СтрШаблон("ФО: %1 | Значение: %2 | Хранилище: %3", ФО.Имя, ЗначениеФО, ФО.Хранение));
КонецЕсли;
КонецЦикла;
Важно понимать разграничение зон ответственности механизмов платформы:
Чтение или Просмотр на данный реквизит объекта.Если колонка (графа) скрывается именно в общем журнале документов, но отображается в формах самих документов, проанализируем механизм работы журнала:
Чтение или Просмотр реквизита хотя бы одного документа из состава графы журнала, платформа скрывает всю колонку целиком для этого пользователя.Для поиска документа, который блокирует отображение графы журнала, выполним программную проверку доступности прав:
Журнал = Метаданные.ЖурналыДокументов.ВнутренниеТовародвижения;
Для Каждого Графа Из Журнал.Графы Цикл
Если Графа.Имя = "Организация" Тогда
Для Каждого СсылкаРеквизита Из Графа.Ссылки Цикл
Реквизит = СсылкаРеквизита.Реквизит;
Документ = Реквизит.Родитель();
ПравоЧтения = ПравоДоступа("Чтение", Документ);
ПравоПросмотра = ПравоДоступа("Просмотр", Реквизит);
Если Не (ПравоЧтения И ПравоПросмотра) Тогда
Сообщить(СтрШаблон("Ограничение в документе: %1 (Чтение: %2, Просмотр реквизита: %3)",
Документ.Имя, ПравоЧтения, ПравоПросмотра));
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
В типовых конфигурациях (УТ 11, ERP, КА) видимость элементов списков и журналов может дополнительно переопределяться кодом на базе Библиотеки стандартных подсистем (БСП). Если права и функциональные опции включены, проверим модуль формы журнала и процедуры в событии ПриСозданииНаСервере, где видимость элементов может регулироваться общими механизмами управления свойствами и настройками интерфейса.