новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

Отчет по больничным или начинаем использовать вложенные запросы в СКД

  • Добавить свою публикацию
  • для этого требуется регистрация

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

Итак, наша задача создать такой отчет.

Все необходимые нам сведенья содержаться в регистре сведений «Состояния работников организаций».

 Изображение

Создаем новый внешний отчет и открываем схему компоновки данных. Добавляем новый набор данных – запрос и приступаем к его конструированию.

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

 Изображение

Теперь подумаем над ограничениями.

1. Сотрудник должен числиться в штате

2. Больничный должен попадать на указанный период

3. Необходимы отборы по сотруднику и/или подразделениям

4. Состояние сотрудника по регистру сведений должно относится именно к больничному листу (болеет, уход за ребенком, беременность и роды и т.д.)

Зададим все выше перечисленные условия через параметры и настройки отбора в отчете.

В итоге, наш запрос примет вид:

 Изображение

Параметры отчета:

 Изображение

Выбранные поля:

 Изображение

И условия отбора:

 Изображение

Сохраним и сформируем получившийся отчет:

 Изображение

Во-первых, пока что не очень красиво, без сортировки и соответствующего заголовка.

Во-вторых, нет полей для ввода параметров отбора в быстром доступе.

И самое главное – нет даты возврата!!!

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

Именно эту проблему и будем решать с помощью использования вложенного запроса.

Однако сначала «наведём красоту».

1. Добавим на форму панель быстрого выбора:

А) Откроем форму отчета – Форма- Вставить элемент управления – Табличное поле

Б) Свойства табличного поля – Данные – ОтчетОбъект – Компоновщик настроек – Настройки Параметры данных

2. Зададим «Другие настройки» отчета:

Изображение 

3. Зададим сортировку по полю «Сотрудник».

 

Теперь займемся самым главным – расчетом даты возврата.

Логично, что при смене состояния с одного в другое и происходит возврат, т.е. нам необходимо получить следующую за записью больничного листа запись по данному сотруднику из регистра сведений «СостоянияРаботниковОрганизаций».

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

 Изображение

Теперь добавим оба поля из вложенного запроса в «Поля» и перейдем на вкладку «Связи», чтобы прописать условия слияния основного запроса со вложенным.

 Изображение

Графы «Сотрудник» должны быть идентичны, а период из вложенного запроса должен превышать период основного.

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

 Изображение

Результат:

 Изображение

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

Как же добиться вывода одной, только самой первой строки по данному больничному? Использование условий «Первые N» или же «Без повторяющихся» как во вложенном так и в основном запросе – не помогает. Проблему решает «Группировка», в которой находим минимальное значение по полю «Период» из вложенного запроса.

 Изображение

Результат:

 Изображение

Для большей достоверности информации будем выводить дату на 1 день меньшую Период1, т.к. больничный завершается предыдущим днем с помощью функции «ДОБАВИТЬКДАТЕ» :

 Изображение

А также рассчитаем количество дней больничного через «РАЗНОСТЬДАТ»

 Изображение

Переименуем полученные поля в «Дата возврата» и «Дней», добавим их в «Выбранные поля» и сформируем отчет:

Изображение 

И опять получили немного неожиданный результат.

Доработаем поле группировка ещё раз, установив расчет минимума и по полю с количеством дней больничного, и по дате возврата:

 Изображение

ФОРМИРУЕМ    ОТЧЕТ    ПОСЛЕДНИЙ    РАЗ:

 Изображение

Эврика!

 

 

 
0
Читайте также
Консоль компоновки данных
Обработка для анализа данных , отладки запросов, написания отчетов без конфигуратора - предназанчена для программистов и продвинутых пользователей
Торговля комиссионнными товарами и УСН (УПП 8.1)
Операции, выполняемые при комиссионной торговле УСН (УПП 8.1)
[СКД] Организация простейшего отчета с помощью схемы компоновки данных
Схема компоновки данных представляет большие возможности по отборам, группировкам и оформлению выходного макета
Разработки
Консоль компоновки данных
Обработка состоит их запросов, СКД и объектов
Реестр документов .
БП 2.0 Отчет на СКД
Внешняя печатная форма счета на оплату покупателю с печатью организации для УТ 10.3
"Счет на оплату покупателю на основании общего макета в УТ 10.3"
≡ к списку статей