Каталог решений - Пример создания кадрового отчета для ЗУП 3.1

Пример создания кадрового отчета для ЗУП 3.1

Пример создания кадрового отчета для ЗУП 3.1

В наличии

Пример создания отчёта «Изменение графиков работы» для ЗУП 3.1 с использованием механизма представлений и объекта СхемаЗапроса.

Категория:

Описание

Заказчику на производственном предприятии понадобился отчет, содержащий информацию об истории изменения графиков работы сотрудников. Штатного отчёта в конфигурации ЗУП 3.1 (3.1.14.334) не оказалось. Потребовалось написать новый внешний отчет. За основу был взят отчет Кадровая история сотрудников. На практике именно этот отчет дорабатывался. Для статьи же я написал отдельный отчет, чтобы можно было использовать его как шаблон создания своих отчетов.

Введение

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

  Ранее коллеги  уже описывали функции для получения данных. Например, вот здесь: //sale.itcity.ru/1c/articles/841337/ и здесь: //sale.itcity.ru/1c/articles/942569/

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

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

Для понимания, как же устроен этот механизм пришлось изучать типовые отчеты и пользоваться глобальным поиском. Также очень выручает вот эта обработка с ИТС https://its.1c.ru/db/metod81/content/7329/hdoc

Процедура ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(ЭтотОбъект) Содержит еще процедуру, которая заменяет тексты запросов. Эта большая процедура, в свою очередь, ищет, в каком из общих модулей содержится код по замене данного конкретного представления. То есть во многих общих модулях содержатся целые области по формированию запросов к базе данных. Эти области кода также используются в документах и справочниках соответствующих подсистем. Как правило, помимо сбора запроса представления, эти области содержат процедуры по получению данных в менеджер временных таблиц. Очень жаль, что они не описаны разработчиками и приходится самостоятельно их исследовать и подсматривать использование в типовых документах. Чтобы иметь представление, какие данные мы можем получать через представления, я составил вот такую табличку названий, которые встречаются в конфигурации.

 

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

 

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

"ВТОТБОРПОЗИЦИЙШТАТНОГОРАСПИСАНИЯ"Структура
"СПРАВОЧНИКШТАТНОЕРАСПИСАНИЕ"Структура
"РЕГИСТРСВЕДЕНИЙИСТОРИЯИСПОЛЬЗОВАНИЯШТАТНОГОРАСПИСАНИЯ"Структура
"РЕГИСТРСВЕДЕНИЙТЕРРИТОРИАЛЬНЫЕУСЛОВИЯПФР"Структура
"РЕГИСТРСВЕДЕНИЙКЛАССЫУСЛОВИЙТРУДАПОДОЛЖНОСТЯМ"Структура
"РЕГИСТРСВЕДЕНИЙЗАНЯТОСТЬПОЗИЦИЙШТАТНОГОРАСПИСАНИЯ"Структура
"РЕГИСТРСВЕДЕНИЙСТРОКИОТЧЕТНОСТИМОНИТОРИНГАРАБОТНИКОВСОЦИАЛЬНОЙСФЕРЫ"Структура
"РЕГИСТРСВЕДЕНИЙМЕСТОПОЗИЦИИШТАТНОГОРАСПИСАНИЯВСТРУКТУРЕПРЕДПРИЯТИЯ"Структура

 

Ну и финальный запрос выглядит устрашающе:

 

has been added to your cart:
Оформление заказа