Имя: Пароль:
1C
1С v8
Почему СКД коверкает мой запрос?
0 al_zzz
 
11.02.13
09:06
Не могу понять, почему СКД так коверкает запрос.
Получаю количество месяцев периода, когда сотрудник работал (надо, чтоб работал не менее 15 дней).
Запрос в СКД: "ВЫБРАТЬ
   Подзапрос.Сотрудник,
   ЕСТЬNULL(МАКСИМУМ(Подзапрос.РаботаетС), &НачалоПериода) КАК РаботаетС,
   ЕСТЬNULL(МАКСИМУМ(Подзапрос.РаботаетПо), &КонецПериода) КАК РаботаетПо
ПОМЕСТИТЬ _00_Сотры
ИЗ
   (ВЫБРАТЬ
       РаботникиОрганизаций.Сотрудник КАК Сотрудник,
       РаботникиОрганизаций.Регистратор КАК Регистратор,
       РаботникиОрганизаций.Период КАК РаботаетС,
       NULL КАК РаботаетПо
   ИЗ
       РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
   ГДЕ
       РаботникиОрганизаций.Период МЕЖДУ &НачалоПериода И &КонецПериода
       И РаботникиОрганизаций.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу)
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       РаботникиОрганизаций.Сотрудник,
       РаботникиОрганизаций.Регистратор,
       NULL,
       РаботникиОрганизаций.Период
   ИЗ
       РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
   ГДЕ
       РаботникиОрганизаций.Период МЕЖДУ &НачалоПериода И &КонецПериода
       И РаботникиОрганизаций.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)) КАК Подзапрос
Где подзапрос.Сотрудник = &Сотрудник
СГРУППИРОВАТЬ ПО
   Подзапрос.Сотрудник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   _00_Сотры.Сотрудник,
   _00_Сотры.РаботаетС,
   _00_Сотры.РаботаетПо,
   ВложенныйЗапрос.Дата,
   ВЫБОР
       КОГДА ВложенныйЗапрос.Дата МЕЖДУ _00_Сотры.РаботаетС И _00_Сотры.РаботаетПо
           ТОГДА 1
       ИНАЧЕ 0
   КОНЕЦ КАК Отработан
ПОМЕСТИТЬ _01_Сотр_Дата
ИЗ
   (ВЫБРАТЬ
       ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК Дата
   ИЗ
       (ВЫБРАТЬ
           0 КАК a
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           1
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           2
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           3
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           4
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           5
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           6
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           7
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           8
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           9) КАК aa
           ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               0 КАК b
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               1
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               2
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               3
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               4
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               5
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               6
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               7
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               8
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               9) КАК bb
           ПО (ИСТИНА)
           ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               0 КАК c
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               1
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               2
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               3
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               4
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               5
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               6
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               7
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               8
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               9) КАК cc
           ПО (ИСТИНА)
           ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               0 КАК d
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               1
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               2
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               3
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               4
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               5
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               6
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               7
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               8
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               9) КАК dd
           ПО (ИСТИНА)
   ГДЕ
       aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)) КАК ВложенныйЗапрос,
   _00_Сотры КАК _00_Сотры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   _01_Сотр_Дата.Сотрудник КАК Сотрудник,
   _01_Сотр_Дата.РаботаетС,
   _01_Сотр_Дата.РаботаетПо,
   НАЧАЛОПЕРИОДА(_01_Сотр_Дата.Дата, МЕСЯЦ) КАК ПериодРаботы,
   _01_Сотр_Дата.Отработан КАК Отработан
ПОМЕСТИТЬ _002_Сотр_Мес_Отработано
ИЗ
   _01_Сотр_Дата КАК _01_Сотр_Дата

//СГРУППИРОВАТЬ ПО
//    _01_Сотр_Дата.Сотрудник,
//    _01_Сотр_Дата.РаботаетС,
//    _01_Сотр_Дата.РаботаетПо,
//    НАЧАЛОПЕРИОДА(_01_Сотр_Дата.Дата, МЕСЯЦ)
;
////////////////////////////////////////////////////////////////////////////////
Выбрать
   _002_Сотр_Мес_Отработано.Сотрудник,
   _002_Сотр_Мес_Отработано.РаботаетС,
   _002_Сотр_Мес_Отработано.РаботаетПо,
   _002_Сотр_Мес_Отработано.ПериодРаботы,
   Сумма(_002_Сотр_Мес_Отработано.Отработан) Как Отработан
   Поместить _02_Сотр_Мес_Отработано
Из _002_Сотр_Мес_Отработано Как _002_Сотр_Мес_Отработано    
Сгруппировать по
   _002_Сотр_Мес_Отработано.Сотрудник,
   _002_Сотр_Мес_Отработано.РаботаетС,
   _002_Сотр_Мес_Отработано.РаботаетПо,
   _002_Сотр_Мес_Отработано.ПериодРаботы
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   _02_Сотр_Мес_Отработано.Сотрудник КАК Сотрудник,
   _02_Сотр_Мес_Отработано.РаботаетС,
   _02_Сотр_Мес_Отработано.РаботаетПо,
   СУММА(_02_Сотр_Мес_Отработано.Отработан) КАК Отработано
//Поместить Подзапрос        
ИЗ
   _02_Сотр_Мес_Отработано КАК _02_Сотр_Мес_Отработано

СГРУППИРОВАТЬ ПО
   _02_Сотр_Мес_Отработано.Сотрудник,
   _02_Сотр_Мес_Отработано.РаботаетС,
   _02_Сотр_Мес_Отработано.РаботаетПо

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

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

А вот такой запрос в консоли отчета:
"ВЫБРАТЬ
   Подзапрос.Сотрудник КАК Сотрудник,
   ЕСТЬNULL(МАКСИМУМ(Подзапрос.РаботаетС), &НачалоПериода) КАК РаботаетС,
   ЕСТЬNULL(МАКСИМУМ(Подзапрос.РаботаетПо), &КонецПериода) КАК РаботаетПо
ПОМЕСТИТЬ _00_Сотры
ИЗ
   (ВЫБРАТЬ
       РаботникиОрганизаций.Сотрудник КАК Сотрудник,
       РаботникиОрганизаций.Регистратор КАК Регистратор,
       РаботникиОрганизаций.Период КАК РаботаетС,
       NULL КАК РаботаетПо
   ИЗ
       РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
   ГДЕ
       РаботникиОрганизаций.Период МЕЖДУ &НачалоПериода И &КонецПериода
       И РаботникиОрганизаций.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу)
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       РаботникиОрганизаций.Сотрудник,
       РаботникиОрганизаций.Регистратор,
       NULL,
       РаботникиОрганизаций.Период
   ИЗ
       РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
   ГДЕ
       РаботникиОрганизаций.Период МЕЖДУ &НачалоПериода И &КонецПериода
       И РаботникиОрганизаций.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)) КАК Подзапрос
ГДЕ
   Подзапрос.Сотрудник = &Сотрудник

СГРУППИРОВАТЬ ПО
   Подзапрос.Сотрудник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   _00_Сотры.Сотрудник КАК Сотрудник,
   _00_Сотры.РаботаетС КАК РаботаетС,
   _00_Сотры.РаботаетПо КАК РаботаетПо,
   ВложенныйЗапрос.Дата КАК Дата,
   ВЫБОР
       КОГДА ВложенныйЗапрос.Дата МЕЖДУ _00_Сотры.РаботаетС И _00_Сотры.РаботаетПо
           ТОГДА 1
       ИНАЧЕ 0
   КОНЕЦ КАК Отработан
ПОМЕСТИТЬ _01_Сотр_Дата
ИЗ
   (ВЫБРАТЬ
       ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК Дата
   ИЗ
       (ВЫБРАТЬ
           0 КАК a
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           1
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           2
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           3
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           4
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           5
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           6
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           7
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           8
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           9) КАК aa
           ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               0 КАК b
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               1
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               2
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               3
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               4
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               5
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               6
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               7
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               8
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               9) КАК bb
           ПО (ИСТИНА)
           ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               0 КАК c
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               1
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               2
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               3
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               4
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               5
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               6
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               7
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               8
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               9) КАК cc
           ПО (ИСТИНА)
           ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               0 КАК d
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               1
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               2
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               3
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               4
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               5
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               6
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               7
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               8
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               9) КАК dd
           ПО (ИСТИНА)
   ГДЕ
       aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)) КАК ВложенныйЗапрос,
   _00_Сотры КАК _00_Сотры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   _01_Сотр_Дата.Сотрудник КАК Сотрудник,
   _01_Сотр_Дата.РаботаетС КАК РаботаетС,
   _01_Сотр_Дата.РаботаетПо КАК РаботаетПо,
   НАЧАЛОПЕРИОДА(_01_Сотр_Дата.Дата, МЕСЯЦ) КАК ПериодРаботы,
   _01_Сотр_Дата.Отработан КАК Отработан
ПОМЕСТИТЬ _002_Сотр_Мес_Отработано
ИЗ
   _01_Сотр_Дата КАК _01_Сотр_Дата
;

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

СГРУППИРОВАТЬ ПО
   _002_Сотр_Мес_Отработано.Сотрудник,
   _002_Сотр_Мес_Отработано.РаботаетС,
   _002_Сотр_Мес_Отработано.РаботаетПо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   _02_Сотр_Мес_Отработано.Сотрудник КАК Сотрудник,
   _02_Сотр_Мес_Отработано.РаботаетС КАК РаботаетС,
   _02_Сотр_Мес_Отработано.РаботаетПо КАК РаботаетПо,
   СУММА(_02_Сотр_Мес_Отработано.Отработан) КАК Отработано,
   ПРЕДСТАВЛЕНИЕССЫЛКИ(_02_Сотр_Мес_Отработано.Сотрудник) КАК СотрудникПредставление
ИЗ
   _02_Сотр_Мес_Отработано КАК _02_Сотр_Мес_Отработано

СГРУППИРОВАТЬ ПО
   _02_Сотр_Мес_Отработано.Сотрудник,
   _02_Сотр_Мес_Отработано.РаботаетС,
   _02_Сотр_Мес_Отработано.РаботаетПо

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

ВЫБРАТЬ
   РаботникиОрганизацийСрезПоследних.Сотрудник,
   &НачалоПериода,
   &КонецПериода,
   РАЗНОСТЬДАТ(&НачалоПериода, ДОБАВИТЬКДАТЕ(&КонецПериода, СЕКУНДА, 1), МЕСЯЦ),
   ПРЕДСТАВЛЕНИЕССЫЛКИ(РаботникиОрганизацийСрезПоследних.Сотрудник)
ИЗ
   РегистрСведений.РаботникиОрганизаций.СрезПоследних(&КонецПериода, ) КАК РаботникиОрганизацийСрезПоследних
ГДЕ
   (НЕ РаботникиОрганизацийСрезПоследних.Сотрудник В
               (ВЫБРАТЬ
                   _02_Сотр_Мес_Отработано.Сотрудник
               ИЗ
                   _02_Сотр_Мес_Отработано КАК _02_Сотр_Мес_Отработано))
   И РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
   И РаботникиОрганизацийСрезПоследних.Сотрудник = &Сотрудник"  
Чтоб не утомлять вас сравнением текстов, почему то СКД в таблице "_02_Сотр_Мес_Отработано" убивает поле "_002_Сотр_Мес_Отработано.ПериодРаботы".
Из-за чего такое может быть и как исправить?
1 Fragster
 
гуру
11.02.13
09:10
потому что ты его не выбираешь. убрать - угазать его на заклаедке "компоновка".
2 al_zzz
 
11.02.13
09:22
(1) Включаю поля на закладке "Компоновка" конструктора запроса для СКД: http://vfl.ru/fotos/9d268c141731888.html,
вот такой текст запроса: "ВЫБРАТЬ
   Подзапрос.Сотрудник КАК Сотрудник,
   ЕСТЬNULL(МАКСИМУМ(Подзапрос.РаботаетС), &НачалоПериода) КАК РаботаетС,
   ЕСТЬNULL(МАКСИМУМ(Подзапрос.РаботаетПо), &КонецПериода) КАК РаботаетПо
ПОМЕСТИТЬ _00_Сотры
{ВЫБРАТЬ
   Сотрудник.*,
   РаботаетС,
   РаботаетПо}
ИЗ
   (ВЫБРАТЬ
       РаботникиОрганизаций.Сотрудник КАК Сотрудник,
       РаботникиОрганизаций.Регистратор КАК Регистратор,
       РаботникиОрганизаций.Период КАК РаботаетС,
       NULL КАК РаботаетПо
   ИЗ
       РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
   ГДЕ
       РаботникиОрганизаций.Период МЕЖДУ &НачалоПериода И &КонецПериода
       И РаботникиОрганизаций.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу)
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       РаботникиОрганизаций.Сотрудник,
       РаботникиОрганизаций.Регистратор,
       NULL,
       РаботникиОрганизаций.Период
   ИЗ
       РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
   ГДЕ
       РаботникиОрганизаций.Период МЕЖДУ &НачалоПериода И &КонецПериода
       И РаботникиОрганизаций.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)) КАК Подзапрос
ГДЕ
   Подзапрос.Сотрудник = &Сотрудник

СГРУППИРОВАТЬ ПО
   Подзапрос.Сотрудник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   _00_Сотры.Сотрудник КАК Сотрудник,
   _00_Сотры.РаботаетС КАК РаботаетС,
   _00_Сотры.РаботаетПо КАК РаботаетПо,
   ВложенныйЗапрос.Дата КАК Дата,
   ВЫБОР
       КОГДА ВложенныйЗапрос.Дата МЕЖДУ _00_Сотры.РаботаетС И _00_Сотры.РаботаетПо
           ТОГДА 1
       ИНАЧЕ 0
   КОНЕЦ КАК Отработан
ПОМЕСТИТЬ _01_Сотр_Дата
{ВЫБРАТЬ
   Сотрудник.*,
   РаботаетПо,
   Дата,
   РаботаетС,
   Отработан}
ИЗ
   (ВЫБРАТЬ
       ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК Дата
   ИЗ
       (ВЫБРАТЬ
           0 КАК a
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           1
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           2
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           3
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           4
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           5
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           6
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           7
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           8
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           9) КАК aa
           ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               0 КАК b
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               1
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               2
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               3
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               4
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               5
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               6
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               7
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               8
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               9) КАК bb
           ПО (ИСТИНА)
           ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               0 КАК c
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               1
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               2
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               3
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               4
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               5
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               6
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               7
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               8
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               9) КАК cc
           ПО (ИСТИНА)
           ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               0 КАК d
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               1
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               2
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               3
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               4
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               5
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               6
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               7
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               8
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               9) КАК dd
           ПО (ИСТИНА)
   ГДЕ
       aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)) КАК ВложенныйЗапрос,
   _00_Сотры КАК _00_Сотры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   _01_Сотр_Дата.Сотрудник КАК Сотрудник,
   _01_Сотр_Дата.РаботаетС КАК РаботаетС,
   _01_Сотр_Дата.РаботаетПо КАК РаботаетПо,
   МЕСЯЦ(_01_Сотр_Дата.Дата) КАК ПериодРаботы,
   _01_Сотр_Дата.Отработан КАК Отработан
ПОМЕСТИТЬ _002_Сотр_Мес_Отработано
{ВЫБРАТЬ
   Сотрудник.*,
   РаботаетС,
   РаботаетПо,
   ПериодРаботы,
   Отработан}
ИЗ
   _01_Сотр_Дата КАК _01_Сотр_Дата
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   _002_Сотр_Мес_Отработано.Сотрудник КАК Сотрудник,
   _002_Сотр_Мес_Отработано.РаботаетС КАК РаботаетС,
   _002_Сотр_Мес_Отработано.РаботаетПо КАК РаботаетПо,
   _002_Сотр_Мес_Отработано.ПериодРаботы КАК ПериодРаботы,
   ВЫБОР
       КОГДА СУММА(_002_Сотр_Мес_Отработано.Отработан) > 15
           ТОГДА 1
       ИНАЧЕ 0
   КОНЕЦ КАК Отработан
ПОМЕСТИТЬ _02_Сотр_Мес_Отработано
{ВЫБРАТЬ
   Сотрудник.*,
   РаботаетС,
   РаботаетПо,
   ПериодРаботы,
   Отработан}
ИЗ
   _002_Сотр_Мес_Отработано КАК _002_Сотр_Мес_Отработано

СГРУППИРОВАТЬ ПО
   _002_Сотр_Мес_Отработано.Сотрудник,
   _002_Сотр_Мес_Отработано.РаботаетС,
   _002_Сотр_Мес_Отработано.РаботаетПо,
   _002_Сотр_Мес_Отработано.ПериодРаботы
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   _02_Сотр_Мес_Отработано.Сотрудник КАК Сотрудник,
   _02_Сотр_Мес_Отработано.РаботаетС КАК РаботаетС,
   _02_Сотр_Мес_Отработано.РаботаетПо КАК РаботаетПо,
   СУММА(_02_Сотр_Мес_Отработано.Отработан) КАК Отработано
{ВЫБРАТЬ
   Сотрудник.*,
   РаботаетС,
   РаботаетПо,
   Отработано}
ИЗ
   _02_Сотр_Мес_Отработано КАК _02_Сотр_Мес_Отработано

СГРУППИРОВАТЬ ПО
   _02_Сотр_Мес_Отработано.Сотрудник,
   _02_Сотр_Мес_Отработано.РаботаетС,
   _02_Сотр_Мес_Отработано.РаботаетПо

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

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

СГРУППИРОВАТЬ ПО
   Подзапрос.Сотрудник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   _00_Сотры.Сотрудник КАК Сотрудник,
   _00_Сотры.РаботаетС КАК РаботаетС,
   _00_Сотры.РаботаетПо КАК РаботаетПо
ПОМЕСТИТЬ _01_Сотр_Дата
ИЗ
   (ВЫБРАТЬ
       ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК Дата
   ИЗ
       (ВЫБРАТЬ
           0 КАК a
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           1
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           2
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           3
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           4
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           5
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           6
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           7
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           8
       
       ОБЪЕДИНИТЬ
       
       ВЫБРАТЬ
           9) КАК aa
           ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               0 КАК b
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               1
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               2
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               3
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               4
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               5
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               6
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               7
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               8
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               9) КАК bb
           ПО (ИСТИНА)
           ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               0 КАК c
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               1
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               2
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               3
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               4
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               5
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               6
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               7
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               8
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               9) КАК cc
           ПО (ИСТИНА)
           ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               0 КАК d
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               1
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               2
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               3
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               4
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               5
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               6
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               7
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               8
           
           ОБЪЕДИНИТЬ
           
           ВЫБРАТЬ
               9) КАК dd
           ПО (ИСТИНА)
   ГДЕ
       aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)) КАК ВложенныйЗапрос,
   _00_Сотры КАК _00_Сотры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   _01_Сотр_Дата.Сотрудник КАК Сотрудник,
   _01_Сотр_Дата.РаботаетС КАК РаботаетС,
   _01_Сотр_Дата.РаботаетПо КАК РаботаетПо
ПОМЕСТИТЬ _002_Сотр_Мес_Отработано
ИЗ
   _01_Сотр_Дата КАК _01_Сотр_Дата
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   _002_Сотр_Мес_Отработано.Сотрудник КАК Сотрудник,
   _002_Сотр_Мес_Отработано.РаботаетС КАК РаботаетС,
   _002_Сотр_Мес_Отработано.РаботаетПо КАК РаботаетПо
ПОМЕСТИТЬ _02_Сотр_Мес_Отработано
ИЗ
   _002_Сотр_Мес_Отработано КАК _002_Сотр_Мес_Отработано

