Где в ЗУП 3.1 найти аналог консоли отчетов и произвольных отчетов из ЗУП 2.5

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

При переходе с конфигурации «1С:Зарплата и управление персоналом» версии 2.5 на современную редакцию 3.1 пользователи и разработчики часто сталкиваются с изменением привычного интерфейса и методологии работы. Одним из наиболее ощутимых изменений становится отсутствие популярного ранее инструмента «Произвольные отчеты» (который в старой версии находился в меню «Сервис»). Этот инструмент фактически представлял собой встроенную консоль запросов и построитель отчетов, позволяя быстро извлекать любые данные из информационной базы без изменения конфигурации.

В этой статье мы подробно разберем, почему разработчики фирмы «1С» отказались от этого механизма в новой редакции, какими встроенными альтернативами его можно заменить, как правильно подключить внешнюю консоль запросов в ЗУП 3.1 и как решить частую проблему с отображением временных таблиц в результатах запроса.

Почему в ЗУП 3.1 больше нет встроенных «Произвольных отчетов»

Переход платформы «1С:Предприятие» на управляемые формы и активное внедрение Библиотеки стандартных подсистем (БСП) полностью изменили архитектуру отчетности. В ЗУП 2.5 многие отчеты строились на базе устаревшего класса ПостроительОтчета. В ЗУП 3.1 абсолютно все отчеты базируются на мощном и гибком механизме — Системе компоновки данных (СКД).

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

Способ 1. Использование встроенных возможностей настройки СКД

Прежде чем прибегать к внешним обработкам, проанализируем возможности изменения существующих отчетов. Поскольку все отчеты в ЗУП 3.1 построены на СКД, вам не обязательно писать новый запрос с нуля. Вы можете взять любой схожий по смыслу типовой отчет и оперативно перенастроить его под свои нужды.

Разберем по шагам, как это сделать:

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

Способ 2. Скрытые возможности встроенного «Универсального отчета»

Существует мнение, что встроенный в БСП УниверсальныйОтчет умеет работать только с одним конкретным регистром, справочником или документом. Однако в современных версиях ЗУП 3.1 у него есть скрытый потенциал, о котором мало кто знает. Выясним, как получить доступ к редактированию его схемы:

Если запустить ЗУП 3.1 в режиме «Толстого клиента», открыть «Универсальный отчет» и перейти в меню «Все действия» — «Варианты отчета», вы обнаружите там недокументированную возможность «Редактировать схему». Это позволяет продвинутому специалисту прямо на лету переписать XML-схему компоновки данных, связать несколько таблиц или регистров и сохранить результат в пользовательском режиме без внесения изменений в конфигурацию.

Кроме того, в ЗУП 3.1 встроен специальный Механизм представлений (виртуальных таблиц БСП). Многие расчетные данные (такие как кадровые срезы, плановый ФОТ, фактически отработанное время) не хранятся в регистрах в чистом виде, а рассчитываются динамически. Обращаясь к этим представлениям через СКД универсального отчета, вы автоматически задействуете сложные пакетные запросы, которые система разворачивает самостоятельно.

Способ 3. Подключение внешней консоли запросов в интерфейс ЗУП 3.1

Если вам необходим классический инструмент для написания произвольных SQL-подобных запросов к базе данных, оптимальным решением будет использование внешней консоли запросов или консоли отчетов для управляемых форм. Их можно скачать с официального портала ИТС или воспользоваться популярным комплексом «Инструменты разработчика».

Чтобы пользователям не приходилось каждый раз открывать консоль через меню «Файл» — «Открыть», интегрируем ее непосредственно в интерфейс программы. Разберем этот процесс по шагам:

  1. Перейдите в раздел «Администрирование», затем выберите пункт «Печатные формы, отчеты и обработки».
  2. Убедитесь, что установлен флаг «Дополнительные отчеты и обработки», и перейдите по одноименной ссылке.
  3. Нажмите кнопку «Добавить из файла...» и выберите файл внешней консоли запросов (с расширением .epf).
  4. В карточке регистрации укажите разделы интерфейса (например, «Кадры» или «Зарплата»), в которых должна отображаться консоль, и настройте права доступа для пользователей.
  5. Сохраните изменения. Теперь пользователи смогут запускать консоль прямо из панели отчетов или командной панели выбранных разделов.

Решение проблемы с отображением временных таблиц в консоли запросов

Рассмотрим частую проблему, с которой сталкиваются начинающие разработчики при работе с внешними консолями запросов в ЗУП 3.1. При написании сложных пакетных запросов консоль успешно отображает промежуточные временные таблицы (ВТ), но вкладка с основным результатом запроса остается пустой.

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

Посмотрим на пример неправильно составленного пакета запросов:


ВЫБРАТЬ
    Сотрудники.Ссылка КАК Сотрудник,
    Сотрудники.Код КАК Код
ПОМЕСТИТЬ ВТ_Сотрудники
ИЗ
    Справочник.Сотрудники КАК Сотрудники
ГДЕ
    НЕ Сотрудники.ПометкаУдаления;

В данном случае данные помещаются во временную таблицу ВТ_Сотрудники, и на этом пакет завершается. Консоль запросов покажет вам эту таблицу на вкладке временных таблиц, но финальный результат будет пуст.

Чтобы исправить эту ситуацию, всегда завершайте пакет явным не-временным запросом, который извлекает данные из вашей финальной временной таблицы. Посмотрим на правильный пример:


ВЫБРАТЬ
    Сотрудники.Ссылка КАК Сотрудник,
    Сотрудники.Код КАК Код
ПОМЕСТИТЬ ВТ_Сотрудники
ИЗ
    Справочник.Сотрудники КАК Сотрудники
ГДЕ
    НЕ Сотрудники.ПометкаУдаления;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Сотрудники.Сотрудник КАК Сотрудник,
    ВТ_Сотрудники.Код КАК Код
ИЗ
    ВТ_Сотрудники КАК ВТ_Сотрудники;

Добавление конструкции ВЫБРАТЬ ... ИЗ ВТ_Сотрудники в самом конце пакета гарантирует, что консоль запросов корректно определит основной результат выборки и выведет его на вкладку результатов выполнения запроса.

← На главную