Запрос для отслеживания конфликтов кадровых неявок в ЗУП и УПП

29.06.11

Учетные задачи - Кадровый учет

Представляю Вашему вниманию текст запроса, которому на вход подаётся ссылка на документ регистрации кадровой неявки и который вычисляет, какие конфликты по кадровым неявкам вызывает данный документ в сравнении со всеми прочими документами регистрации кадровых неявок.

При проведении кадрового документа, регистрирующего неявку, в типовой актуальной версии ЗУП 2.5 отслеживаются далеко не все конфликты по кадровым неявкам.

Представляю Вашему вниманию текст запроса, которому на вход подаётся один параметр - ссылка на (проведённый) документ регистрации кадровой неявки и который вычисляет, какие конфликты по кадровым неявкам вызывает данный документ в сравнении со всеми прочими документами регистрации кадровых неявок.

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

Запрос имеет лишь один параметр - ОтслеживаемыйРегистратор. Здесь может быть документ любого типа, который делает движения по регистру сведений СостояниеРаботниковОрганизаций (где регистрируются кадровые неявки).

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ДвиженияОтслеживаемогоРегистратора.Сотрудник
ПОМЕСТИТЬ ОптимизацияОтслеживаемыеСотрудники
ИЗ
   
ДвиженияОтслеживаемогоРегистратора КАК ДвиженияОтслеживаемогоРегистратора
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    МИНИМУМ(ДвиженияОтслеживаемогоРегистратора.Период) КАК Период
ПОМЕСТИТЬ ОптимизацияМинимальныеИнтересующиеПериодыКалендаря
ИЗ
   
ДвиженияОтслеживаемогоРегистратора КАК ДвиженияОтслеживаемогоРегистратора
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
ПОМЕСТИТЬ ОптимизацияКалендарь
ИЗ
   
РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОптимизацияМинимальныеИнтересующиеПериодыКалендаря КАК ОптимизацияМинимальныеИнтересующиеПериодыКалендаря
        ПО РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= ОптимизацияМинимальныеИнтересующиеПериодыКалендаря.Период
;

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

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

СГРУППИРОВАТЬ ПО
   
РегламентированныйПроизводственныйКалендарь.ДатаКалендаря,
   
ДвиженияБезОтслеживаемогоРегистратора.Сотрудник
;

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

СГРУППИРОВАТЬ ПО
   
РегламентированныйПроизводственныйКалендарь.ДатаКалендаря,
   
ДвиженияОтслеживаемогоРегистратора.Сотрудник
;

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    КалендарьСостоянийСотрудниковБезОтслеживаемогоРегистратора.ДатаКалендаря,
   
КалендарьСостоянийСотрудниковБезОтслеживаемогоРегистратора.Сотрудник,
   
КалендарьСостоянийСотрудниковБезОтслеживаемогоРегистратора.Регистратор,
   
КалендарьСостоянийСотрудниковБезОтслеживаемогоРегистратора.Состояние
ПОМЕСТИТЬ КалендарьНеявокСотрудниковБезОтслеживаемогоРегистратора
ИЗ
   
КалендарьСостоянийСотрудниковБезОтслеживаемогоРегистратора КАК КалендарьСостоянийСотрудниковБезОтслеживаемогоРегистратора
ГДЕ
    КалендарьСостоянийСотрудниковБезОтслеживаемогоРегистратора.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Работает)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    КалендарьСостоянийСотрудниковОтслеживаемогоРегистратора.ДатаКалендаря,
   
КалендарьСостоянийСотрудниковОтслеживаемогоРегистратора.Сотрудник,
   
КалендарьСостоянийСотрудниковОтслеживаемогоРегистратора.Регистратор,
   
КалендарьСостоянийСотрудниковОтслеживаемогоРегистратора.Состояние
ПОМЕСТИТЬ КалендарьНеявокСотрудниковОтслеживаемогоРегистратора
ИЗ
   
КалендарьСостоянийСотрудниковОтслеживаемогоРегистратора КАК КалендарьСостоянийСотрудниковОтслеживаемогоРегистратора
ГДЕ
    КалендарьСостоянийСотрудниковОтслеживаемогоРегистратора.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Работает)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КалендарьНеявокСотрудниковБезОтслеживаемогоРегистратора.ДатаКалендаря,
   
КалендарьНеявокСотрудниковБезОтслеживаемогоРегистратора.Сотрудник,
   
