Имя: Пароль:
1C
 
Запрос из Зуп25
,
0 Дебет
 
01.08.16
11:11
часть стандартного запроса из ЗУП 25, объясните нубу что значат условия после где. После Бухгалтерии, зуп как то не очень быстро подается.

ВЫБРАТЬ
    ТЧРаботникиОрганизации.НомерСтроки КАК НомерСтроки,
    ТЧРаботникиОрганизации.ДатаНачала,
    ВЫБОР
        КОГДА ДанныеПоРаботникуДоНазначения.ПериодЗавершения <= ТЧРаботникиОрганизации.ДатаНачала
                И ДанныеПоРаботникуДоНазначения.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
            ТОГДА ДанныеПоРаботникуДоНазначения.ЗанимаемыхСтавокЗавершения
        ИНАЧЕ ДанныеПоРаботникуДоНазначения.ЗанимаемыхСтавок
    КОНЕЦ КАК ЗанимаемыхСтавок,
    ДатыПоследнихДвиженийРаботников.Сотрудник,
    ДанныеПоРаботникуДоНазначения.Период,
    ДанныеПоРаботникуДоНазначения.ПериодЗавершения,
    ДанныеПоРаботникуДоНазначения.Регистратор,
    ДанныеПоРаботникуДоНазначения.ПодразделениеОрганизации,
    ДанныеПоРаботникуДоНазначения.ПодразделениеОрганизацииЗавершения
ИЗ
    ВТСтрокиДокумента КАК ТЧРаботникиОрганизации
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ТЧРаботникиОрганизации.НомерСтроки КАК НомерСтроки,
            МАКСИМУМ(Работники.Период) КАК Период,
            Работники.Сотрудник КАК Сотрудник
        ИЗ
            ВТСтрокиДокумента КАК ТЧРаботникиОрганизации
                ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК Работники
                ПО ТЧРаботникиОрганизации.ДатаНачала >= Работники.Период
        ГДЕ
            Работники.Организация = &ГоловнаяОрганизация
        
        СГРУППИРОВАТЬ ПО
            ТЧРаботникиОрганизации.НомерСтроки,
            Работники.Сотрудник) КАК ДатыПоследнихДвиженийРаботников
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК ДанныеПоРаботникуДоНазначения
            ПО ДатыПоследнихДвиженийРаботников.Период = ДанныеПоРаботникуДоНазначения.Период
                И ДатыПоследнихДвиженийРаботников.Сотрудник = ДанныеПоРаботникуДоНазначения.Сотрудник
        ПО ТЧРаботникиОрганизации.НомерСтроки = ДатыПоследнихДвиженийРаботников.НомерСтроки
ГДЕ
    ТЧРаботникиОрганизации.ПодразделениеОрганизации = ВЫБОР
            КОГДА ДанныеПоРаботникуДоНазначения.ПериодЗавершения <= ТЧРаботникиОрганизации.ДатаНачала
                    И ДанныеПоРаботникуДоНазначения.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                ТОГДА ДанныеПоРаботникуДоНазначения.ПодразделениеОрганизацииЗавершения
            ИНАЧЕ ДанныеПоРаботникуДоНазначения.ПодразделениеОрганизации
        КОНЕЦ
    И ТЧРаботникиОрганизации.Должность = ВЫБОР
            КОГДА ДанныеПоРаботникуДоНазначения.ПериодЗавершения <= ТЧРаботникиОрганизации.ДатаНачала
                    И ДанныеПоРаботникуДоНазначения.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                ТОГДА ВЫБОР
                        КОГДА ДанныеПоРаботникуДоНазначения.ДолжностьЗавершения.НаименованиеДляОК = &ПустаяДолжность
                            ТОГДА ДанныеПоРаботникуДоНазначения.ДолжностьЗавершения
                        ИНАЧЕ ДанныеПоРаботникуДоНазначения.ДолжностьЗавершения.НаименованиеДляОК
                    КОНЕЦ
            ИНАЧЕ ВЫБОР
                    КОГДА ДанныеПоРаботникуДоНазначения.Должность.НаименованиеДляОК = &ПустаяДолжность
                        ТОГДА ДанныеПоРаботникуДоНазначения.Должность
                    ИНАЧЕ ДанныеПоРаботникуДоНазначения.Должность.НаименованиеДляОК
                КОНЕЦ
        КОНЕЦ
    И ВЫБОР
            КОГДА ДанныеПоРаботникуДоНазначения.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
                    И ДанныеПоРаботникуДоНазначения.ПериодЗавершения <= ТЧРаботникиОрганизации.ДатаНачала
                ТОГДА ДанныеПоРаботникуДоНазначения.ПричинаИзмененияСостоянияЗавершения
            ИНАЧЕ ДанныеПоРаботникуДоНазначения.ПричинаИзмененияСостояния
        КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
1 hhhh
 
01.08.16
11:19
наверно сотрудник временно где-то работает, то есть проверка даты, чтобы была между период и периодзавершения.
2 Дебет
 
01.08.16
11:24
зачем ставить условие на подразделение, если в таблице нет такой калонки?
3 Дебет
 
01.08.16
11:24
колонки
4 piter3
 
01.08.16
11:37
взять из ТЧ реквизиты до назначения(должность и подр-е).
.НаименованиеДляОК бррр
5 hhhh
 
01.08.16
12:07
(2) ну если сотрудник бегает по подразделениям.
6 Alexandr_U1982
 
01.08.16
12:10
(0) Из какого места ЗУПа взят этот запрос?
7 piter3
 
01.08.16
12:11
Перемещение скорее всего
8 Alexandr_U1982
 
01.08.16
12:14
(7) Поискал глобальным поиском - нет такого запроса в типовом ЗУП.
Так что это часть НЕстандартного запроса из ЗУП))
9 Alexandr_U1982
 
01.08.16
12:15
(2) В какой таблице нет колонки "Подразделение"?
10 Alexandr_U1982
 
01.08.16
12:17
Ага нашел похожее))
Общий модуль "ПолныеПраваЗК", функция "ВременноСвободныеСтавкиСтрокШтатногоРасписания"
11 Alexandr_U1982
 
01.08.16
12:43
Этот запрос вызывается из документов «Прием на работу» и «Кадровое перемещение». Запрос проверяет, занята ли штатная единица, на которую принимается новый сотрудник, либо перемещается уже работающий.

По поводу букв после слова «ГДЕ»:
Вложенный запрос со всеми соединениями получает результирующую таблицу, в которой на каждую дату приема/перемещения (из ТЧ документов Прием/Перемещение) получен «срез» занятых штатных единиц (из регистра «РаботникиОрганизации). И потом в разделе «ГДЕ» накладывается отбор по сочетанию Подразделения и должности, для которых нужно проверить, заняты они или нет. Также добавлено условие для исключения уволенных сотрудников. Конструкция ВЫБОР…КОГДА используется для учета временных перемещений.
Вот как-то так…
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший