Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 мая 2024, 14:42

Помогите с запросом

Автор AlenkaInt, 15 ноя 2012, 12:26

0 Пользователей и 1 гость просматривают эту тему.

AlenkaInt

Есть такой запрос
ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВЫРАЗИТЬ(СУММА(ЧисленностьРаботников.СписочныйСостав) / &ДнейВПериоде КАК ЧИСЛО(7, 0)) КАК СписочныйСостав,
| ВЫРАЗИТЬ(СУММА(ЧисленностьРаботников.Совместители) / &РабочихДнейВПериоде КАК ЧИСЛО(7, 0)) КАК Совместители,
| ВЫРАЗИТЬ(СУММА(ЧисленностьРаботников.Договорники) / &ДнейВПериоде КАК ЧИСЛО(7, 0)) КАК Договорники
|ИЗ
| (ВЫБРАТЬ
|  0 КАК Порядок,
|  РаботникиОрганизаций.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
|  ВЫБОР
|   КОГДА РаботникиОрганизаций.Сотрудник.ВидЗанятости = &ОсновноеМестоРаботы
|     ИЛИ РаботникиОрганизаций.Сотрудник.ВидЗанятости ЕСТЬ NULL
|    ТОГДА 1
|   ИНАЧЕ 0
|  КОНЕЦ * &ДнейВПериоде КАК СписочныйСостав,
|  ВЫБОР
|   КОГДА РаботникиОрганизаций.Сотрудник.ВидЗанятости = &Совместительство
|    ТОГДА РаботникиОрганизаций.ЗанимаемыхСтавок
|   ИНАЧЕ 0
|  КОНЕЦ * &РабочихДнейВПериоде КАК Совместители,
|  0 КАК Договорники,
|  NULL КАК Поле1
| ИЗ
|  РегистрСведений.РаботникиОрганизаций.СрезПоследних(&НачДата, ) КАК РаботникиОрганизаций
| ГДЕ
|  РаботникиОрганизаций.ПодразделениеОрганизации.Владелец = &Организация
|  И РаботникиОрганизаций.ПричинаИзмененияСостояния <> &Увольнение
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
|  0,
|  РаботникиОрганизаций.ПодразделениеОрганизации,
|  ВЫБОР
|   КОГДА РаботникиОрганизаций.Сотрудник.ВидЗанятости = &ОсновноеМестоРаботы
|     ИЛИ РаботникиОрганизаций.Сотрудник.ВидЗанятости ЕСТЬ NULL
|    ТОГДА 1
|   ИНАЧЕ 0
|  КОНЕЦ * (1 + РАЗНОСТЬДАТ(РаботникиОрганизаций.Период, &КонДата, ДЕНЬ)),
|  0,
|  0,
|  NULL
| ИЗ
|  РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
| ГДЕ
|  РаботникиОрганизаций.Период > &НачДата
|  И РаботникиОрганизаций.Период <= &КонДата
|  И РаботникиОрганизаций.ПричинаИзмененияСостояния = &ПриемНаРаботу
|  И РаботникиОрганизаций.ПодразделениеОрганизации.Владелец = &Организация
|  И РаботникиОрганизаций.Активность
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
|  0,
|  РаботникиОрганизаций.ПодразделениеОрганизации,
|  0,
|  ВЫБОР
|   КОГДА РаботникиОрганизаций.Сотрудник.ВидЗанятости = &Совместительство
|    ТОГДА РаботникиОрганизаций.ЗанимаемыхСтавок
|   ИНАЧЕ 0
|  КОНЕЦ,
|  0,
|  NULL
| ИЗ
|  РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
|   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь
|   ПО РаботникиОрганизаций.Период <= Календарь.ДатаКалендаря
|    И (Календарь.ДатаКалендаря <= &КонДата)
|    И (Календарь.ВидДня В (&РабочиеДни))
| ГДЕ
|  РаботникиОрганизаций.Период > &НачДата
|  И РаботникиОрганизаций.Период <= &КонДата
|  И РаботникиОрганизаций.ПричинаИзмененияСостояния = &ПриемНаРаботу
|  И РаботникиОрганизаций.ПодразделениеОрганизации.Владелец = &Организация
|  И РаботникиОрганизаций.Активность
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
|  0,
|  ПредСостояние.ПодразделениеОрганизации,
|  ВЫБОР
|   КОГДА РаботникиОрганизаций.Сотрудник.ВидЗанятости = &ОсновноеМестоРаботы
|     ИЛИ РаботникиОрганизаций.Сотрудник.ВидЗанятости ЕСТЬ NULL
|    ТОГДА -1
|   ИНАЧЕ 0
|  КОНЕЦ * (1 + РАЗНОСТЬДАТ(РаботникиОрганизаций.Период, &КонДата, ДЕНЬ)),
|  0,
|  0,
|  NULL
| ИЗ
|  РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
|   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК ПредСостояние
|   ПО РаботникиОрганизаций.Сотрудник = ПредСостояние.Сотрудник
|    И РаботникиОрганизаций.Организация = ПредСостояние.Организация
|    И (ПредСостояние.Период В
|     (ВЫБРАТЬ ПЕРВЫЕ 1
|      РегРаб.Период
|     ИЗ
|      РегистрСведений.РаботникиОрганизаций КАК РегРаб
|     ГДЕ
|      РаботникиОрганизаций.Сотрудник = РегРаб.Сотрудник
|      И РаботникиОрганизаций.Организация = РегРаб.Организация
|      И РегРаб.Активность
|      И РегРаб.Период < РаботникиОрганизаций.Период
|     УПОРЯДОЧИТЬ ПО
|      РегРаб.Период УБЫВ))
| ГДЕ
|  РаботникиОрганизаций.Период > &НачДата
|  И РаботникиОрганизаций.Период <= &КонДата
|  И РаботникиОрганизаций.ПричинаИзмененияСостояния <> &ПриемНаРаботу
|  И РаботникиОрганизаций.ПодразделениеОрганизации.Владелец = &Организация
|  И РаботникиОрганизаций.Активность
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
|  0,
|  ПредСостояние.ПодразделениеОрганизации,
|  0,
|  ВЫБОР
|   КОГДА РаботникиОрганизаций.Сотрудник.ВидЗанятости = &Совместительство
|    ТОГДА -ПредСостояние.ЗанимаемыхСтавок
|   ИНАЧЕ 0
|  КОНЕЦ,
|  0,
|  NULL
| ИЗ
|  РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
|   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь
|   ПО РаботникиОрганизаций.Период <= Календарь.ДатаКалендаря
|    И (Календарь.ДатаКалендаря <= &КонДата)
|    И (Календарь.ВидДня В (&РабочиеДни))
|   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК ПредСостояние
|   ПО РаботникиОрганизаций.Сотрудник = ПредСостояние.Сотрудник
|    И РаботникиОрганизаций.Организация = ПредСостояние.Организация
|    И (ПредСостояние.Период В
|     (ВЫБРАТЬ ПЕРВЫЕ 1
|      РегРаб.Период
|     ИЗ
|      РегистрСведений.РаботникиОрганизаций КАК РегРаб
|     ГДЕ
|      РаботникиОрганизаций.Сотрудник = РегРаб.Сотрудник
|      И РаботникиОрганизаций.Организация = РегРаб.Организация
|      И РегРаб.Активность
|      И РегРаб.Период < РаботникиОрганизаций.Период
|     УПОРЯДОЧИТЬ ПО
|      РегРаб.Период УБЫВ))
| ГДЕ
|  РаботникиОрганизаций.Период > &НачДата
|  И РаботникиОрганизаций.Период <= &КонДата
|  И РаботникиОрганизаций.ПричинаИзмененияСостояния <> &ПриемНаРаботу
|  И РаботникиОрганизаций.ПодразделениеОрганизации.Владелец = &Организация
|  И РаботникиОрганизаций.Активность
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
|  0,
|  РаботникиОрганизаций.ПодразделениеОрганизации,
|  ВЫБОР
|   КОГДА РаботникиОрганизаций.Сотрудник.ВидЗанятости = &ОсновноеМестоРаботы
|     ИЛИ РаботникиОрганизаций.Сотрудник.ВидЗанятости ЕСТЬ NULL
|    ТОГДА 1
|   ИНАЧЕ 0
|  КОНЕЦ * (1 + РАЗНОСТЬДАТ(РаботникиОрганизаций.Период, &КонДата, ДЕНЬ)),
|  0,
|  0,
|  NULL
| ИЗ
|  РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
| ГДЕ
|  РаботникиОрганизаций.Период > &НачДата
|  И РаботникиОрганизаций.Период <= &КонДата
|  И РаботникиОрганизаций.ПричинаИзмененияСостояния = &Перемещение
|  И РаботникиОрганизаций.ПодразделениеОрганизации.Владелец = &Организация
|  И РаботникиОрганизаций.Активность
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
|  0,
|  РаботникиОрганизаций.ПодразделениеОрганизации,
|  0,
|  ВЫБОР
|   КОГДА РаботникиОрганизаций.Сотрудник.ВидЗанятости = &Совместительство
|    ТОГДА РаботникиОрганизаций.ЗанимаемыхСтавок
|   ИНАЧЕ 0
|  КОНЕЦ,
|  0,
|  NULL
| ИЗ
|  РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
|   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь
|   ПО РаботникиОрганизаций.Период <= Календарь.ДатаКалендаря
|    И (Календарь.ДатаКалендаря <= &КонДата)
|    И (Календарь.ВидДня В (&РабочиеДни))
| ГДЕ
|  РаботникиОрганизаций.Период > &НачДата
|  И РаботникиОрганизаций.Период <= &КонДата
|  И РаботникиОрганизаций.ПричинаИзмененияСостояния = &Перемещение
|  И РаботникиОрганизаций.ПодразделениеОрганизации.Владелец = &Организация
|  И РаботникиОрганизаций.Активность
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
|  0,
|  РаботникиОрганизаций.ПодразделениеОрганизации,
|  ВЫБОР
|   КОГДА РаботникиОрганизаций.Сотрудник.ВидЗанятости = &ОсновноеМестоРаботы
|     ИЛИ РаботникиОрганизаций.Сотрудник.ВидЗанятости ЕСТЬ NULL
|    ТОГДА -1
|   ИНАЧЕ 0
|  КОНЕЦ * РАЗНОСТЬДАТ(ВЫБОР
|    КОГДА СостояниеРаботниковОрганизаций.Период < &НачДата
|     ТОГДА &НачДата
|    ИНАЧЕ СостояниеРаботниковОрганизаций.Период
|   КОНЕЦ, ВЫБОР
|    КОГДА ДОБАВИТЬКДАТЕ(&КонДата, ДЕНЬ, 1) < ЕСТЬNULL(СостояниеРаботниковОрганизаций.СледСостояниеПериод, ДОБАВИТЬКДАТЕ(&КонДата, ДЕНЬ, 1))
|     ТОГДА ДОБАВИТЬКДАТЕ(&КонДата, ДЕНЬ, 1)
|    ИНАЧЕ ЕСТЬNULL(СостояниеРаботниковОрганизаций.СледСостояниеПериод, ДОБАВИТЬКДАТЕ(&КонДата, ДЕНЬ, 1))
|   КОНЕЦ, ДЕНЬ),
|  0,
|  0,
|  NULL
| ИЗ
|  (ВЫБРАТЬ
|   СостояниеРаботниковОрганизаций.Активность КАК Активность,
|   СостояниеРаботниковОрганизаций.Период КАК Период,
|   СостояниеРаботниковОрганизаций.Сотрудник КАК Сотрудник,
|   СостояниеРаботниковОрганизаций.Организация КАК Организация,
|   СостояниеРаботниковОрганизаций.Состояние КАК Состояние,
|   СостояниеРаботниковОрганизаций.ПериодЗавершения КАК ПериодЗавершения,
|   ВЫБОР
|    КОГДА СостояниеРаботниковОрганизаций.ПериодЗавершения = &ПустаяДата
|     ТОГДА СледСостояние.Период
|    ИНАЧЕ ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизаций.ПериодЗавершения, ДЕНЬ, 1)
|   КОНЕЦ КАК СледСостояниеПериод
|  ИЗ
|   РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
|    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СледСостояние
|    ПО СостояниеРаботниковОрганизаций.Сотрудник = СледСостояние.Сотрудник
|     И СостояниеРаботниковОрганизаций.Организация = СледСостояние.Организация
|     И (СледСостояние.Активность)
|     И (СледСостояние.Период В
|      (ВЫБРАТЬ ПЕРВЫЕ 1
|       РегРаб.Период
|      ИЗ
|       РегистрСведений.СостояниеРаботниковОрганизаций КАК РегРаб
|      ГДЕ
|       СостояниеРаботниковОрганизаций.Сотрудник = РегРаб.Сотрудник
|       И СостояниеРаботниковОрганизаций.Организация = РегРаб.Организация
|       И РегРаб.Активность
|       И РегРаб.Период > СостояниеРаботниковОрганизаций.Период
|      УПОРЯДОЧИТЬ ПО
|       РегРаб.Период))) КАК СостояниеРаботниковОрганизаций
|   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
|   ПО СостояниеРаботниковОрганизаций.Сотрудник = РаботникиОрганизаций.Сотрудник
|    И СостояниеРаботниковОрганизаций.Организация = РаботникиОрганизаций.Организация
|    И (РаботникиОрганизаций.Период В
|     (ВЫБРАТЬ ПЕРВЫЕ 1
|      РегРаб.Период
|     ИЗ
|      РегистрСведений.РаботникиОрганизаций КАК РегРаб
|     ГДЕ
|      СостояниеРаботниковОрганизаций.Сотрудник = РегРаб.Сотрудник
|      И СостояниеРаботниковОрганизаций.Организация = РегРаб.Организация
|      И РегРаб.Активность
|      И РегРаб.Период <= СостояниеРаботниковОрганизаций.Период
|     УПОРЯДОЧИТЬ ПО
|      РегРаб.Период УБЫВ))
| ГДЕ
|  СостояниеРаботниковОрганизаций.Состояние В(&Отпуска)
|  И СостояниеРаботниковОрганизаций.Активность
|  И СостояниеРаботниковОрганизаций.Организация = &Организация
|  И СостояниеРаботниковОрганизаций.Период <= &КонДата
|  И ЕСТЬNULL(СостояниеРаботниковОрганизаций.СледСостояниеПериод, ДОБАВИТЬКДАТЕ(&КонДата, ДЕНЬ, 1)) >= &НачДата
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
|  0,
|  РаботникиОрганизаций.ПодразделениеОрганизации,
|  0,
|  ВЫБОР
|   КОГДА РаботникиОрганизаций.Сотрудник.ВидЗанятости = &Совместительство
|    ТОГДА -РаботникиОрганизаций.ЗанимаемыхСтавок
|   ИНАЧЕ 0
|  КОНЕЦ,
|  0,
|  NULL
| ИЗ
|  (ВЫБРАТЬ
|   СостояниеРаботниковОрганизаций.Активность КАК Активность,
|   СостояниеРаботниковОрганизаций.Период КАК Период,
|   СостояниеРаботниковОрганизаций.Сотрудник КАК Сотрудник,
|   СостояниеРаботниковОрганизаций.Организация КАК Организация,
|   СостояниеРаботниковОрганизаций.Состояние КАК Состояние,
|   СостояниеРаботниковОрганизаций.ПериодЗавершения КАК ПериодЗавершения,
|   ВЫБОР
|    КОГДА СостояниеРаботниковОрганизаций.ПериодЗавершения = &ПустаяДата
|     ТОГДА СледСостояние.Период
|    ИНАЧЕ ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизаций.ПериодЗавершения, ДЕНЬ, 1)
|   КОНЕЦ КАК СледСостояниеПериод
|  ИЗ
|   РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
|    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СледСостояние
|    ПО СостояниеРаботниковОрганизаций.Сотрудник = СледСостояние.Сотрудник
|     И СостояниеРаботниковОрганизаций.Организация = СледСостояние.Организация
|     И (СледСостояние.Активность)
|     И (СледСостояние.Период В
|      (ВЫБРАТЬ ПЕРВЫЕ 1
|       РегРаб.Период
|      ИЗ
|       РегистрСведений.СостояниеРаботниковОрганизаций КАК РегРаб
|      ГДЕ
|       СостояниеРаботниковОрганизаций.Сотрудник = РегРаб.Сотрудник
|       И СостояниеРаботниковОрганизаций.Организация = РегРаб.Организация
|       И РегРаб.Активность
|       И РегРаб.Период > СостояниеРаботниковОрганизаций.Период
|      УПОРЯДОЧИТЬ ПО
|       РегРаб.Период))) КАК СостояниеРаботниковОрганизаций
|   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
|   ПО СостояниеРаботниковОрганизаций.Сотрудник = РаботникиОрганизаций.Сотрудник
|    И СостояниеРаботниковОрганизаций.Организация = РаботникиОрганизаций.Организация
|    И (РаботникиОрганизаций.Период В
|     (ВЫБРАТЬ ПЕРВЫЕ 1
|      РегРаб.Период
|     ИЗ
|      РегистрСведений.РаботникиОрганизаций КАК РегРаб
|     ГДЕ
|      СостояниеРаботниковОрганизаций.Сотрудник = РегРаб.Сотрудник
|      И СостояниеРаботниковОрганизаций.Организация = РегРаб.Организация
|      И РегРаб.Активность
|      И РегРаб.Период <= СостояниеРаботниковОрганизаций.Период
|     УПОРЯДОЧИТЬ ПО
|      РегРаб.Период УБЫВ))
|   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь
|   ПО (&НачДата <= Календарь.ДатаКалендаря)
|    И (Календарь.ДатаКалендаря <= &КонДата)
|    И (Календарь.ВидДня В (&РабочиеДни))
|    И СостояниеРаботниковОрганизаций.Период <= Календарь.ДатаКалендаря
|    И (Календарь.ДатаКалендаря < ЕСТЬNULL(СостояниеРаботниковОрганизаций.СледСостояниеПериод, ДОБАВИТЬКДАТЕ(&КонДата, ДЕНЬ, 1)))
| ГДЕ
|  СостояниеРаботниковОрганизаций.Состояние В(&Отпуска)
|  И СостояниеРаботниковОрганизаций.Активность
|  И СостояниеРаботниковОрганизаций.Организация = &Организация
|  И СостояниеРаботниковОрганизаций.Период <= &КонДата
|  И ЕСТЬNULL(СостояниеРаботниковОрганизаций.СледСостояниеПериод, ДОБАВИТЬКДАТЕ(&КонДата, ДЕНЬ, 1)) >= &НачДата
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
|  1,
|  ДоговорникиОрганизаций.ПодразделениеОрганизации,
|  0,
|  0,
|  МАКСИМУМ(1 + РАЗНОСТЬДАТ(ВЫБОР
|     КОГДА ДоговорникиОрганизаций.ДатаНачала < &НачДата
|      ТОГДА &НачДата
|     ИНАЧЕ ДоговорникиОрганизаций.ДатаНачала
|    КОНЕЦ, ВЫБОР
|     КОГДА &КонДата < ДоговорникиОрганизаций.ДатаОкончания
|      ТОГДА &КонДата
|     ИНАЧЕ ДоговорникиОрганизаций.ДатаОкончания
|    КОНЕЦ, ДЕНЬ)),
|  ""Договор подряда (выполнение работ, оказание услуг)""
| ИЗ
|  Документ.ДоговорНаВыполнениеРаботСФизЛицом КАК ДоговорникиОрганизаций
| ГДЕ
|  ДоговорникиОрганизаций.Организация = &Организация
|  И ДоговорникиОрганизаций.Проведен = ИСТИНА
|  И ДоговорникиОрганизаций.ДатаОкончания >= &НачДата
|  И ДоговорникиОрганизаций.ДатаНачала <= &КонДата
|
| СГРУППИРОВАТЬ ПО
|  ДоговорникиОрганизаций.Сотрудник,
|  ДоговорникиОрганизаций.ПодразделениеОрганизации) КАК ЧисленностьРаботников
|ГДЕ
| ЧисленностьРаботников.ПодразделениеОрганизации В ИЕРАРХИИ(&ПодразделениеОрганизации)";
Когда я открываю в конструкторе запросов не могу найти источник ЧисленностьРаботников. И еще. Запрос очень длинный, а когда я смотрю в конструкторе, там всего один источник и 3 выходных поля. И вообще не понимаю что этот запрос делает. Подскажите, как посмотеть все условия и прочее?

cska-fanat-kz

В конструкторе по ЧисленностиРаботников - правой клавишей мыши. "Изменить". Попадете во вложенный запрос...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

AlenkaInt

Спасибо фанат-ЦСКА, я кстати тоже за них болею:). Может вы подскажете, что в этом запросе не так? Почему за 1 месяц нормально данные выводит, а за 9 месяцев нет. Извините, не понятно написала. У меня есть внешний отчет в ЗУПе Форма П-4 "Сведения о численности, заработной плате и движении работников". И этот отчет не правильно считает количество людей когда выбирают 9 месяцев, за 1 нормально. Подозреваю, что дело в этом запросе.

cska-fanat-kz

ЦСКА обсудим в личке за рюмкой чаю ;)

А ЗУПа к сожалению нет под рукой...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск