Отчет сотрудниц в отпусках и выход на работу.

18.10.12

Разработка - Механизмы типовых конфигураций

  Как правильно построить список сотрудниц, которые еще находятся в отпуске по уходу за ребенком. Ведь плановая дата выхода их занесена в сам документ и записывается в регистр не как состояние, а как состояние завершения.

Файлы

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

Наименование Скачано Купить файл
Отчет по декретным отпускам на дату
.erf 34,54Kb
43 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

  Но 1С добавила ресурсы ДатаЗавершения и СостояниеЗавершения. И испортила всю малину стройность решения. Значит когда наступит ДатаЗавершения у сотрудника будет состояние СостояниеЗавершения. Так думают большинство кадровых работников, по крайней мере с которыми я встречался. Значит наш любимый СрезПоследнних не пройдет и мы вооружившись методами SQL(в запросах 1С) напишем правильный отчет.

 Придумаем простой пример:

Иванова Василиса Микулишна находится в отпуске по уходу за ребенком с 01.01.2009 по 31.12.2011.

№ п/п

Сотрудник

Период

Состояние

Период завершения

Состояние завершения

Регистратор

1

Иванова Василиса Микулишна

01.01.2009

В отпуске по уходу за ребенком

01.01.2012

Работает

Отпуска организаций 1910-ОТ от 30.12.2008 0:00:00

 Делаем просотй запрос

ВЫБРАТЬ РАЗРЕШЕННЫЕ
  СостояниеРаботниковОрганизаций.Период КАК Период,
  СостояниеРаботниковОрганизаций.Сотрудник КАК Сотрудник,
  СостояниеРаботниковОрганизаций.Состояние КАК Состояние,
  СостояниеРаботниковОрганизаций.Регистратор,
  СостояниеРаботниковОрганизаций.ПериодЗавершения
ИЗ
   РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций

 

Объединяем с периодами после после завешения

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВложенныйЗапрос.ПериодЗавершения,
    ВложенныйЗапрос.Сотрудник,
    ВложенныйЗапрос.СостояниеЗавершения,
    ВложенныйЗапрос.Регистратор,
    ВложенныйЗапрос.ПериодНовый
ИЗ
    (ВЫБРАТЬ
        СостояниеРаботниковОрганизаций.Регистратор КАК Регистратор,
        СостояниеРаботниковОрганизаций.Период КАК Период,
        СостояниеРаботниковОрганизаций.Сотрудник КАК Сотрудник,
        МИНИМУМ(СостояниеПослеТекущего.Период) КАК ПериодНовый,
        СостояниеРаботниковОрганизаций.Состояние КАК Состояние,
        СостояниеРаботниковОрганизаций.ПериодЗавершения КАК ПериодЗавершения,
        СостояниеРаботниковОрганизаций.СостояниеЗавершения КАК СостояниеЗавершения
    ИЗ
        РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеПослеТекущего
            ПО СостояниеРаботниковОрганизаций.Организация = СостояниеПослеТекущего.Организация
                И СостояниеРаботниковОрганизаций.Сотрудник = СостояниеПослеТекущего.Сотрудник
                И СостояниеРаботниковОрганизаций.Период < СостояниеПослеТекущего.Период
    
    СГРУППИРОВАТЬ ПО
        СостояниеРаботниковОрганизаций.Сотрудник,
        СостояниеРаботниковОрганизаций.Период,
        СостояниеРаботниковОрганизаций.Регистратор,
        СостояниеРаботниковОрганизаций.Состояние,
        СостояниеРаботниковОрганизаций.ПериодЗавершения,
        СостояниеРаботниковОрганизаций.СостояниеЗавершения) КАК ВложенныйЗапрос
ГДЕ
    (ВложенныйЗапрос.ПериодЗавершения < ВложенныйЗапрос.ПериодНовый
            ИЛИ ВложенныйЗапрос.ПериодНовый ЕСТЬ NULL )
    И ВложенныйЗапрос.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)

 

И делаем правильные периоды в случае пересечения...

ВЫБРАТЬ
    ВложенныйЗапрос.Период,
    ВложенныйЗапрос.Сотрудник КАК Сотрудник,
    ВТСостояниеСотрудников.Состояние,
    ВТСостояниеСотрудников.Регистратор,
    ВТСостояниеСотрудников.ПериодЗавершения
