Сравнение плановых и фактических дней отпуска

FastCode 63 8

Объединение двух таблиц запроса с датами Имеется график отпусков, в нем есть колонки плановая дата ухода в отпуск и фактическая (эти данные получаются из разных регистров). Необходимо сопоставить эти данные в запросе. План и факт отпуска рассматриваются как списание по партиям. Запланированный отпуск добавляет неотгулянные дни, а фактический - их списывает. Поэтому критерием соединения плановых и фактических отпусков является сквозной (по всем отпускам) номер дня отпуска. Исходными являются таблицы "План" и "Факт" с колонками "Сотрудник", "Начало", "Окончание".

Автор: ildarovich

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

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    Факт.Сотрудник,
    Факт.Начало,
    Календарь.ДатаКалендаря КАК День
ПОМЕСТИТЬ ФактДни
ИЗ
    Факт КАК Факт
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь
        ПО (Календарь.ДатаКалендаря МЕЖДУ Факт.Начало И Факт.Окончание)
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    План.Сотрудник,
    План.Начало,
    План.День,
    КОЛИЧЕСТВО(Прошлое.День) КАК НомерДня
ПОМЕСТИТЬ ПланПлюс
ИЗ
    ПланДни КАК План
        ЛЕВОЕ СОЕДИНЕНИЕ ПланДни КАК Прошлое
        ПО План.Сотрудник = Прошлое.Сотрудник
            И План.День >= Прошлое.День

СГРУППИРОВАТЬ ПО
    План.Сотрудник,
    План.Начало,
    План.День
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    Факт.Сотрудник,
    Факт.Начало,
    Факт.День,
    КОЛИЧЕСТВО(Прошлое.День) КАК НомерДня
ПОМЕСТИТЬ ФактПлюс
ИЗ
    ФактДни КАК Факт
        ЛЕВОЕ СОЕДИНЕНИЕ ФактДни КАК Прошлое
        ПО Факт.Сотрудник = Прошлое.Сотрудник
            И Факт.День >= Прошлое.День

СГРУППИРОВАТЬ ПО
    Факт.Сотрудник,
    Факт.Начало,
    Факт.День
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ПланПлюс.Сотрудник КАК СотрудникПлан,
    МИНИМУМ(ПланПлюс.День) КАК НачалоПлан,
    МАКСИМУМ(ПланПлюс.День) КАК ОкончаниеПлан,
    ФактПлюс.Сотрудник КАК СотрудникФакт,
    МИНИМУМ(ФактПлюс.День) КАК НачалоФакт,
    МАКСИМУМ(ФактПлюс.День) КАК ОкончаниеФакт,
    ЕСТЬNULL(КОЛИЧЕСТВО(ПланПлюс.День), КОЛИЧЕСТВО(ФактПлюс.День)) КАК Длина
ИЗ
    ПланПлюс КАК ПланПлюс
        ПОЛНОЕ СОЕДИНЕНИЕ ФактПлюс КАК ФактПлюс
        ПО ПланПлюс.Сотрудник = ФактПлюс.Сотрудник
            И ПланПлюс.НомерДня = ФактПлюс.НомерДня

СГРУППИРОВАТЬ ПО
    ПланПлюс.Сотрудник,
    ФактПлюс.Сотрудник,
    ПланПлюс.Начало,
    ФактПлюс.Начало

УПОРЯДОЧИТЬ ПО
    СотрудникПлан,
    НачалоПлан,
    НачалоФакт
{2} Ожидается идентификатор
Орфографическая ошибка в неотгулянные: неотгулянные
OneTracker - трекер учета рабочего времени программиста 1С

Похожие публикации

Определение плановых остатков товара с учетом предшествующих фактических и будущих плановых продаж

Данные среднего заработка, остатка отпусков, резерва отпусков

Действующие плановые начисления на дату

Количество дней, когда товар был на складе

Плановая себестоимость продаж (цена на Дату документа)

Модератору