|
Почему СКД коверкает мой запрос? | ☑ | ||
---|---|---|---|---|
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
|
|||
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) Блин, ты вообще представляешь, как СКД работает? Если поле не указано в {}, то оно выбирается ВСЕГДА. Дальше сам думай
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |