Как сделать активной кнопку «Дополнительные отчеты» в 1С

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

В процессе работы с конфигурациями на базе 1С:Предприятие пользователи часто сталкиваются с ситуацией, когда кнопка «Дополнительные отчеты» становится неактивной (серой) или вовсе пропадает из командной панели. Это может происходить даже в тех случаях, когда обычная печать документа доступна. Разберем подробно причины такого поведения системы и рассмотрим пошаговые инструкции по исправлению ситуации как для администраторов, так и для разработчиков.

Анализируем системные настройки и права доступа

Первым делом нам необходимо исключить самые простые причины, связанные с административными настройками системы. Если подсистема дополнительных отчетов и обработок не настроена должным образом, никакие программные манипуляции не помогут. Проанализируем основные пункты:

  1. Проверка функциональной опции. Перейдем в раздел «Администрирование», далее выберем пункт «Печатные формы, отчеты и обработки». Убедимся, что флаг Дополнительные отчеты и обработки установлен. Если эта опция выключена, механизмы БСП (Библиотеки стандартных подсистем) просто не будут инициализировать соответствующие команды в формах.
  2. Назначение ролей пользователю. Для работы с внешними объектами пользователю должна быть назначена специализированная роль. Обычно она называется Использование дополнительных отчетов и обработок. Без этой роли подсистема безопасности 1С блокирует доступ к интерфейсным элементам, связанным с внешним кодом.
  3. Статус публикации отчета. Зайдем в справочник Дополнительные отчеты и обработки и найдем нужный нам отчет. Проверим поле «Публикация». Если там установлено значение В разработке, то отчет будет виден и доступен только пользователям с полными правами (администраторам). Для обычных пользователей необходимо установить статус Опубликовано.

Выясняем причину блокировки в режиме «Только просмотр»

Довольно часто кнопка «Дополнительные отчеты» становится недоступной, когда сам документ закрыт для редактирования. Это может быть связано с тем, что документ уже проведен, помечен на удаление или находится в закрытом периоде (установлена дата запрета изменения данных). Рассмотрим, почему это происходит.

Стандартная логика БСП разделяет команды на «безопасные» и «потенциально изменяющие данные». Команда Печать обычно считается безопасной, поэтому она остается активной даже в заблокированной форме. Однако дополнительные отчеты и обработки по умолчанию воспринимаются системой как инструменты, которые могут вносить изменения в базу данных. Поэтому, когда форма переходит в состояние ТолькоПросмотр, платформа автоматически отключает все кнопки, добавленные подсистемой дополнительных обработок.

Проанализируем свойство «Изменяет сохраняемые данные». В метаданных каждой команды или в параметрах регистрации внешней обработки есть признак, указывающий, влияет ли данная операция на данные в базе. Если мы создаем отчет, который только выводит информацию, нам важно убедиться, что этот признак не установлен в значение Истина.

Программные способы разблокировки кнопки

Если административные меры не помогают и нам требуется принудительно активировать кнопку в форме, которая открыта только для чтения, придется прибегнуть к доработке конфигурации или использованию расширения. Рассмотрим несколько подходов.

Во-первых, проанализируем процедуру ПриСозданииНаСервере в модуле формы документа. В типовых конфигурациях именно здесь происходит заполнение командной панели через вызов подсистемы БСП. Нам нужно найти место, где вызывается метод ДополнительныеОтчетыИОбработки.ПриСозданииНаСервере.

Если мы хотим точечно изменить доступность конкретной кнопки, мы можем использовать следующий код в конце процедуры ПриСозданииНаСервере или в обработчике ПриЧтенииНаСервере:


&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
    // Разблокируем кнопку, если форма ушла в режим ТолькоПросмотр
    Если ЭтаФорма.ТолькоПросмотр Тогда
        // Находим нужный элемент по имени, которое присваивает БСП
        // Обычно имя формируется динамически, поэтому лучше искать по группе
        Для Каждого Элемент Из Элементы.ГруппаДополнительныеОтчетыИОбработки.ПодчиненныеЭлементы Цикл
            Элемент.Доступность = Истина;
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

Обратите внимание, что прямое обращение Элементы.НужнаяВамКнопка.Доступность = Истина может не сработать, если платформа перекрывает это свойство на уровне состояния всей формы. В таких случаях эффективнее управлять свойством ТолькоПросмотр для конкретных групп команд. Для решения этой задачи без изменения конфигурации можно использовать расширение для настройки доступности и режима просмотра элементов формы.

Разбор нюансов для разработчиков внешних отчетов

При разработке самого внешнего отчета (или обработки) важно правильно описать его в функции СведенияОВнешнейОбработке(). Посмотрим на пример формирования параметров, которые влияют на видимость и доступность:


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

Проанализируем параметр Модификатор. В некоторых версиях БСП использование модификатора Печать позволяет кнопке наследовать поведение стандартных печатных форм, которые остаются активными при установленном флаге ТолькоПросмотр у основной формы документа. Для быстрого поиска функций и шаблонов интеграции подсистем можно использовать справочник по методам БСП с примерами использования.

Особенности работы в «облачных» сервисах (1С:Фреш)

Если ваша информационная база развернута в сервисе 1С:Фреш, ситуация усложняется обязательным аудитом. Выясним, как это влияет на доступность кнопок:

Резюме по решению задачи

Подведем итог нашему исследованию. Для того чтобы кнопка «Дополнительные отчеты» стала активной, необходимо пройти по следующему чек-листу:

  1. Убедиться, что в настройках программы включена соответствующая функциональная опция.
  2. Проверить наличие у пользователя роли на использование дополнительных отчетов.
  3. В справочнике дополнительных отчетов проверить, что отчет «Опубликован» и для него выбрано правильное «Назначение» (соответствующий тип документа).
  4. Если форма документа находится в режиме ТолькоПросмотр, необходимо программно переопределить доступность кнопок в расширении или проверить свойство Изменяет данные в настройках команды внешнего отчета.

Используя данные методы, мы сможем гибко управлять интерфейсом программы и обеспечивать пользователям доступ к необходимым аналитическим инструментам вне зависимости от состояния документов.

← На главную