ПОМЕСТИТЬ ВТДекреныеОтпуска
ИЗ
    (ВЫБРАТЬ
        МАКСИМУМ(ВложенныйЗапрос.Период) КАК Период,
        ВложенныйЗапрос.Сотрудник КАК Сотрудник
    ИЗ
        ВТСостояниеСотрудников КАК ВложенныйЗапрос
    ГДЕ
        ВложенныйЗапрос.Период
    
    СГРУППИРОВАТЬ ПО
        ВложенныйЗапрос.Сотрудник) КАК ВложенныйЗапрос
        ЛЕВОЕ СОЕДИНЕНИЕ ВТСостояниеСотрудников КАК ВТСостояниеСотрудников
        ПО ВложенныйЗапрос.Период = ВТСостояниеСотрудников.Период
            И ВложенныйЗапрос.Сотрудник = ВТСостояниеСотрудников.Сотрудник
ГДЕ
    ВТСостояниеСотрудников.Состояние В(&СписокСостояний)
; 

 

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

Идею заложенную в отчет можно применять не только к отпуску по уходу, но в любом отчете по регистру Состояниюсотрудника.

 

P.S.

По моему пониманию 1С делает неправильный шаг, когда планируемые действия в будущем(Состояние завершения) сразу выдаются за факт, а не относятся исключительно к категории планирования. Но это так и мы должны быть во всеоружии, чтобы понять как это работает и дотошно объяснять пользователям.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

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

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

15500 руб.

02.09.2020    227239    1237    415    

1078

Механизмы типовых конфигураций Программист 1С v8.3 Бесплатно (free)

Каждый, кто работал с кадровыми отчетами в ЗУП, ERP или УХ, сталкивался с механизмом представлений – странным кодом запроса, где поля отображаются пустыми ссылками, а в названии временной таблицы есть слово «Представление». В статье разберем, что такое представления и как ими пользоваться. Больше не нужно ломать голову над тем, откуда и как правильно получать данные. Механизм представлений сделает это за вас.

08.07.2025    8144    user2012581    55    

55

Инструментарий разработчика Запросы Программист 1С v8.3 Сложные периодические расчеты Запросы 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

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

1 стартмани

16.05.2025    7284    100    zup_dev    22    

75

Механизмы типовых конфигураций Программист 1С v8.3 1C:Бухгалтерия Бесплатно (free)

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

27.12.2024    22691    Begemoth80    33    

91

Запросы Программист Бесплатно (free)

Увидел cheatsheet по SQL и захотелось нарисовать подобное, но про запросы.

18.10.2024    19143    sergey279    18    

72

Запросы Программист 1С v8.3 Запросы 1C:Бухгалтерия Бесплатно (free)

Столкнулся с интересной ситуацией, которую хотел бы разобрать, ввиду её неочевидности. Речь пойдёт про использование функции запроса АВТОНОМЕРЗАПИСИ() и проблемы, которые могут возникнуть.

11.10.2024    13838    XilDen    38    

108

Механизмы типовых конфигураций Программист 1С v8.3 1C:ERP Бесплатно (free)

Статистическая выборка сценариев и точек изменения отчетов на общей форме ФормаОтчета в типовых конфигурациях. Примеры кода.

03.06.2024    14188    SergDobrodelov    40    

130
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. petrov_al 10 20.10.12 20:50 Сейчас в теме
А помоему все правильно и логично сделано в первую очередь для удобства работы пользователям. Кстати в РаботникиОрганизации тоже используется периодзавершения. Я в свое время учился у 1с на типовых отчетах как делать специфические выборки из таких регистров.
3. sikuda 680 23.10.12 17:47 Сейчас в теме
2. Спасибо за статью. Стало больше понятна та позиция по которой именно так сделала 1С. Мы все находимся в пирамиде продаж 1С и движемся вместе с ней.
Но еще раз повторю - человеческая логика строится по другому:
1. все что произошло в прошлом - реально произошло (свершившийся факт).(даже если мы любим это изменять).
2. все что будет в будущем - только планируется.
И логика 1С подходит когда это именно уже произошло(1). А что будет с матерью через три года. Извините не свершившийся факт.
2. Gesperid 2 23.10.12 16:05 Сейчас в теме
Рекомендую ознакомиться со статьей http://its.1c.ru/db/metod81#content:2910:1, там описаны причины такого решение и ПРАВИЛЬНАЯ реализация с хорошими комментариями.
4. itromanster 01.03.13 08:58 Сейчас в теме
Я выбираю по состоянию и иключаю всех кто работает за период как думаете правильная методология ?
5. itromanster 01.03.13 09:08 Сейчас в теме
Вопрос куда сложить пересечения периодов опять в кучу в другой пакет запроса ?
6. itromanster 06.03.13 12:33 Сейчас в теме
Скажите мне пожалуйсто что имеется в виду под "пересечением периодов" каких периодов отпуска с какими ? Предпологается что отчет формируется за месяц.
Для отправки сообщения требуется регистрация/авторизация