|
Ошибка в тексте запроса... | ☑ | ||
---|---|---|---|---|
0
warkan
13.08.14
✎
16:03
|
Люди добрыя!
Поди уж стопиццот раз это было, но всё же... Слепил тут запрос - нать объединить выборки данных по двум регистрам расчета. Есть у них общие поля и есть различные. Количество не совпадает. (стандартный ЗУП). Вроде бы "на глаз" (анек про это, Волка и Зайца знаю...) всё правильно, а конструктор запроса выдает ошибку :((( И не первый раз такая беда у меня получается, а вот сейчас не придумаю, как обойти. Подскажите, в чём проблема? Процедура КнопкаВыполнитьНажатие(Кнопка) Запрос = Новый Запрос; //* группа 1 - Тариф Тариф = Новый Массив; Тариф.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00003")); Тариф.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00033")); Тариф.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00031")); Тариф.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00002")); Тариф.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00008")); Тариф.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00001")); Тариф.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00004")); Запрос.УстановитьПараметр("спТариф", Тариф); //* группа 2 - Сдельно Сдельно = Новый Массив; Сдельно.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00005")); Сдельно.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00006")); Сдельно.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00007")); Сдельно.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00155")); Запрос.УстановитьПараметр("спСдельно", Сдельно); //* группа 3 - Доплаты Доплаты = Новый Массив; //Доплаты.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00001")); Доплаты.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00035")); Запрос.УстановитьПараметр("спДоплаты", Доплаты); //* группа 4 - Ночные Ночные = Новый Массив; Ночные.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00014")); Ночные.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00015")); Ночные.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00039")); Запрос.УстановитьПараметр("спНочные", Ночные); //* группа 5 - Больничные Больничные = Новый Массив; Больничные.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00021")); Больничные.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00025")); Больничные.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00026")); Больничные.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00048")); Запрос.УстановитьПараметр("спБольничные", Больничные); //* группа 6 - Отпуск Отпуск = Новый Массив; Отпуск.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00023")); Отпуск.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00037")); Отпуск.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00041")); Отпуск.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00042")); Отпуск.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00052")); Отпуск.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00053")); Отпуск.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00054")); Запрос.УстановитьПараметр("спОтпуск", Отпуск); //* группа 7 - МатПомощь МатПомощь = Новый Массив; МатПомощь.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00071")); Запрос.УстановитьПараметр("спМатПомощь", МатПомощь); //* группа 8 - ПремияМес ПремияМес = Новый Массив; ПремияМес.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00100")); ПремияМес.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00101")); ПремияМес.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00102")); Запрос.УстановитьПараметр("спПремияМес", ПремияМес); //* группа 9 - ПремияГод ПремияГод = Новый Массив; ПремияГод.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00044")); Запрос.УстановитьПараметр("спПремияГод", ПремияГод); //* группа 10 - Праздник Праздник = Новый Массив; Праздник.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00011")); Праздник.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00012")); Праздник.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00013")); Праздник.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00034")); Запрос.УстановитьПараметр("спПраздник", Праздник); //* группа 11 - Вредность Вредность = Новый Массив; Вредность.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00038")); Вредность.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00103")); Вредность.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00104")); Вредность.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00105")); Вредность.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00107")); Вредность.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00110")); Запрос.УстановитьПараметр("спВредность", Вредность); //* группа 12 - Прочее Прочее = Новый Массив; Прочее.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00090")); Прочее.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00091")); Прочее.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00106")); Прочее.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00108")); Прочее.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00200")); Прочее.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00201")); Прочее.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00016")); Запрос.УстановитьПараметр("спПрочее", Прочее); НачалоПериода = ТекущаяДата(); КонецПериода = ТекущаяДата(); Запрос.УстановитьПараметр("ДатаНач", НачалоМесяца(НачалоПериода)); Запрос.УстановитьПараметр("ДатаКон", КонецМесяца(КонецПериода)); Запрос.УстановитьПараметр("выбОрг", Организация); Запрос.УстановитьПараметр("Банк", Перечисления.СпособыПеречисленийПоИсполнительномуЛисту.ЧерезКассуПлатежнымПоручением); Запрос.УстановитьПараметр("Почта", Перечисления.СпособыПеречисленийПоИсполнительномуЛисту.ПочтовыйПеревод); Запрос.Текст = "ВЫБРАТЬ | ОснНачРабОрг.ПериодРегистрации КАК ПериодРегистрации, | ОснНачРабОрг.Организация КАК Организация, | ОснНачРабОрг.ПодразделениеОрганизации КАК Подразделение, | ОснНачРабОрг.Сотрудник КАК Сотрудник, | ОснНачРабОрг.ВидРасчета КАК ВидРасчета, | СУММА(ОснНачРабОрг.ОтработаноДней) КАК Дней, | СУММА(ОснНачРабОрг.ОтработаноЧасов) КАК Часов, | СУММА(ОснНачРабОрг.Результат) КАК сумИтого, | СУММА(ВЫБОР | КОГДА ОснНачРабОрг.ВидРасчета В (&спТариф) | ТОГДА ОснНачРабОрг.Результат | ИНАЧЕ 0 | КОНЕЦ) КАК сумТариф, | СУММА(ВЫБОР | КОГДА ОснНачРабОрг.ВидРасчета В (&спСдельно) | ТОГДА ОснНачРабОрг.Результат | ИНАЧЕ 0 | КОНЕЦ) КАК сумСдельно, | СУММА(ВЫБОР | КОГДА ОснНачРабОрг.ВидРасчета В (&спДоплаты) | ТОГДА ОснНачРабОрг.Результат | ИНАЧЕ 0 | КОНЕЦ) КАК сумДоплаты, | СУММА(ВЫБОР | КОГДА ОснНачРабОрг.ВидРасчета В (&спНочные) | ТОГДА ОснНачРабОрг.Результат | ИНАЧЕ 0 | КОНЕЦ) КАК сумНочные, | СУММА(ВЫБОР | КОГДА ОснНачРабОрг.ВидРасчета В (&спБольничные) | ТОГДА ОснНачРабОрг.Результат | ИНАЧЕ 0 | КОНЕЦ) КАК сумБольничные, | СУММА(ВЫБОР | КОГДА ОснНачРабОрг.ВидРасчета В (&спОтпуск) | ТОГДА ОснНачРабОрг.Результат | ИНАЧЕ 0 | КОНЕЦ) КАК сумОтпуск, | СУММА(ВЫБОР | КОГДА ОснНачРабОрг.ВидРасчета В (&спМатПомощь) | ТОГДА ОснНачРабОрг.Результат | ИНАЧЕ 0 | КОНЕЦ) КАК сумМатПомощь, | СУММА(ВЫБОР | КОГДА ОснНачРабОрг.ВидРасчета В (&спПремияМес) | ТОГДА ОснНачРабОрг.Результат | ИНАЧЕ 0 | КОНЕЦ) КАК сумПремияМес, | СУММА(ВЫБОР | КОГДА ОснНачРабОрг.ВидРасчета В (&спПремияГод) | ТОГДА ОснНачРабОрг.Результат | ИНАЧЕ 0 | КОНЕЦ) КАК сумПремияГод, | СУММА(ВЫБОР | КОГДА ОснНачРабОрг.ВидРасчета В (&спПраздник) | ТОГДА ОснНачРабОрг.Результат | ИНАЧЕ 0 | КОНЕЦ) КАК сумПраздник, | СУММА(ВЫБОР | КОГДА ОснНачРабОрг.ВидРасчета В (&спВредность) | ТОГДА ОснНачРабОрг.Результат | ИНАЧЕ 0 | КОНЕЦ) КАК сумВредность, | СУММА(ВЫБОР | КОГДА ОснНачРабОрг.ВидРасчета В (&спПрочее) | ТОГДА ОснНачРабОрг.Результат | ИНАЧЕ 0 | КОНЕЦ) КАК сумПрочее, | 0 КАК сумДопНач | |ИЗ | РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОснНачРабОрг |ГДЕ | ОснНачРабОрг.ПериодРегистрации МЕЖДУ &ДатаНач И &ДатаКон | |СГРУППИРОВАТЬ ПО | ОснНачРабОрг.ПериодРегистрации, | ОснНачРабОрг.Организация, | ОснНачРабОрг.ПодразделениеОрганизации, | ОснНачРабОрг.Сотрудник, | ОснНачРабОрг.ВидРасчета //| ПериодРегистрации, //| Организация, //| ПодразделениеОрганизации, //| Сотрудник, //| ВидРасчета |ОБЪЕДИНИТЬ // |ОБЪЕДИНИТЬ ВСЕ |ВЫБРАТЬ | ДопНачРабОрг.ПериодРегистрации, | ДопНачРабОрг.Организация, | ДопНачРабОрг.ПодразделениеОрганизации, | ДопНачРабОрг.Сотрудник, | ДопНачРабОрг.ВидРасчета, | 0, | 0, | 0, | 0, | 0, | 0, | 0, | 0, | 0, | 0, | 0, | 0, | 0, | 0, | СУММА(ДопНачРабОрг.Результат) |ИЗ | РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДопНачРабОрг |ГДЕ | ДопНачРабОрг.ПериодРегистрации МЕЖДУ &ДатаНач И &ДатаКон | //|СГРУППИРОВАТЬ ПО //| ПериодРегистрации, //| Организация, //| ПодразделениеОрганизации, //| Сотрудник, //| ВидРасчета | | |УПОРЯДОЧИТЬ ПО | ПериодРегистрации, | Организация, | Подразделение, | Сотрудник, | ВидРасчета | |ИТОГИ | СУММА(сумТариф), | СУММА(сумСдельно), | СУММА(сумДоплаты), | СУММА(сумНочные), | СУММА(сумБольничные), | СУММА(сумОтпуск), | СУММА(сумМатПомощь), | СУММА(сумПремияМес), | СУММА(сумПремияГод), | СУММА(сумПраздник), | СУММА(сумВредность), | СУММА(сумПрочее), | СУММА(сумДопНач) |ПО | ОБЩИЕ"; Результат = Запрос.Выполнить(); ТабРез = Результат.Выгрузить(); //Адрес = ТабРез.ВыбратьСтроку("Контроль"); //Возврат; //* свернуть ТабРез.Свернуть("ПериодРегистрации,Организация,Подразделение,Сотрудник", "Дней,Часов,сумТариф,сумИтого,сумСдельно,сумДоплаты,сумНочные,сумБольничные,сумОтпуск,сумМатПомощь,сумПремияМес,сумПремияГод,сумПраздник,сумВредность,сумПрочее"); ТабРез.Сортировать("ПериодРегистрации Возр,Организация Возр,Подразделение Возр,Сотрудник Возр"); Адрес = ТабРез.ВыбратьСтроку("Контроль"); КонецПроцедуры Спасибо! |
|||
1
Wobland
13.08.14
✎
16:04
|
рассказывай анекдот, а то некоторые не в курсе
|
|||
2
Maxus43
13.08.14
✎
16:04
|
дак в конструкторе закладка Объеденения/псевдонимы только у особо одарённых работает? там и надо было изначально, а не руками запросы склеивать...
|
|||
3
Wobland
13.08.14
✎
16:05
|
а сколько было попыток посчитать поля?
|
|||
4
Господин ПЖ
13.08.14
✎
16:05
|
(2) можно и руками... тут вопрос куда они пришиты
|
|||
5
Maxus43
13.08.14
✎
16:06
|
копируешь текст запроса 2.
заходишь конструктором в запрос 1. Добавляешь там запрос, копируешь туда запрос 2. На закладке объединения/псевдонимы - будет видно как сопоставил и каких не хватает, а так он сам null воткнёт недостающие |
|||
6
warkan
13.08.14
✎
16:06
|
(4) знаний маловато :(
(2) делал-то не в конструкторе. Взял пример текста и мануала и подогнал (ка мне кажется) под свою задачу. А вот не работает... |
|||
7
salvator
13.08.14
✎
16:07
|
(0) Ну так сделай, чтобы количество полей в запросах было одинаковым. В чем проблема?
|
|||
8
Maxus43
13.08.14
✎
16:08
|
(6) я и намекаю - делай в конструкторе. Не вручную, а копированием
|
|||
12
Шапокляк
13.08.14
✎
16:15
|
Две попытки посчитать поля привели вот к чему: в 1 запросе 21 поле, а во 2 -м 20. Вы тоже к волку в лабаз за солью ходили?
|
|||
13
warkan
13.08.14
✎
16:20
|
(12) может. :)
Такой вариант (ошибка та же "Поле не входит в группу "ДопНачРабОрг.ПериодРегистрации"" и в том же месте): Запрос.Текст = "ВЫБРАТЬ | ОснНачРабОрг.ПериодРегистрации КАК ПериодРегистрации, | ОснНачРабОрг.Организация КАК Организация, | ОснНачРабОрг.ПодразделениеОрганизации КАК Подразделение, | ОснНачРабОрг.Сотрудник КАК Сотрудник, | ОснНачРабОрг.ВидРасчета КАК ВидРасчета, | СУММА(ОснНачРабОрг.Результат) КАК сумИтого, | 0 КАК сумДопНач | |ИЗ | РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОснНачРабОрг |ГДЕ | ОснНачРабОрг.ПериодРегистрации МЕЖДУ &ДатаНач И &ДатаКон | |СГРУППИРОВАТЬ ПО | ПериодРегистрации, | Организация, | ПодразделениеОрганизации, | Сотрудник, | ВидРасчета |ОБЪЕДИНИТЬ |ВЫБРАТЬ | ДопНачРабОрг.ПериодРегистрации, | ДопНачРабОрг.Организация, | ДопНачРабОрг.ПодразделениеОрганизации, | ДопНачРабОрг.Сотрудник, | ДопНачРабОрг.ВидРасчета, | 0, | СУММА(ДопНачРабОрг.Результат) |ИЗ | РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДопНачРабОрг |ГДЕ | ДопНачРабОрг.ПериодРегистрации МЕЖДУ &ДатаНач И &ДатаКон | | |УПОРЯДОЧИТЬ ПО | ПериодРегистрации, | Организация, | Подразделение, | Сотрудник, | ВидРасчета | |ИТОГИ | СУММА(сумИтого), | СУММА(сумДопНач) |ПО | ОБЩИЕ"; |
|||
14
warkan
13.08.14
✎
16:20
|
Ошибка указывает на первое поле второго запроса.
|
|||
15
hhhh
13.08.14
✎
16:23
|
(14) вместо
| СУММА(ДопНачРабОрг.Результат) пишите | ДопНачРабОрг.Результат |
|||
16
Ёпрст
13.08.14
✎
16:25
|
и упорядочивание выкиньте..оно там не используется.. вообще
|
|||
17
warkan
13.08.14
✎
16:27
|
(14) !!!!!! Спасибо за науку.
А не затруднит ли Вас объяснить, почему так? Почему в первом запросе конструкция "СУММА(ОснНачРабОрг.Результат) КАК сумИтого," допустима, а во втором использовать "Сумма" нельзя. В данном конкретном случае для меся это, конечно же, не принципиально. Однако хотелось бы понять механизм - с целью повышения грамотности. |
|||
18
hhhh
13.08.14
✎
16:30
|
(17) ну в первом запросе есть у вас СГРУППИРОВАТЬ ПО . Разве не заметили? Вот к нему и относится волшебное слово СУММА.
|
|||
19
warkan
13.08.14
✎
16:32
|
(18) спасибо. Ещё почитаю.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |