Консоль запросов ЗУП с поддержкой обращения к методам программного интерфейса в запросах

16.05.25

Разработка - Инструментарий разработчика

QueryConsole1C — расширение, включающее консоль запросов с поддержкой исполняемых представлений — аналогов виртуальных таблиц, основанных на методах программного интерфейса ЗУП. Оно позволяет выполнять запросы с учётом встроенной бизнес-логики, отлаживать алгоритмы получения данных и автоматически генерировать код на встроенном языке 1С.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Консоль запросов ЗУП с поддержкой обращения к методам программного интерфейса в запросах
.cfe 664,42Kb
8
8 Скачать (1 SM) Купить за 1 850 руб.

Содержание:

  1. Проблематика

  2. Расширенная консоль запросов для ЗУП

  3. Исполняемые представления

  4. Конструктор запросов

  5. Генерация кода

  6. Список доступных исполняемых представлений

  7. Примеры запросов

  8. Добавление собственных исполняемых представлений

  9. Ссылка на репозиторий

  10. Ограничения

 

Проблематика

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

  • СоздатьВТКадровыеДанныеСотрудников

  • СоздатьВТРабочиеМестаСотрудников

  • СоздатьВТДанныеУчетаВремениИСостоянийСотрудников т.п.

Разрыв между моделью и реализацией

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

В результате:

  • Стандартная консоль запросов становится не позволяет получать данные, так, как это задумано в типовой;

  • Аналитики ограничены в возможностях самостоятельного анализа;

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

Простой пример: получить актуальную должность сотрудника

Даже казалось бы тривиальная задача — получить текущую должность сотрудника — не так проста.
На первый взгляд, запрос к виртуальной таблице РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних должен решить проблему. Но на практике он может вернуть некорректный результат, например при наличии возвратных событий.

Пример посложнее: расшифровка базы начислений

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

 

Расширенная консоль запросов для ЗУП

QueryConsole1C — это расширение для платформы 1С:Предприятие, включающее усовершенствованную консоль запросов с поддержкой расширенной семантики языка запросов. Ключевая особенность — поддержка нового типа источников данных: ИсполняемыеПредставления, которые можно рассматривать как аналог виртуальных таблиц, адаптированный под архитектуру ЗУП.

Что такое исполняемые представления?

Исполняемые представления позволяют напрямую использовать методы программного интерфейса (ПИ) конфигурации ЗУП внутри пакетов запросов. Эти методы формируют временные таблицы, содержащие актуальные данные, рассчитанные по правилам типовой бизнес-логики. Консоль автоматически вызывает нужный метод, подставляет параметры и делает результат доступным для SQL-запросов.

Зачем это нужно?

В типовой конфигурации ЗУП доступ к ключевым данным (начислениям, кадровой истории, рабочим местам, базам и т.п.) осуществляется через вызовы программного интерфейса. Без использования ПИ получение корректных данных в запросе — нетривиальная задача, требующая глубокого понимания внутренней структуры и алгоритмов конфигурации. При этом стандартная консоль запросов не позволяет интегрировать вызов ПИ в текст запроса, что делает многие сценарии анализа и диагностики практически недоступными.

QueryConsole1C устраняет это ограничение.

Для кого и для чего

Инструмент ориентирован на разработчиков, аналитиков и консультантов, которым необходимо:

  • Выполнять сложные запросы к данным ЗУП с учетом встроенной бизнес-логики;

  • Интерактивно анализировать содержимое временных таблиц, формируемых методами ПИ;

  • Генерировать код на встроенном языке 1С, где исполняемые представления автоматически преобразуются в вызовы ПИ;

  • Упрощать построение запросов через визуальный конструктор, поддерживающий расширения языка и работу с параметрами.
     

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

Исполняемые представления — это расширение концепции виртуальных таблиц платформы 1С, адаптированное под архитектуру конфигурации ЗУП. Они позволяют интегрировать вызовы программного интерфейса (ПИ) прямо в тело SQL-запроса, делая доступ к сложной логике получения данных максимально прозрачным и удобным.

Как это работает

При выполнении запроса, содержащего ссылку на исполняемое представление, консоль:

  1. Определяет, какие параметры и фильтры указаны;

  2. Выполняет код на встроенном языке 1С, который вызывает нужный метод ПИ;

  3. Получает из него временную таблицу;

  4. Подставляет эту таблицу как источник данных в SQL-запрос.

В итоге — запрос работает с результатом вызова метода ПИ так же, как если бы это была обычная временная таблица или виртуальная таблица платформы.

Пример использования

Для примера рассмотрим запрос получения данных учета времени по списку сотрудников. Источником данных в нём выступает исполняемое представление ДанныеУчетаВремениСотрудников. Запрос включает описание временной таблицы фильтра и несколько именованных параметров:

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

 

Синтаксис и параметры

ОписаниеВТФильтр

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

(Поле1, Поле2) В (ВЫБРАТЬ ... ИЗ ... ГДЕ ...)

Именованные параметры

После фильтра указываются обычные именованные параметры, передаваемые в метод ПИ:

ИмяПараметра = Значение

Эти параметры управляют детализацией, флагами расчёта и другими аспектами поведения представления. Порядок указания не имеет значения.

Гибкость и совместимость

Исполняемые представления не накладывают ограничений на синтаксис запроса. Они поддерживают все типовые операции: соединения, фильтрацию, группировку, сортировку, вложенные подзапросы и т.д. Это делает их полноценными источниками данных в любом сценарии, где раньше приходилось вручную повторять логику ЗУП.

 

Конструктор запросов: работа с исполняемыми представлениями без погружения в код

В состав QueryConsole1C входит конструктор запросов, предназначенный для упрощения создания запросов, в том числе с использованием исполняемых представлений. Это особенно важно для аналитиков и разработчиков, которым важно получить данные из ЗУП, не погружаясь в детали реализации программного интерфейса.

Основные возможности конструктора

  • Поддержка источников данных типа ИсполняемоеПредставление, которые можно выбрать из списка так же, как регистры или справочники;

  • Редактирование параметров представления (в том числе фильтров с подзапросами) через пользовательский интерфейс;

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

 

Источники в конструкторе запросов


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


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

 

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

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

Чтобы открыть параметры для ранее добавленного представления, необходимо воспользоваться соответствующей кнопкой:


Открыть редактор параметров

 

 

Генерация кода

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


Генерация кода. Кнопки

 

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