КалендарьНеявокСотрудниковБезОтслеживаемогоРегистратора.Регистратор,
   
КалендарьНеявокСотрудниковБезОтслеживаемогоРегистратора.Состояние КАК СостояниеБезОтслеживаемогоРегистратора,
   
КалендарьНеявокСотрудниковОтслеживаемогоРегистратора.Состояние КАК СостояниеОтслеживаемогоРегистратора
ИЗ
   
КалендарьНеявокСотрудниковБезОтслеживаемогоРегистратора КАК КалендарьНеявокСотрудниковБезОтслеживаемогоРегистратора
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ КалендарьНеявокСотрудниковОтслеживаемогоРегистратора КАК КалендарьНеявокСотрудниковОтслеживаемогоРегистратора
        ПО КалендарьНеявокСотрудниковБезОтслеживаемогоРегистратора.Сотрудник = КалендарьНеявокСотрудниковОтслеживаемогоРегистратора.Сотрудник
            И КалендарьНеявокСотрудниковБезОтслеживаемогоРегистратора.ДатаКалендаря = КалендарьНеявокСотрудниковОтслеживаемогоРегистратора.ДатаКалендаря
            И КалендарьНеявокСотрудниковБезОтслеживаемогоРегистратора.Состояние <> КалендарьНеявокСотрудниковОтслеживаемогоРегистратора.Состояние

 

На выходе запроса - табличка с полями "ДатаКалендаря, Сотрудник, Регистратор, СостояниеБезОтслеживаемогоРегистратора, СостояниеОтслеживаемогоРегистратора", где по каждой конфликтной дате календаря указаны : Регистратор (конфликтный документ-регистратор кадровой неявки), устанавливающий для сотрудника Сотрудник состояние неявки СостояниеБезОтслеживаемогоРегистратора, в то время как ОтслеживаемыйРегистратор (параметр запроса) устанавливает состояние неявки СостояниеОтслеживаемогоРегистратора.

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

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

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Кадровый учет 1С:Предприятие 8 1С:Зарплата и Управление Персоналом 2.5 1С:Зарплата и Управление Персоналом 3.x Россия Управленческий учет Платные (руб)

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

52000 руб.

03.07.2025    5351    11    1    

11

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Разработчик 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 10 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

85400 руб.

05.10.2022    14597    17    8    

17

Зарплата Кадровый учет Бухгалтер 1С:Предприятие 8 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Предлагаем расширить возможности конфигурации 1С:УНФ 3.0 в части ведения кадрового учета. С помощью данного расширения в конфигурацию будут добавлены новые документы: "Отпуск" и "Командировка". Документы облегчат работу кадровика и расчетчика, а также повысят эффективность работы за счет оптимизации и упрощения процесса ведения учета.

36600 руб.

31.10.2024    4234    4    0    

3

Зарплата Кадровый учет Бухгалтер Пользователь 1С 8.3 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Если не хотите ставить тяжёлую ЗУП? Нужен только табель и начисление по своим правилам? Рекомендуем этот модуль подключается к УТ, получаете табель, начисление и создание Расходный кассовый ордер/Списание безналичных денежных средств без типовой ЗУП

20740 руб.

27.04.2026    1695    3    0    

1

Адаптация типовых решений БСП (Библиотека стандартных подсистем) Кадровый учет ЭДО и ОФД 1C:Бухгалтерия 1С:Зарплата и кадры 7.7 1C:ERP 1С:ЗУП 1С:УТ 1С:ДО Платные (руб)

Наше расширение 1С Госключ обеспечивает интеграцию любой конфигурации 1С на базе БСП с мобильным приложением «Госключ», позволяя сотрудникам подписывать кадровые документы (КЭДО) и документы материальной ответственности (МОЛ, ПБ) усиленной электронной подписью прямо со смартфона. Решение автоматизирует формирование и отправку документов на подпись, отслеживает статусы подписания и хранит подписанные файлы непосредственно в базе 1С

25000 руб.

06.03.2026    2775    4    0    

5

Кадровый учет 1С 8.3 1С:Зарплата и Управление Персоналом 3.x Россия Платные (руб)

Расширение для интеграции hh.ru для 1С:ЗУП. Позволит автоматизировать часть рутинных операций HR менеджера, рекрутера, сохранение истории взаимодействия с кандидатами в 1С:ЗУП

12200 руб.

24.12.2025    1771    1    0    

2
Для отправки сообщения требуется регистрация/авторизация