Как использовать механизм представлений запросов в ЗУП 3.1?

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

Механизм «Представлений» в 1С:ЗУП 3.1 — это архитектурный паттерн, который часто вызывает вопросы у разработчиков, так как он не является документированным API. По сути, это способ унификации получения данных для системы компоновки данных (СКД) и отчетов, который позволяет системе «подменять» простые структуры на сложные запросы к данным в зависимости от контекста выполнения.

Понимание концепции «болванок»

Рассмотрим подробнее, что происходит при работе с Представления_.... В коде конфигурации часто используются так называемые «болванки». Это временные таблицы, которые содержат типизированные поля с пустыми значениями. Их цель — не получение данных, а объявление структуры, которую СКД увидит и сможет обработать.

Разберем типичную «болванку» на примере Представления_КадровыеДанныеСотрудников:


ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    ДАТАВРЕМЯ(1, 1, 1) КАК Период,
    ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
    ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Организация,
    ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) КАК Подразделение,
    ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка) КАК Должность,
    ЗНАЧЕНИЕ(Справочник.РазрядыКатегорииДолжностей.ПустаяСсылка) КАК РазрядКатегория,
    ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ПустаяСсылка) КАК ВидЗанятости,
    "" КАК Фамилия,
    "" КАК Имя,
    "" КАК Отчество,
    0 КАК ТарифнаяСтавка,
    0 КАК ТекущаяТарифнаяСтавка,
    ДАТАВРЕМЯ(1, 1, 1) КАК ДатаУвольнения
ПОМЕСТИТЬ Представления_КадровыеДанныеСотрудников

Мы видим, что здесь нет реального источника данных в блоке ИЗ. Это объявление полей, необходимых для настройки отчета. При старте компоновки, если этот отчет является стандартным, система заменяет этот «пустой» запрос на «боевой», который извлекает реальные данные из регистров.

Как реализовать работу с данными через временные таблицы

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

  1. Определение источников: Вы должны создать временные таблицы (ВТ), которые будут содержать нужные вам срезы данных (например, ВТСотрудники или ВТВсяКадроваяИстория).
  2. Использование маркеров прав доступа: Обратите внимание на конструкцию ГДЕ "ТолькоРазрешенные" = ИСТИНА. Это служебный маркер. Система 1С при выполнении запроса программно подменяет эту строку на реальные условия ограничения прав доступа (RLS). Если вы используете эти представления в своем коде, убедитесь, что правильно передаете параметры контекста.
  3. Объединение данных: Часто для корректного отображения данных требуется объединить несколько источников. Например, для получения кадровых данных за период используется цепочка из ВТОстаткиИОборотыВзаиморасчетыССотрудниками и последующих временных таблиц.

Пример формирования рабочего запроса

Проанализируем пример для Представления_ОтработанноеВремя. Этот код показывает, как на основе регистра НачисленияУдержанияПоСотрудникам формируется итоговая таблица представления:


ВЫБРАТЬ РАЗРЕШЕННЫЕ 
    НАЧАЛОПЕРИОДА(НачисленияИУдержания.Период, МЕСЯЦ) КАК МесяцНачисления,
    НачисленияИУдержания.Период КАК Период,
    НачисленияИУдержания.ФизическоеЛицо КАК ФизическоеЛицо,
    // ... (дополнительные поля)
    СУММА(НачисленияИУдержания.Сумма) КАК Сумма
ПОМЕСТИТЬ ВТНачисленияИУдержанияБезКадровыхДанных
ИЗ РегистрНакопления.НачисленияУдержанияПоСотрудникам КАК НачисленияИУдержания
ГДЕ НачисленияИУдержания.Период МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО ...

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

Важные рекомендации по работе

При работе с этим механизмом придерживайтесь следующих правил:

Работа с представлениями требует внимания к деталям и понимания того, как устроена подсистема учета в ЗУП. Рассматривайте эти конструкции не как статические таблицы, а как динамический интерфейс взаимодействия с данными, который 1С предоставляет для создания сложных отчетов.

← На главную