Также можно сгенерировать код запроса-заглушки для отчета, который корректно обрабатывается механизмом представлений типового ЗУП (подробнее об этом: //infostart.ru/1c/articles/841337/).

 

Пример: генерация кода для получения среза последних.

 
Текст запроса:

 

Сгенерированный код на строенном языке:

 

Обратите внимание, что на основе текста запроса автоматически заполнились такие параметры построения, как ИндексироватьПо и ОтборыПрименяемыеКСрезу, что положительно влияет на производительность.

Также, поскольку в исходном запросе использована инструкция РАЗРЕШЕННЫЕ, параметр ТолькоРазрешенные метода СоздатьВТИмяРегистраСрезПоследних установлен в значение Истина.

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

 


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

 

Текст запроса:

 

Сгенерированный код:

 

 

Список доступных исполняемых представлений.

 

Кадровый учет

 

Общее

 

 Отпуска

 

Регистры расчета

 

Регистры сведений

 

Учёт времени

 
  • ИсполняемоеПредставление.ДанныеУчетаВремениСотрудников
    Обеспечивает доступ к методу УчетРабочегоВремениРасширенный.СоздатьВТДанныеУчетаВремениИСостоянийСотрудников.
    Получает данные о фактическом рабочем времени сотрудников, включая отклонения.
    Учитываются графики, табели, документы отклонений (внутрисменные и целосменные).
    Можно получить данные в разрезе территорий выполнения работ и условий труда.
    Используется, в частности, для формирования отчета Т-13 и заполнения табеля.

  • ИсполняемоеПредставление.ПлановоеВремяСотрудников
    Обеспечивает доступ к методу УчетРабочегоВремениРасширенный.СоздатьВТПлановоеВремя.
    Позволяет получить данные о запланированном рабочем времени сотрудников.
    Учитываются общие и индивидуальные графики, а также графики полного времени.

Учёт начисленной зарплаты

 

Штатное расписание

 

 

 

Примеры запросов с использованием исполняемых представлений.

Получение кадровых данных сотрудников:

 
ВЫБРАТЬ
	ДанныеСотрудников.Сотрудник КАК Сотрудник,
	ДанныеСотрудников.ВидСобытия КАК ВидСобытия,
	ДанныеСотрудников.ВидЗанятости КАК ВидЗанятости,
	ДанныеСотрудников.ТарифнаяСтавка КАК ТарифнаяСтавка,
	ДанныеСотрудников.Надбавка КАК Надбавка,
	ДанныеСотрудников.ОсновноеНачисление КАК ОсновноеНачисление,
	ДанныеСотрудников.ТабельныйНомер КАК ТабельныйНомер,
	ДанныеСотрудников.Наименование КАК Наименование,
	ДанныеСотрудников.ДатаПриема КАК ДатаПриема,
	ДанныеСотрудников.ПриказОПриеме КАК ПриказОПриеме,
	ДанныеСотрудников.Организация КАК Организация,
	ДанныеСотрудников.Подразделение КАК Подразделение,
	ДанныеСотрудников.Должность КАК Должность,
	ДанныеСотрудников.ДолжностьПоШтатномуРасписанию КАК ДолжностьПоШтатномуРасписанию,
	ДанныеСотрудников.ВидДоговора КАК ВидДоговора
ИЗ
	ИсполняемоеПредставление.ДанныеСотрудников(
		(Сотрудник, Период) В 
		(ВЫБРАТЬ
			Сотрудники.Ссылка КАК Сотрудник,
			&Период КАК Период
		ИЗ
			Справочник.Сотрудники КАК Сотрудники
		ГДЕ
			Сотрудники.Ссылка В (&СписокСотрудников))
) КАК ДанныеСотрудников

 

Получение данных учета времени с группировкой по позиции ШР: 

 

 

Получение расшифровки базы начислений:

 

Больше примеров здесь.

 

Добавление собственных исполняемых представлений.

Есть возможность добавлять собственные исполняемые представления. Ниже приведён пример добавления представления, возвращающего подразделение сотрудника на каждый день в заданном интервале.

Для добавления исполняемого представления нужно выполнить следующие действия.

  1. Для каждого нового исполняемого представления необходимо добавить внешнюю обработку с именем Представление[ИмяИсполняемогоПредставления].

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

  3. В модуле менеджера обработки необходимо обязательно реализовать следующие 5 методов:

    Реализация всех этих методов обязательна для корректной работы пользовательского исполняемого представления.

    • Описание — возвращает структуру (см. ЭлементыМоделиОписанияПредставлений.НовыйОписаниеПредставления).
    • Справка — возвращает структуру (см. ЭлементыМоделиОписанияПредставлений.НовыйСправка).
    • ИмяПредставления — возвращает имя исполняемого представления в формате ИсполняемоеПредставление.[Имя].
    • Исполнить — создает временную таблицу с данными исполняемого представления и помещает её в менеджер временных таблиц, переданный в качестве параметра запроса.
    • ИсполняемыйКод — возвращает код на встроенном языке 1С, формирующий временную таблицу с данными.

Пример добавления исполняемого представления можно посмотреть здесь.

 

Ссылка на репозиторий с исходным кодом

https://github.com/pulh1/QueryConsole1C

 

Ограничения

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

  • Поддерживается только русскоязычный синтаксис языка запросов.

  • Не поддерживается группировка по наборам.

  • Не поддерживается создание нескольких индексов для одной временной таблицы.

  • Не поддерживается создание уникальных индексов для временных таблиц.

  • Расширения языка запросов, используемые в СКД, поддерживаются только для чтения. При редактировании запроса в конструкторе эти инструкции будут потеряны.

 

Проверено на следующих конфигурациях и релизах:

  • Зарплата и управление персоналом, редакция 3.1, релизы 3.1.27.314
  • Зарплата и кадры государственного учреждения КОРП, редакция 3, релизы 3.1.27.314

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    188469    1050    403    

982

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    27262    182    89    

176

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

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

15000 руб.

10.11.2023    14352    62    33    

80

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

22200 руб.

06.10.2023    21309    55    19    

86

Инструментарий разработчика Программист Платформа 1С v8.3 Платные (руб)

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

9360 руб.

17.05.2024    31474    107    48    

149

Инструментарий разработчика Программист 8.3.14 Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 руб.

07.10.2021    19409    8    32    

43

Инструментарий разработчика Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    105334    247    100    

312
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. skalistratov 11 16.05.25 15:57 Сейчас в теме
даааа.. для зуперов это отличная новость! поигрался, очень перспективная разработка!
nofear; cleaner_it; +2 Ответить
Оставьте свое сообщение