Вход | Регистрация
 

Зуп 3.11. отчет по остатку отпусков

Ø [Фрэнки, 15.07.20 - 10:41]
Зуп 3.11. отчет по остатку отпусков
Я
   asder117
 
15.07.20 - 09:59
Коллеги доброго времени суток. На борду ЗУП 3.1.10.444 .Вопросик такой а не задумывался ли кто или может делал отчет по остаткам отпусков сотрудников? проблема в том что у меня база была перенесена с 2012 года и у меня не подтягивает период работы с 2012 года... тянет с момента начального заполнения базы. хотя у сотрудников стоит дата приема 2012 год, 2014 год но эти периоды не затягивает. Спасибо.
  Запрос загонял такого типа
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВидыОтпусков.Ссылка КАК ВидЕжегодногоОтпуска
ПОМЕСТИТЬ ВТЕжегодныеОтпуска
ИЗ
    Справочник.ВидыОтпусков КАК ВидыОтпусков
ГДЕ
    ВидыОтпусков.ОтпускЯвляетсяЕжегодным = ИСТИНА
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТЗаработанныеПрава.Сотрудник КАК Сотрудник,
    ВТЗаработанныеПрава.ВидЕжегодногоОтпуска КАК ВидЕжегодногоОтпуска,
    МАКСИМУМ(ВТЗаработанныеПрава.Период) КАК Период

ПОМЕСТИТЬ ВТУказателиПоследних
ИЗ
    ВТЗаработанныеПрава КАК ВТЗаработанныеПрава

СГРУППИРОВАТЬ ПО
    ВТЗаработанныеПрава.Сотрудник,
    ВТЗаработанныеПрава.ВидЕжегодногоОтпуска
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТЗаработанныеПрава.Сотрудник КАК Сотрудник,
    ВТЗаработанныеПрава.ВидЕжегодногоОтпуска КАК ВидЕжегодногоОтпуска,
    ВТЗаработанныеПрава.Период КАК Период,
    ЕСТЬNULL(ВТТекущиеПраваНаОтпуска.ДнейЕжегодно, 0) КАК ДнейЕжегодно
ПОМЕСТИТЬ ВТЗаработанныеОтпускаПоследние
ИЗ
    ВТЗаработанныеПрава КАК ВТЗаработанныеПрава
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТУказателиПоследних КАК ВТУказателиПоследних
            ЛЕВОЕ СОЕДИНЕНИЕ ВТТекущиеПраваНаОтпуска КАК ВТТекущиеПраваНаОтпуска
            ПО ВТУказателиПоследних.Сотрудник = ВТТекущиеПраваНаОтпуска.Сотрудник
                И ВТУказателиПоследних.ВидЕжегодногоОтпуска = ВТТекущиеПраваНаОтпуска.ВидЕжегодногоОтпуска
        ПО ВТЗаработанныеПрава.Сотрудник = ВТУказателиПоследних.Сотрудник
            И ВТЗаработанныеПрава.ВидЕжегодногоОтпуска = ВТУказателиПоследних.ВидЕжегодногоОтпуска
            И ВТЗаработанныеПрава.Период = ВТУказателиПоследних.Период
;

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

СГРУППИРОВАТЬ ПО
    ЗаработанныеПрава.Сотрудник,
    ЗаработанныеПрава.ВидЕжегодногоОтпуска,
    ЗаработанныеПрава.ДатаНачала,
    ЗаработанныеПрава.ДатаОкончания
;

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

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

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

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

СГРУППИРОВАТЬ ПО
    ФактическиеОтпуска.Сотрудник,
    ФактическиеОтпуска.ВидЕжегодногоОтпуска
