В процессе работы с 1С:ERP часто возникает задача оптимизации интерфейса для быстрого доступа к часто используемым отчетам. Стандартное поведение системы предполагает открытие отчетов через панель "Отчеты по продажам", "Отчеты по производству" и т.д. Однако это может приводить к лишним кликам, а иногда, как в ситуации автора темы, к открытию промежуточной пустой формы, с которой уже и нужно запускать сам отчет. Давайте разберемся, как настроить систему так, чтобы отчет запускался одной командой прямо из основной панели разделов ("Продажи", "Склад и доставка" и т.п.). В качестве альтернативного решения можно использовать расширение для добавления любых отчетов на начальную страницу без изменения структуры разделов.
Основная задача — разместить в панели разделов не сам раздел с отчетами, а конкретную команду, которая будет напрямую открывать форму нужного отчета. Проанализируем два основных способа решения этой задачи: стандартными средствами конфигуратора и с помощью программной доработки. Для более масштабного исключения рутины и автоматизации сложных цепочек действий пользователя также применяется платформа для создания программных роботов RPA с визуальным конструктором сценариев.
Этот способ является предпочтительным, так как не требует изменения кода и выполняется стандартными средствами платформы. Он идеально подходит для большинства случаев. Разберем его по шагам.
Создание и настройка команды отчета.
Первый и самый важный шаг — убедиться, что у нашего отчета есть собственная команда для открытия. Для этого открываем конфигуратор и находим нужный нам объект-отчет.
Переходим на вкладку «Команды». Если список пуст, нужно создать новую команду. Если команды уже есть (например, стандартная команда «Открыть»), нужно проверить ее свойства. Нас интересуют следующие параметры:
Также не забываем проверить, что на вкладке «Основные» у самого отчета установлен флаг «Использовать стандартные команды». Это позволяет системе автоматически генерировать базовые команды, которые также можно использовать.
Включение отчета в подсистему.
Чтобы команда стала доступна для настройки в интерфейсе, сам объект-отчет должен быть включен в состав хотя бы одной подсистемы. Например, отчет по остаткам логично включить в подсистему «Склад и доставка». Это делается на вкладке «Подсистемы» в свойствах объекта отчета.
Редактирование командного интерфейса подсистемы.
Теперь самое главное — сделаем нашу команду видимой в панели разделов. Для этого в дереве конфигурации находим нужную подсистему (например, «Склад и доставка») и открываем ее «Командный интерфейс».
В левой части окна редактора мы видим группы команд. Нас интересует «Панель навигации». В правой части окна отобразятся все команды, доступные для этой группы. Находим здесь нашу созданную команду («Остатки товаров на складах») и устанавливаем для нее флажок «Видимость». Флажок «Автовидимость» можно снять, чтобы управлять отображением вручную.
Важный момент: Именно этот шаг решает проблему «пустого окна». Пустое окно появляется тогда, когда в интерфейс добавляется не конкретная команда отчета, а общая группа «Отчеты по складу». Система в этом случае открывает общую форму-контейнер для всех отчетов этого раздела. Добавляя же явную команду, мы даем системе прямое указание открыть форму именно этого отчета.
Настройка в режиме «Предприятие».
После сохранения конфигурации и обновления базы данных, наша команда должна появиться в указанном разделе. Если этого не произошло, или вы хотите изменить ее положение, можно воспользоваться настройкой в режиме «Предприятие». Пользователь с соответствующими правами может зайти в меню «Вид» → «Настройка панели разделов...» и вручную добавить доступную команду в видимую область. В случае администрирования нескольких баз этот технический этап можно выполнять с помощью программы для автоматического архивирования и обновления 1С в тихом режиме.
Иногда требуется более гибкое поведение: например, открыть отчет с уже установленными параметрами или выполнить какие-то предварительные действия. В этом случае стандартной команды может быть недостаточно. Здесь нам на помощь придут общие команды и расширения конфигурации.
Этот метод рекомендуется выполнять в расширении, чтобы не изменять основную конфигурацию и не усложнять последующие обновления.
Создание общей команды в расширении.
В своем расширении создаем новую Общую команду. Заполняем ее свойства:
Написание кода обработчика.
Самое главное в общей команде — это ее обработчик. Создаем для команды модуль и пишем в нем процедуру-обработчик. В этой процедуре мы можем программно открыть форму отчета.
Посмотрим на пример. Допустим, мы хотим открыть отчет «ОстаткиТоваров» и установить в нем отбор по конкретному складу.
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
// Определяем параметры формы, которые мы хотим передать
ПараметрыФормы = Новый Структура;
// Например, мы хотим установить отбор по складу "Основной"
// Для этого нужно знать имя реквизита отбора в отчете
// Предположим, он называется "Склад"
// Найдем нужный склад
ОсновнойСклад = Справочники.Склады.НайтиПоНаименованию("Основной");
Если ЗначениеЗаполнено(ОсновнойСклад) Тогда
// Создаем структуру для отбора
Отбор = Новый Структура("Склад", ОсновнойСклад);
ПараметрыФормы.Вставить("Отбор", Отбор);
КонецЕсли;
// Устанавливаем ключ уникальности, чтобы форма всегда открывалась новая
ПараметрыФормы.Вставить("Уникальность", Новый УникальныйИдентификатор);
// Открываем форму отчета с нашими параметрами
ОткрытьФорму("Отчет.ОстаткиТоваров.Форма", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно);
КонецПроцедуры
В этом коде мы использовали функцию ОткрытьФорму(), которая позволяет не только открыть нужную форму, но и передать в нее различные параметры, включая начальные значения отборов. При необходимости можно воспользоваться готовым расширением для автоматической передачи отборов в отчеты с форм, которое позволяет решать подобные задачи без написания программного кода.
Настройка видимости общей команды.
Чтобы наша общая команда появилась в панели разделов, ее нужно включить в командный интерфейс основной конфигурации или какой-либо подсистемы. Это делается через свойство команды «Включить в командный интерфейс» или через редактор командного интерфейса нужной подсистемы, аналогично первому способу.
Таким образом, для решения задачи по прямому вызову отчета из главного меню ERP есть два надежных пути. В большинстве случаев достаточно грамотно настроить стандартную команду отчета и ее видимость в командном интерфейсе. Для более сложных сценариев с передачей параметров или выполнением дополнительной логики идеально подходит создание общей команды в расширении.