Консоль запросов ЗУП с поддержкой обращения к методам программного интерфейса в запросах
Разработка - Инструментарий разработчика
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Если вы хотите узнать про генераию запросов для ЗУП на основе промтов пользователя, голосуйте за мой доклад на Infostart team event 2026.
Подробнее про техническую реализацию можно почитать в статье.
UPD
- [06.08.2025] версия расширения обновлена. Исправлены выявленные ошибки. Добавлено новое исполняемое представление РегистрНакопления.НарастающийИтог
UPD
- [30.12.2025] версия расширения обновлена. Исправлены выявленные ошибки.
Добавлен универсальный отчет с поддержкой произвольных запросов и исполняемых представлений. Подробности в статье.
Содержание:
Проблематика
Конфигурация 1С:Зарплата и управление персоналом (ЗУП) отличается от большинства других типовых решений платформы — прежде всего тем, что активно использует программный интерфейс (ПИ) для получения и подготовки данных. Вместо привычной работы с регистрами и справочниками, разработчики вынуждены обращаться к методам, создающим временные таблицы:
-
СоздатьВТКадровыеДанныеСотрудников -
СоздатьВТРабочиеМестаСотрудников -
СоздатьВТДанныеУчетаВремениИСостоянийСотрудников т.п.
Разрыв между моделью и реализацией
Одна из сильных сторон платформы 1С — возможность строить запросы на основе метаданных, не вникая в технические детали реализации. Но ЗУП отходит от этой концепции. Здесь аналитики работают с понятиями вроде «сотрудник», «должность», «начисление», а разработчики — с методами, параметрами и временными таблицами, не имеющими аналогов в конфигурации.
В результате:
-
Стандартная консоль запросов не позволяет получать данные, так, как это задумано в типовой;
-
Аналитики ограничены в возможностях самостоятельного анализа;
-
Разработчики вынуждены разбираться с недокументированным API, что увеличивает порог входа и затраты на поддержку.
Простой пример: получить актуальную должность сотрудника
Даже казалось бы тривиальная задача — получить текущую должность сотрудника — не так проста.
На первый взгляд, запрос к виртуальной таблице РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних должен решить проблему. Но на практике он может вернуть некорректный результат, например при наличии возвратных событий.
Пример посложнее: расшифровка базы начислений
Аналогично, в старых версиях конфигурации можно было использовать РегистрРасчета.Начисления.База как виртуальную таблицу. Сейчас для получения базы начисления требуется цепочка вызовов, где каждый метод подготавливает временные таблицы, фильтры и агрегаты. Аналитику без доступа к коду решить такую задачу невозможно. А разработчику потребуется время на изучение механизма и отладку.
Расширенная консоль запросов для ЗУП
QueryConsole1C — это расширение для платформы 1С:Предприятие, включающее усовершенствованную консоль запросов с поддержкой расширенной семантики языка запросов. Ключевая особенность — поддержка нового типа источников данных: ИсполняемыеПредставления, которые можно рассматривать как аналог виртуальных таблиц, адаптированный под архитектуру ЗУП.
Что такое исполняемые представления?
Исполняемые представления позволяют напрямую использовать методы программного интерфейса (ПИ) конфигурации ЗУП внутри пакетов запросов. Эти методы формируют временные таблицы, содержащие актуальные данные, рассчитанные по правилам типовой бизнес-логики. Консоль автоматически вызывает нужный метод, подставляет параметры и делает результат доступным для SQL-запросов.
Зачем это нужно?
В типовой конфигурации ЗУП доступ к ключевым данным (начислениям, кадровой истории, рабочим местам, базам и т.п.) осуществляется через вызовы программного интерфейса. Без использования ПИ получение корректных данных в запросе — нетривиальная задача, требующая глубокого понимания внутренней структуры и алгоритмов конфигурации. При этом стандартная консоль запросов не позволяет интегрировать вызов ПИ в текст запроса, что делает многие сценарии анализа и диагностики практически недоступными.
QueryConsole1C устраняет это ограничение.
Для кого и для чего
Инструмент ориентирован на разработчиков, аналитиков и консультантов, которым необходимо:
-
Выполнять сложные запросы к данным ЗУП с учетом встроенной бизнес-логики;
-
Интерактивно анализировать содержимое временных таблиц, формируемых методами ПИ;
-
Генерировать код на встроенном языке 1С, где исполняемые представления автоматически преобразуются в вызовы ПИ;
-
Упрощать построение запросов через визуальный конструктор, поддерживающий расширения языка и работу с параметрами.
Подробнее про исполняемые представления
Исполняемые представления — это расширение концепции виртуальных таблиц платформы 1С, адаптированное под архитектуру конфигурации ЗУП. Они позволяют интегрировать вызовы программного интерфейса (ПИ) прямо в тело SQL-запроса, делая доступ к сложной логике получения данных максимально прозрачным и удобным.
Как это работает
При выполнении запроса, содержащего ссылку на исполняемое представление, консоль:
-
Определяет, какие параметры и фильтры указаны;
-
Выполняет код на встроенном языке 1С, который вызывает нужный метод ПИ;
-
Получает из него временную таблицу;
-
Подставляет эту таблицу как источник данных в SQL-запрос.
В итоге — запрос работает с результатом вызова метода ПИ так же, как если бы это была обычная временная таблица или виртуальная таблица платформы.
Пример использования
Для примера рассмотрим запрос получения данных учета времени по списку сотрудников. Источником данных в нём выступает исполняемое представление ДанныеУчетаВремениСотрудников. Запрос включает описание временной таблицы фильтра и несколько именованных параметров:
ВЫБРАТЬ
ДанныеУчетаВремениСотрудников.Сотрудник КАК Сотрудник,
ДанныеУчетаВремениСотрудников.Дата КАК Дата,
ДанныеУчетаВремениСотрудников.ВидУчетаВремени КАК ВидУчетаВремени,
ДанныеУчетаВремениСотрудников.Дни КАК Дни,
ДанныеУчетаВремениСотрудников.Часы КАК Часы,
ДанныеУчетаВремениСотрудников.Смена КАК Смена,
ДанныеУчетаВремениСотрудников.НормаЧасов КАК НормаЧасов
ИЗ
ИсполняемоеПредставление.ДанныеУчетаВремениСотрудников(
(Сотрудник, ДатаНачала, ДатаОкончания) В
(ВЫБРАТЬ
Сотрудники.Ссылка КАК Ссылка,
&ДатаНачала КАК ДатаНачала,
&ДатаОкончания КАК ДатаОкончания
ИЗ
Справочник.Сотрудники КАК Сотрудники
ГДЕ
Сотрудники.Ссылка В (&СписокСотрудников)),
ДатаНачала = &ДатаНачала,
ДатаОкончания = &ДатаОкончания,
ДатаАктуальности = &ДатаНачала) КАК ДанныеУчетаВремениСотрудников
Синтаксис и параметры
ОписаниеВТФильтр
Первым (если поддерживается) идёт параметр-фильтр — временная таблица, содержащая список объектов, по которым нужно получить данные. Синтаксис такой же, как у подзапросов ВТ в языке запросов:
(Поле1, Поле2) В (ВЫБРАТЬ ... ИЗ ... ГДЕ ...)
Именованные параметры
После фильтра указываются обычные именованные параметры, передаваемые в метод ПИ:
ИмяПараметра = Значение
Эти параметры управляют детализацией, флагами расчёта и другими аспектами поведения представления. Порядок указания не имеет значения.
Гибкость и совместимость
Исполняемые представления не накладывают ограничений на синтаксис запроса. Они поддерживают все типовые операции: соединения, фильтрацию, группировку, сортировку, вложенные подзапросы и т.д. Это делает их полноценными источниками данных в любом сценарии, где раньше приходилось вручную повторять логику ЗУП.
Конструктор запросов: работа с исполняемыми представлениями без погружения в код
В состав QueryConsole1C входит конструктор запросов, предназначенный для упрощения создания запросов, в том числе с использованием исполняемых представлений. Это особенно важно для аналитиков и разработчиков, которым важно получить данные из ЗУП, не погружаясь в детали реализации программного интерфейса.
Основные возможности конструктора
-
Поддержка источников данных типа
ИсполняемоеПредставление, которые можно выбрать из списка так же, как регистры или справочники; -
Редактирование параметров представления (в том числе фильтров с подзапросами) через пользовательский интерфейс;
Визуально конструктор запросов похож на конструктор запросов для управляемого приложения, входящий в состав платформы. Основные отличия это доступный список исполняемых представлений,
и возможность редактировать параметры исполняемых представлений через специальную форму.
Для удобства все исполняемые представления сгруппированы по подсистемам.