;

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

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    УказателиРабочихЛет.Сотрудник КАК Сотрудник,
    УказателиРабочихЛет.ВидОтпуска КАК ВидОтпуска,
    УказателиРабочихЛет.РабочийГодДатаНачала КАК РабочийГодДатаНачала,
    РабочиеГодаСотрудников.ДатаОкончания КАК РабочийГодДатаОкончания,
    РабочиеГодаСотрудников.Период КАК Период,
    РабочиеГодаСотрудников.Остаток КАК НарастающийОстаток,
    РабочиеГодаСотрудниковПредыдущие.Остаток КАК ПредыдущийНарастающийОстаток,
    ВЫБОР
        КОГДА РабочиеГодаСотрудников.Остаток < 0
            ТОГДА ВЫБОР
                    КОГДА НЕ ВТЗаработанныеОтпускаПоследние.Сотрудник ЕСТЬ NULL
                        ТОГДА РабочиеГодаСотрудников.Остаток
                    ИНАЧЕ 0
                КОНЕЦ
        КОГДА УказателиРабочихЛет.РабочийГодДатаНачала = УказателиРабочихЛет.ПредыдущийРабочийГодДатаНачала
            ТОГДА РабочиеГодаСотрудников.Остаток
        КОГДА РабочиеГодаСотрудниковПредыдущие.Остаток < 0
            ТОГДА РабочиеГодаСотрудников.Остаток
        ИНАЧЕ РабочиеГодаСотрудников.Остаток - РабочиеГодаСотрудниковПредыдущие.Остаток
    КОНЕЦ КАК ОстатокГода,
    NULL КАК ЧасыОстаток,
    ЕСТЬNULL(ТекущееДнейЕжегодно.ДнейЕжегодно, 0) КАК ДнейЕжегодно,
    ВЫБОР
        КОГДА НЕ ВТЗаработанныеОтпускаПоследние.Сотрудник ЕСТЬ NULL
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК ПоследнийГод
ПОМЕСТИТЬ ВТИтоговыеРабочиеГодаОтпусков
ИЗ
    ВТУказателиРабочихЛет КАК УказателиРабочихЛет
        ЛЕВОЕ СОЕДИНЕНИЕ ВТРабочиеГодаСотрудников КАК РабочиеГодаСотрудников
            ЛЕВОЕ СОЕДИНЕНИЕ ВТЗаработанныеОтпускаПоследние КАК ВТЗаработанныеОтпускаПоследние
            ПО РабочиеГодаСотрудников.Сотрудник = ВТЗаработанныеОтпускаПоследние.Сотрудник
                И РабочиеГодаСотрудников.ВидОтпуска = ВТЗаработанныеОтпускаПоследние.ВидЕжегодногоОтпуска
                И РабочиеГодаСотрудников.Период = ВТЗаработанныеОтпускаПоследние.Период
        ПО УказателиРабочихЛет.Сотрудник = РабочиеГодаСотрудников.Сотрудник
            И УказателиРабочихЛет.ВидОтпуска = РабочиеГодаСотрудников.ВидОтпуска
            И УказателиРабочихЛет.РабочийГодДатаНачала = РабочиеГодаСотрудников.ДатаНачала
        ЛЕВОЕ СОЕДИНЕНИЕ ВТРабочиеГодаСотрудников КАК РабочиеГодаСотрудниковПредыдущие
        ПО УказателиРабочихЛет.Сотрудник = РабочиеГодаСотрудниковПредыдущие.Сотрудник
            И УказателиРабочихЛет.ВидОтпуска = РабочиеГодаСотрудниковПредыдущие.ВидОтпуска
            И УказателиРабочихЛет.ПредыдущийРабочийГодДатаНачала = РабочиеГодаСотрудниковПредыдущие.ДатаНачала
        ЛЕВОЕ СОЕДИНЕНИЕ ВТЗаработанныеОтпускаПоследние КАК ТекущееДнейЕжегодно
        ПО УказателиРабочихЛет.Сотрудник = ТекущееДнейЕжегодно.Сотрудник
            И УказателиРабочихЛет.ВидОтпуска = ТекущееДнейЕжегодно.ВидЕжегодногоОтпуска
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    РабочиеГодаСотрудников.Сотрудник КАК Сотрудник,
    РабочиеГодаСотрудников.ОстатокГода КАК ДниОстаток,
    NULL КАК ЧасыОстаток,
    РабочиеГодаСотрудников.ВидОтпуска КАК ВидОтпуска,
    РабочиеГодаСотрудников.РабочийГодДатаНачала КАК РабочийГодДатаНачала,
    РабочиеГодаСотрудников.РабочийГодДатаОкончания КАК РабочийГодДатаОкончания,
    РабочиеГодаСотрудников.Период КАК Период,
    РабочиеГодаСотрудников.ДнейЕжегодно КАК ДнейЕжегодно,
    РабочиеГодаСотрудников.ПоследнийГод КАК ПоследнийГод
ПОМЕСТИТЬ ВТИтоговыеСотрудники
ИЗ
    ВТИтоговыеРабочиеГодаОтпусков КАК РабочиеГодаСотрудников

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

ВЫБРАТЬ
    ДниЧасыОтгуловОстатки.Сотрудник,
    ДниЧасыОтгуловОстатки.ДниОстаток,
    ДниЧасыОтгуловОстатки.ЧасыОстаток,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL
ИЗ
    РегистрНакопления.ДниЧасыОтгулов.Остатки(&ДатаОтчета, ) КАК ДниЧасыОтгуловОстатки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Сотрудники.Ссылка КАК Сотрудник,
    &ДатаОтчета КАК Период
ПОМЕСТИТЬ ВТСотрудники
{ВЫБРАТЬ
    Сотрудник.*}
ИЗ
    Справочник.Сотрудники КАК Сотрудники
{ГДЕ
    Сотрудники.Ссылка.* КАК Сотрудник,
    Сотрудники.ФизическоеЛицо.*,
    Сотрудники.ГоловнаяОрганизация.*}
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Сотрудники.Сотрудник КАК Сотрудник
ПОМЕСТИТЬ ВТНеучтенныеСотрудники
ИЗ
    ВТСотрудники КАК Сотрудники
        ЛЕВОЕ СОЕДИНЕНИЕ ВТИтоговыеСотрудники КАК ИтоговыеСотрудники
        ПО Сотрудники.Сотрудник = ИтоговыеСотрудники.Сотрудник
ГДЕ
    ИтоговыеСотрудники.Сотрудник ЕСТЬ NULL
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ИтоговыеСотрудники.Сотрудник КАК Сотрудник,
    ИтоговыеСотрудники.ВидОтпуска КАК ВидОтпуска,
    ИтоговыеСотрудники.ДнейЕжегодно КАК ДнейЕжегодно,
    ВЫБОР
        КОГДА ИтоговыеСотрудники.ВидОтпуска ЕСТЬ NULL
            ТОГДА 3
        КОГДА ИтоговыеСотрудники.ВидОтпуска = &ОсновнойОтпуск
            ТОГДА 1
        ИНАЧЕ 2
    КОНЕЦ КАК ПриоритетВидаОтпуска,
    ИтоговыеСотрудники.РабочийГодДатаНачала КАК РабочийГодДатаНачала,
    ИтоговыеСотрудники.РабочийГодДатаОкончания КАК РабочийГодДатаОкончания,
    ИтоговыеСотрудники.ДниОстаток КАК Дни,
    ИтоговыеСотрудники.ЧасыОстаток КАК Часы,
    ВЫБОР
        КОГДА ИтоговыеСотрудники.ВидОтпуска ЕСТЬ NULL
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ КАК ЭтоОтпуск,
    ВЫБОР
        КОГДА ИтоговыеСотрудники.ВидОтпуска ЕСТЬ NULL
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК ЭтоОтгул,
    КадровыеДанныеСотрудников.ТабельныйНомер КАК ТабельныйНомер,
    КадровыеДанныеСотрудников.ФизическоеЛицо КАК ФизическоеЛицо,
    КадровыеДанныеСотрудников.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
    КадровыеДанныеСотрудников.Организация КАК ТекущаяОрганизация,
    КадровыеДанныеСотрудников.Подразделение КАК Подразделение,
    КадровыеДанныеСотрудников.Должность КАК Должность,
    КадровыеДанныеСотрудников.ВидЗанятости КАК ВидЗанятости,
    КадровыеДанныеСотрудников.ДатаПриема КАК ДатаПриема,
    КадровыеДанныеСотрудников.ДатаУвольнения КАК ДатаУвольнения,
    КадровыеДанныеСотрудников.Состояние КАК Состояние
ИЗ
    ВТИтоговыеСотрудники КАК ИтоговыеСотрудники
        ЛЕВОЕ СОЕДИНЕНИЕ Представления_КадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
        ПО ИтоговыеСотрудники.Сотрудник = КадровыеДанныеСотрудников.Сотрудник

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

ВЫБРАТЬ
    ПраваНаОтпускаНеучтенныхСотрудников.Сотрудник,
    ПраваНаОтпускаНеучтенныхСотрудников.ВидОтпуска,
    ПраваНаОтпускаНеучтенныхСотрудников.ДнейЕжегодно,
    ВЫБОР
        КОГДА ПраваНаОтпускаНеучтенныхСотрудников.ВидОтпуска ЕСТЬ NULL
            ТОГДА 3
        КОГДА ПраваНаОтпускаНеучтенныхСотрудников.ВидОтпуска = &ОсновнойОтпуск
            ТОГДА 1
        ИНАЧЕ 2
    КОНЕЦ,
    ДАТАВРЕМЯ(1, 1, 1),
    ДАТАВРЕМЯ(1, 1, 1),
    0,
    0,
    ВЫБОР
        КОГДА ПраваНаОтпускаНеучтенныхСотрудников.ВидОтпуска ЕСТЬ NULL
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ,
    ВЫБОР
        КОГДА ПраваНаОтпускаНеучтенныхСотрудников.ВидОтпуска ЕСТЬ NULL
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ,
    КадровыеДанныеСотрудников.ТабельныйНомер,
    КадровыеДанныеСотрудников.ФизическоеЛицо,
    КадровыеДанныеСотрудников.ГоловнаяОрганизация,
    КадровыеДанныеСотрудников.Организация,
    КадровыеДанныеСотрудников.Подразделение,
    КадровыеДанныеСотрудников.Должность,
    КадровыеДанныеСотрудников.ВидЗанятости,
    КадровыеДанныеСотрудников.ДатаПриема,
    КадровыеДанныеСотрудников.ДатаУвольнения,

    КадровыеДанныеСотрудников.Состояние
ИЗ
    ВТПраваНаОтпускаНеучтенныхСотрудников КАК ПраваНаОтпускаНеучтенныхСотрудников
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Представления_КадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
        ПО ПраваНаОтпускаНеучтенныхСотрудников.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
        ЛЕВОЕ СОЕДИНЕНИЕ ВТИтоговыеСотрудники КАК ИтоговыеСотрудники
        ПО ПраваНаОтпускаНеучтенныхСотрудников.Сотрудник = ИтоговыеСотрудники.Сотрудник
            И ПраваНаОтпускаНеучтенныхСотрудников.ВидОтпуска = ИтоговыеСотрудники.ВидОтпуска
ГДЕ
    ИтоговыеСотрудники.ВидОтпуска ЕСТЬ NULL
   Фрэнки
 
1 - 15.07.20 - 10:05
пипец... ты длинней не мог простыню найти. Ну не будет никто практически в формате форуме читать это все.

По самому вопросу.

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

Зачем дальше упорствовать и пытаться вычислять остаток там, где запросы из конфигурации его читать все равно не будут?

Но заглавный пост я удаляю, ветку топлю.

Создавай новую, а простынь можешь для желающих отдельным постом внутри ветки показать или по ссылке на файлообменник.
   asder117
 
2 - 15.07.20 - 10:08
(1) Понял..так почему форма Т2 нормально считает?
   Фрэнки
 
3 - 15.07.20 - 10:08
Вопрос сам по себе хороший. И обсудить его стоит, наверное. Но не превращать же нулевой пост в не пойми что?!
   asder117
 
4 - 15.07.20 - 10:09
ок создам новую ветку без простынки
   kzot
 
5 - 15.07.20 - 10:15
(2) что значит считает нормально ?
   asder117
 
6 - 15.07.20 - 10:18
(4) (1) создал ветку Зуп 3.11. отчет по остатку отпусков (5) старые периоды работы  даты приема до начального заполнения показывает
   kzot
 
7 - 15.07.20 - 10:20
(6)документ  "Перенос данных" и движения по РС "Реестр отпусков"
   kzot
 
8 - 15.07.20 - 10:21
(7)+ РС "Основные данные контракта, договора сотрудника" и "Сведения контракта, договора сотрудника"
   asder117
 
9 - 15.07.20 - 10:21
(7) Посмотрю что там
   kzot
 
10 - 15.07.20 - 10:25
(6)  смотреть по остаткам ОМ "ОстаткиОтпусков" всё там, как пример Функция ТаблицаОстатковОтпусков(СтруктураПараметров)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.