СГРУППИРОВАТЬ ПО
   _002_Сотр_Мес_Отработано.Сотрудник,
   _002_Сотр_Мес_Отработано.РаботаетС,
   _002_Сотр_Мес_Отработано.РаботаетПо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   _02_Сотр_Мес_Отработано.Сотрудник КАК Сотрудник,
   _02_Сотр_Мес_Отработано.РаботаетС КАК РаботаетС,
   _02_Сотр_Мес_Отработано.РаботаетПо КАК РаботаетПо,
   NULL КАК Отработано,
   ПРЕДСТАВЛЕНИЕССЫЛКИ(_02_Сотр_Мес_Отработано.Сотрудник) КАК СотрудникПредставление
ИЗ
   _02_Сотр_Мес_Отработано КАК _02_Сотр_Мес_Отработано

СГРУППИРОВАТЬ ПО
   _02_Сотр_Мес_Отработано.Сотрудник,
   _02_Сотр_Мес_Отработано.РаботаетС,
   _02_Сотр_Мес_Отработано.РаботаетПо

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

ВЫБРАТЬ
   РаботникиОрганизацийСрезПоследних.Сотрудник,
   &НачалоПериода,
   &КонецПериода,
   РАЗНОСТЬДАТ(&НачалоПериода, ДОБАВИТЬКДАТЕ(&КонецПериода, СЕКУНДА, 1), МЕСЯЦ),
   ПРЕДСТАВЛЕНИЕССЫЛКИ(РаботникиОрганизацийСрезПоследних.Сотрудник)
ИЗ
   РегистрСведений.РаботникиОрганизаций.СрезПоследних(&КонецПериода, ) КАК РаботникиОрганизацийСрезПоследних
ГДЕ
   (НЕ РаботникиОрганизацийСрезПоследних.Сотрудник В
               (ВЫБРАТЬ
                   _02_Сотр_Мес_Отработано.Сотрудник
               ИЗ
                   _02_Сотр_Мес_Отработано КАК _02_Сотр_Мес_Отработано))
   И РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
   И РаботникиОрганизацийСрезПоследних.Сотрудник = &Сотрудник".
3 al_zzz
 
11.02.13
09:35
Ну ап!
4 kosts
 
11.02.13
09:37
помещай свои запросы в обрамление сверху снизу ...
5 kosts
 
11.02.13
09:38
""

"
"

без кавычек
6 kosts
 
11.02.13
09:38
тху
7 Defender aka LINN
 
11.02.13
09:39
(0) ЭТО исковеркать сложно, оно с рождения травмировано.
А если серьезно - записывай, ты 156-я жертва автозаполнения.
8 kosts
 
11.02.13
09:40
(5)

{1c}
текст 1с
{/1c}
(только с квадратными скобками)
9 kosts
 
11.02.13
09:42
У меня конструктор выкидывал из запроса поле2


выбрать
1 как Поле1,
&Значение2 как Поле2
10 al_zzz
 
11.02.13
09:48
Уже отключил автозаполнение, указал все поля на закладке "компоновка" для всех вт. Один фиг - выкидывает это поле.
11 al_zzz
 
11.02.13
09:57
Ап!
12 Defender aka LINN
 
11.02.13
10:02
(10) "указал все поля на закладке "компоновка" для всех вт" - молодец. Ты только что повторил алгоритм работы этой галки.
13 al_zzz
 
11.02.13
10:06
(12) Да я как только уже не делал! Только результат один и тот же - поле не включается в вт запроса. Как правильно указать?
14 Defender aka LINN
 
11.02.13
10:14
(13) НЕ УКАЗЫВАЙ поля на вкладке "Компоновка"
15 al_zzz
 
11.02.13
10:20
(13) А как тогда выбрать поля в Доступные поля? Там только группы доступны для создания.
16 al_zzz
 
11.02.13
10:22
(15) к (14).
Там можно только папки создавать.
17 al_zzz
 
11.02.13
10:31
Апну!
18 Defender aka LINN
 
11.02.13
10:37
(15) Блин, ты вообще представляешь, как СКД работает? Если поле не указано в {}, то оно выбирается ВСЕГДА. Дальше сам думай