Перейти к содержимому

Представления (ЗУП)

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

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

Механизм в ЗУП не вспомогательный, а основной: например, в ЗУП КОРП 3.1.36.45 на представлениях построен 171 типовой отчёт из 349.

Простой пример — данные штатного расписания. Запрос с использованием представления выглядит так:

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

Исходный запрос к базе данных при этом займёт почти 415 строк, создаст 5 временных таблиц и обратится к 4 физическим таблицам. Писать и сопровождать такой запрос вручную — отдельная работа, поэтому в конфигурациях ЗУП запросы с представлениями и есть основной способ получения данных.

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

Часть запросаЧто означает
ПОМЕСТИТЬ Представления_<Имя>второй сегмент имени временной таблицы — имя представления. Полный список — в справочнике Таблицы представлений
Представления_<Имя>_<Хвост>третий сегмент: для представлений «Срез последних», «Срез первых» и «Таблица регистра» это имя регистра, для остальных — произвольный суффикс. Суффикс нужен, когда одно представление используется в пакете несколько раз: Представления_КадровыеДанныеСотрудников_ФОТ и Представления_КадровыеДанныеСотрудников_Прежние — это два разных набора полей одного представления
поля до ПОМЕСТИТЬкакие поля нужно получить. Значения здесь не важны, важен тип: его задают через ЗНАЧЕНИЕ(…ПустаяСсылка), ДАТАВРЕМЯ(1, 1, 1), 0 и подобные конструкции
секция ИЗвременная таблица, ограничивающая выборку, — таблица фильтра
секция ГДЕпараметры представления, а не условия отбора

Строки в секции ГДЕ — это именно параметры: "ТолькоРазрешенные" = "ЛОЖЬ" не сравнивает поле со значением, а говорит механизму, применять ли ограничение доступа к данным. Набор параметров у каждого представления свой; в конструкторе они показаны флажками и полями на закладке «Настройки», а в текст запроса попадают такими строками. Параметр, которого представление не знает, просто игнорируется.

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

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

Список представлений зависит ещё и от установленных подсистем — аттестации, охрана труда, медицина, кадровое планирование, подбор персонала. Если подсистема установлена, но соответствующая возможность выключена в настройках программы (например, «Использовать подбор персонала»), представление в списке останется, а данных не вернёт — в этом случае проверьте настройки, а не текст запроса.

В цепочке запросов представления рекомендуется выносить в отдельные пакеты и помечать их признаком «Общий запрос»: такой запрос не отбирается по печатаемым объектам и выполняется один раз.

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

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

Форма конструктора представлений ЗУП

Форма состоит из двух половин:

  • слева — список пакетов запросов, входящих в цепочку;
  • справа — панель с закладками «Настройки», «Текст» и «Результат».

В левой таблице пакеты, имя временной таблицы которых начинается с Представления_, помечены значком . Значок означает, что для пакета доступна настройка представления. Пакеты без значка — обычные запросы, их текст правится вручную.

Если активный пакет — поддерживаемое представление, справа открывается форма его настройки. На ней задаётся:

  • имя таблицы фильтра — временной таблицы, которая ограничит выборку. Выбрать можно как таблицу из пакетов текущего запроса, так и временную таблицу из ранее созданных строк макета печатной формы (или консоли запросов);
  • параметры представления — например, «Только разрешенные», «Формировать с периодичностью День», даты периода. У каждого представления набор свой, полный перечень — в справочнике Таблицы представлений;
  • состав полей — флажками в таблице полей. Команды «Установить флажки» и «Снять флажки» отмечают сразу все поля.

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

Для представлений «Срез последних», «Срез первых» и «Таблица регистра» дополнительно указывается регистр — в списке предлагаются регистры сведений. Регистры с ресурсом «ДействуетДо» помечены значком: у них есть особенности выборки.

Для большинства настроек в форме есть подсказки: что означает параметр и как заполнить таблицу фильтра.

Содержит текст запроса активного пакета.

Текст запроса текущего пакета (активной строки)

Если для пакета доступна настройка представления, текст запроса собирается конструктором и недоступен для редактирования. В остальных случаях текст можно править вручную.

Показывает итог работы конструктора — то, что вернётся в макет или консоль.

Готовый результат работы конструктора

Результат можно посмотреть в двух вариантах:

  • представление — текст запроса с пустышками, который конструктор вернёт в источник;
  • готовый запрос — реальный текст, в который конфигурация развернёт этот запрос при выполнении.

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

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

Правила простые:

  • имя таблицы любое (по умолчанию конструктор предлагает ВТ_ТаблицаФильтра), главное — указать его в секции ИЗ запроса-представления. Исключения — представления, которые ищут таблицу по имени, зашитому в ЗУП: у них имя строгое, оно указано в справочнике. У «Кадровых данных сотрудников: анализ начислений и удержаний» таблица называется ВТВсеПериодомКадровыхДанных, и в секцию ИЗ её не указывают: механизм ЗУП находит таблицу сам, а строку в ИЗ принимает за поле и не может разобрать запрос. То же у «Планового времени» с таблицей ВТСотрудники. Текст этих представлений конструктор собирает без секции ИЗ;
  • обязательные поля у каждого представления свои: чаще всего это «Сотрудник» или «ФизическоеЛицо» и дата периода. Состав полей для каждой таблицы — в справочнике Таблицы представлений;
  • остальные поля, как правило, произвольны — исключение составляют представления над регистрами и представления подбора персонала, где лишние поля недопустимы.

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

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

Результат выполнения запроса в консоли

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

ВЫБРАТЬ * ИЗ Представления_КадровыеДанныеСотрудников КАК Т

В консоли запросов и в форме конструктора работает справка по языку запросов — CTRL+F1 открывает синтакс-помощник на статье о слове под курсором.

Конструктор поддерживает 27 представлений. Ниже — перечень; параметры, поля таблицы фильтра и особенности каждого разобраны в справочнике Таблицы представлений.

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

Имя в запросеЗаголовок в конструкторе
ПериодыПериоды
КадровыеДанныеСотрудниковКадровые данные сотрудников
КадровыеДанныеСотрудниковАнализНачисленийИУдержанийКадровые данные сотрудников: анализ начислений и удержаний
КадровыеДанныеФизическихЛицКадровые данные физ. лиц
ШтатноеРасписаниеШтатное расписание
РабочиеМестаСотрудниковРабочие места сотрудников
СотрудникиОрганизацииСотрудники организации
ОтработанноеВремяОтработанное время
ТекущаяКадроваяРасстановкаТекущая кадровая расстановка
ФункциональныеОпцииОрганизацийФункциональные опции организаций
ФактическиеОтпускаСотрудниковФактические отпуска сотрудников
ПлановыеНачисленияСотрудниковПлановые начисления сотрудников
ПлановыеУдержанияСотрудниковПлановые удержания сотрудников
СтажиСотрудниковСтажи сотрудников
ДанныеУчетаРабочегоВремениСотрудниковДанные учета рабочего времени сотрудников
ДанныеУчетаВремениИСостоянийСотрудниковДанные учета времени и состояний сотрудников
ПлановоеВремяПлановое время
СрезПоследнихСрез последних
СрезПервыхСрез первых
ТаблицаРегистраТаблица регистра

Ещё семь появляются при наличии подсистем:

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

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