После выбора исполняемого представления откроется редактор параметров:

- В поле Запрос необходимо ввести текст запроса (через контекстное меню можно вызвать конструктор запроса), результат которого будет помещён во временную таблицу, на основе которой будет выполняться фильтрация данных.
- В таблице Поля фильтра нужно задать соответствие полей запроса полям фильтра.
- Также необходимо указать значения параметров.
Некоторые параметры являются необязательными: по умолчанию флаг для них не установлен, и их можно не указывать.
Также нужно указать значения параметров. Некоторые параметры являются необязательными: по умолчанию флаг для них не установлен, и их можно не указывать.
Чтобы открыть параметры для ранее добавленного представления, необходимо воспользоваться соответствующей кнопкой:

Генерация кода
Кроме исполнения запросов, консоль также предоставляет возможности по генерации кода на основе запросов.

Можно сгенерировать код на встроенном языке, получающий ровно те же данные, что и запрос, на основе которого выполняется генерация. Обращения к исполняемым представлениям при этом будут автоматически заменены на вызовы соответствующих методов программного интерфейса.
Также можно сгенерировать код запроса-заглушки для отчета, который корректно обрабатывается механизмом представлений типового ЗУП (подробнее об этом: //infostart.ru/1c/articles/841337/).
Пример: генерация кода для получения среза последних.
Текст запроса:
Сгенерированный код на встроенном языке:
Обратите внимание, что на основе текста запроса автоматически заполнились такие параметры построения, как ИндексироватьПо и ОтборыПрименяемыеКСрезу, что положительно влияет на производительность.
Также, поскольку в исходном запросе использована инструкция РАЗРЕШЕННЫЕ, параметр ТолькоРазрешенные метода СоздатьВТИмяРегистраСрезПоследних установлен в значение Истина.
Также мы можем сгенерировать код запроса-заглушки для отчета, созданного с помощью СКД, который при выполнении будет корректно обработан типовым механизмом представлений ЗУП:
Пример: генерация кода для получения рабочего времени и кадровых данных для сотрудников работающих в организации в заданном периоде.
Текст запроса:
Сгенерированный код:
Список доступных исполняемых представлений.
Кадровый учет
Общее
Отпуска
Регистры расчета
Регистры сведений
Учёт времени
-
ИсполняемоеПредставление.ДанныеУчетаВремениСотрудников
Обеспечивает доступ к методуУчетРабочегоВремениРасширенный.СоздатьВТДанныеУчетаВремениИСостоянийСотрудников.
Получает данные о фактическом рабочем времени сотрудников, включая отклонения.
Учитываются графики, табели, документы отклонений (внутрисменные и целосменные).
Можно получить данные в разрезе территорий выполнения работ и условий труда.
Используется, в частности, для формирования отчета Т-13 и заполнения табеля. -
ИсполняемоеПредставление.ПлановоеВремяСотрудников
Обеспечивает доступ к методуУчетРабочегоВремениРасширенный.СоздатьВТПлановоеВремя.
Позволяет получить данные о запланированном рабочем времени сотрудников.
Учитываются общие и индивидуальные графики, а также графики полного времени.
Учёт начисленной зарплаты
Штатное расписание
Примеры запросов с использованием исполняемых представлений.
Получение кадровых данных сотрудников:
ВЫБРАТЬ
ДанныеСотрудников.Сотрудник КАК Сотрудник,
ДанныеСотрудников.ВидСобытия КАК ВидСобытия,
ДанныеСотрудников.ВидЗанятости КАК ВидЗанятости,
ДанныеСотрудников.ТарифнаяСтавка КАК ТарифнаяСтавка,
ДанныеСотрудников.Надбавка КАК Надбавка,
ДанныеСотрудников.ОсновноеНачисление КАК ОсновноеНачисление,
ДанныеСотрудников.ТабельныйНомер КАК ТабельныйНомер,
ДанныеСотрудников.Наименование КАК Наименование,
ДанныеСотрудников.ДатаПриема КАК ДатаПриема,
ДанныеСотрудников.ПриказОПриеме КАК ПриказОПриеме,
ДанныеСотрудников.Организация КАК Организация,
ДанныеСотрудников.Подразделение КАК Подразделение,
ДанныеСотрудников.Должность КАК Должность,
ДанныеСотрудников.ДолжностьПоШтатномуРасписанию КАК ДолжностьПоШтатномуРасписанию,
ДанныеСотрудников.ВидДоговора КАК ВидДоговора
ИЗ
ИсполняемоеПредставление.ДанныеСотрудников(
(Сотрудник, Период) В
(ВЫБРАТЬ
Сотрудники.Ссылка КАК Сотрудник,
&Период КАК Период
ИЗ
Справочник.Сотрудники КАК Сотрудники
ГДЕ
Сотрудники.Ссылка В (&СписокСотрудников))
) КАК ДанныеСотрудников
Получение данных учета времени с группировкой по позиции ШР:
Получение расшифровки базы начислений:
Больше примеров здесь.
Добавление собственных исполняемых представлений.
Есть возможность добавлять собственные исполняемые представления. Ниже приведён пример добавления представления, возвращающего подразделение сотрудника на каждый день в заданном интервале.
Для добавления исполняемого представления нужно выполнить следующие действия.
-
Для каждого нового исполняемого представления необходимо добавить обработку с именем Представление[ИмяИсполняемогоПредставления].
-
Для корректного отображения исполняемого представления в конструкторе запросов, необходимо включить его в одну из дочерних подсистем ИсполняемыеПредставления. Можно создать новые подсистемы для организации структуры.
-
В модуле менеджера обработки необходимо обязательно реализовать следующие 5 методов:
Реализация всех этих методов обязательна для корректной работы пользовательского исполняемого представления.
Описание— возвращает структуру (см.ЭлементыМоделиОписанияПредставлений.НовыйОписаниеПредставления).Справка— возвращает структуру (см.ЭлементыМоделиОписанияПредставлений.НовыйСправка).ИмяПредставления— возвращает имя исполняемого представления в форматеИсполняемоеПредставление.[Имя].Исполнить— создает временную таблицу с данными исполняемого представления и помещает её в менеджер временных таблиц, переданный в качестве параметра запроса.ИсполняемыйКод— возвращает код на встроенном языке 1С, формирующий временную таблицу с данными.
Пример добавления исполняемого представления можно посмотреть здесь.
Ссылка на репозиторий с исходным кодом
https://github.com/pulh1/QueryConsole1C
Ограничения
На текущий момент проект находится в стадии беты, и ряд возможностей еще не реализован. Существуют следующие ограничения:
-
Поддерживается только русскоязычный синтаксис языка запросов.
-
Не поддерживается группировка по наборам.
-
Не поддерживается создание нескольких индексов для одной временной таблицы.
-
Не поддерживается создание уникальных индексов для временных таблиц.
-
Расширения языка запросов, используемые в СКД, поддерживаются только для чтения. При редактировании запроса в конструкторе эти инструкции будут потеряны.
Проверено на следующих конфигурациях и релизах:
- Зарплата и управление персоналом, редакция 3.1, релизы 3.1.36.41, 3.1.27.314
- Зарплата и кадры государственного учреждения КОРП, редакция 3, релизы 3.1.36.41, 3.1.27.314
Вступайте в нашу телеграмм-группу Инфостарт