|   |   | 
| 
 | Ошибка в тексте запроса... | ☑ | ||
|---|---|---|---|---|
| 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) спасибо. Ещё почитаю.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |