При разработке нового отчета непосредственно в расширении для платформы 1С:Предприятие 8.3 (управляемые формы), часто возникает ситуация, когда, несмотря на активное расширение и полные права у пользователя, отчет остается невидимым в списке "Все функции" или в подсистемах. Разберем эту проблему подробно и предложим пошаговое решение.
Мы выясним, почему новый отчет, разработанный в расширении, не отображается для пользователей, даже если у них есть полные права. Основная причина кроется в механизме работы прав доступа в 1С:Предприятии. Полные права, которые мы обычно назначаем пользователю в основной конфигурации, не распространяются автоматически на новые объекты, добавленные через расширение. Расширение является по сути отдельным слоем, который дополняет или изменяет базовую конфигурацию, и его объекты требуют собственной, явной настройки прав доступа.
Когда мы создаем новый объект, например, отчет, в расширении, он не наследует права от существующих ролей основной конфигурации. Это означает, что для доступа к такому отчету нам необходимо явно указать, какие пользователи или роли имеют право его видеть и использовать. Отсутствие таких явных настроек является наиболее частой причиной невидимости отчета.
Первым и одним из наиболее важных шагов является корректная настройка прав доступа к нашему новому отчету. Мы не можем использовать существующие роли основной конфигурации для управления правами на объекты расширения без дополнительных манипуляций. Вместо этого, мы создадим новую роль непосредственно в нашем расширении.
Откроем конфигуратор: Запустим 1С:Предприятие в режиме конфигуратора.
Перейдем к расширению: В дереве конфигурации найдем ветку "Расширения", раскроем ее и выберем наше расширение.
Создадим новую роль: Внутри расширения найдем ветку "Роли". Щелкнем по ней правой кнопкой мыши и выберем "Добавить" или нажмем клавишу Insert. Назовем новую роль, например, ДоступКОтчету_МойОтчет.
Настроим права на отчет: Откроем свойства только что созданной роли. Перейдем на вкладку "Права". В списке объектов найдем наш новый отчет, который мы добавили в расширение. Он будет находиться в разделе "Отчеты", но уже в контексте нашего расширения. Установим для него необходимые права, как минимум, "Просмотр". Обычно это включает следующие флаги:
Просмотр: Позволяет пользователю видеть отчет и открывать его.Использование: Позволяет выполнять отчет.Если отчет содержит собственные команды или использует данные из регистров или справочников, нам также может потребоваться предоставить права на эти объекты. Убедимся, что для отчета установлены все необходимые права.
Сохраним расширение: После настройки прав обязательно сохраним изменения в расширении.
Таким образом, мы создали специфическую роль, которая явно предоставляет доступ к нашему отчету внутри расширения. Теперь нам необходимо применить эту роль к пользователю.
После того как мы создали роль в расширении и настроили в ней права на наш отчет, нам нужно назначить эту роль конкретному пользователю или группе пользователей. Рассмотрим два основных способа.
Это наиболее надежный и проверенный способ, который часто решает проблему невидимости отчета. Мы назначим нашу новую роль напрямую пользователю в конфигураторе.
Откроем конфигуратор: Снова запустим 1С:Предприятие в режиме конфигуратора.
Перейдем к списку пользователей: В главном меню выберем "Администрирование" -> "Пользователи".
Выберем нужного пользователя: В списке пользователей информационной базы найдем пользователя, под которым мы работаем и который должен видеть отчет. Дважды кликнем по нему, чтобы открыть свойства пользователя.
Назначим роль из расширения: В окне свойств пользователя перейдем на вкладку "Роли". В этом списке мы увидим все доступные роли, включая те, что мы создали в расширении (их названия могут быть дополнены именем расширения, например, [ИмяРасширения] – ДоступКОтчету_МойОтчет). Установим флажок напротив нашей новой роли ДоступКОтчету_МойОтчет.
Сохраним изменения: Нажмем "ОК" для сохранения изменений в свойствах пользователя. Возможно, потребуется также сохранить конфигурацию базы данных, если система предложит это.
После выполнения этих действий, пользователю будет явно назначена роль, дающая доступ к отчету. Теперь мы можем перейти к проверке.
Иногда, даже после правильной настройки прав, отчет может не появиться сразу. Это связано с механизмом кэширования прав в 1С:Предприятии.
Перезапустим сессию 1С: Обязательно полностью закроем клиентское приложение 1С:Предприятие и запустим его заново. Это принудительно обновит кэш прав пользователя.
Проверим видимость отчета: Войдем в 1С под учетной записью пользователя. Попробуем найти отчет через "Все функции" (если он не привязан к подсистеме) или в соответствующем разделе, если мы привязали его к одной из подсистем через расширение.
Если отчет всё еще не виден: В редких случаях может потребоваться дополнительное действие. Вернемся в конфигуратор, снова откроем свойства пользователя, убедимся, что роль назначена, и просто нажмем "ОК" еще раз, чтобы "перезаписать" пользователя. Иногда это помогает обновить внутренние кэши платформы.
Обычно, прямое назначение роли и перезапуск сессии решают проблему невидимости отчета в расширении.
Возникает вопрос: почему не срабатывают группы доступа или профили, если у пользователя уже есть полные права или он входит в группу, которая теоретически должна давать доступ ко всему? Мы проанализируем эту ситуацию подробнее.
Механизм групп доступа и профилей в 1С предназначен для централизованного управления правами на объекты основной конфигурации. Когда мы говорим о новых объектах, созданных непосредственно в расширении, платформа может не всегда корректно применять к ним стандартные профили групп доступа без дополнительных настроек или доработок. В частности, это касается пользователей с "Полными правами" — часто подразумевается, что такие пользователи видят все, но это не всегда так для *новых* объектов расширения. Система может не "видеть" в стандартных профилях ролей из расширений, поскольку эти роли были добавлены после создания профилей и не были явно включены в них.
Как отмечается в обсуждении, "Группы доступа при полных правах - без доработки в 10 строчек это фантастика". Это означает, что для автоматического включения ролей расширения в логику групп доступа может потребоваться доработка кода Библиотеки стандартных подсистем (БСП) или аналогичных механизмов управления правами, что выходит за рамки простой настройки.
Вместо создания новой роли в расширении и ее прямого назначения, существует альтернативный подход, который может быть полезен, если мы хотим использовать существующие механизмы. Мы можем заимствовать стандартную роль "ПолныеПрава" из основной конфигурации и модифицировать ее в расширении.
Заимствуем роль "ПолныеПрава": В конфигураторе откроем наше расширение. Перейдем на вкладку "Конфигурация". Найдем роль "ПолныеПрава" в основной конфигурации. Щелкнем по ней правой кнопкой мыши и выберем "Заимствовать в расширение".
Добавим права к заимствованной роли: Теперь в нашем расширении появится заимствованная роль "ПолныеПрава" (или с похожим названием, указывающим на расширение). Откроем ее свойства и добавим права на наш новый отчет, как мы это делали в Шаге 1 для новой роли. Убедимся, что для отчета установлены флаги "Просмотр" и "Использование".
Сохраним и проверим: Сохраним расширение и перезапустим клиент 1С. Поскольку роль "ПолныеПрава" уже назначена многим администраторам и разработчикам, добавление прав на отчет непосредственно в эту заимствованную роль должно сделать его видимым без дополнительных назначений.
Этот метод может быть удобен, если мы хотим, чтобы все пользователи с полными правами автоматически получали доступ к новым объектам расширения без необходимости явно назначать им дополнительные роли.
Возникает закономерный вопрос: "чем отчет в расширении удобней и лучше, чем обычный внешний отчет в справочник дополнительных отчетов?" Рассмотрим преимущества использования расширений.
Мы видим, что отчеты в расширениях интегрируются в конфигурацию гораздо глубже, чем внешние. Они становятся частью конфигурации, как будто были изначально в ней созданы. Это обеспечивает более нативную работу:
Доступ через "Все функции": Отчеты, корректно настроенные в расширении, доступны через стандартный механизм "Все функции", что удобно для разработчиков и продвинутых пользователей. Внешние отчеты обычно требуют отдельного пункта меню или специализированного справочника.
Привязка к подсистемам: Мы можем привязать отчет из расширения к конкретным подсистемам основной конфигурации, используя функциональность расширений. Это позволяет отчету органично вписываться в интерфейс пользователя, появляясь в соответствующих разделах меню, что значительно улучшает пользовательский опыт по сравнению с внешними отчетами, которые часто требуют запуска из справочника "Дополнительные отчеты и обработки".
Использование общих механизмов: Отчеты в расширениях могут полноценно использовать общие модули, перечисления, справочники и другие объекты, модифицированные или добавленные в рамках того же расширения, или объекты основной конфигурации, обеспечивая полную совместимость.
Расширения предлагают несравненно большую гибкость:
Изменение существующих форм и команд: Мы можем изменять существующие формы, команды и даже код основной конфигурации, что является фундаментальным преимуществом расширений. Внешние отчеты ограничены в своих возможностях и могут только использовать данные и механизмы основной конфигурации, но не менять их.
Добавление новых реквизитов и табличных частей: Через расширения мы можем добавлять новые реквизиты, табличные части к существующим объектам конфигурации (например, документам, справочникам), что затем может быть использовано в наших отчетах. Это позволяет значительно расширять функциональность системы, не снимая ее с поддержки.
Мы обнаруживаем, что работа с расширениями значительно упрощает процесс обновления типовой конфигурации:
Независимость от основной конфигурации: Отчеты в расширениях менее подвержены проблемам при обновлении основной конфигурации, так как расширение поддерживается отдельно и не затрагивает исходный код конфигурации. Это критически важно для сохранения конфигурации на поддержке.
Снижение рисков: Внешние отчеты могут потребовать доработок после обновлений, если изменилась структура данных, на которые они опираются, или если изменились интерфейсы функций. С расширениями мы управляем изменениями более централизованно.
Мы также увидим, что управление версиями расширений может быть более удобным:
Централизованное управление: Вместо управления множеством отдельных файлов внешних отчетов, мы можем версионировать и управлять одним или несколькими файлами расширений, содержащими весь дополнительный функционал, включая отчеты.
В некоторых случаях, как было упомянуто в сообщении 12, специфическая реализация Библиотеки стандартных подсистем (БСП) в конфигурации может приводить к тому, что внешние отчеты либо вовсе не работают, либо работают некорректно. Например, если в БСП используются особые механизмы контроля доступа или загрузки внешних ресурсов, которые не предусмотрены для обычных внешних отчетов.
В таких ситуациях, когда "БСП такая, что допотчёты не работают", расширения становятся не просто предпочтительным, но зачастую единственным рабочим выбором для добавления нового функционала, включая отчеты, без снятия конфигурации с поддержки.
В целом, несмотря на то, что работа с расширениями и настройкой прав в них может потребовать более глубоких знаний механизмов 1С, их преимущества в гибкости, интеграции и устойчивости к обновлениям делают их более современным и предпочтительным инструментом для развития функциональности типовых конфигураций по сравнению с "замшелыми" внешними отчетами.