Запрос…

Форум 1С: Одинэс.Ру

Найти!

Запрос…

VadimB
12.05.2009 - 15:04
[ЗиК  7.70.281]
 
  Запрос = СоздатьОбъект("Запрос");
  
  ТекстЗапроса =
"//{{ЗАПРОС()
|Период с xData1 по xData2;
|Сотрудник = ЖурналРасчетов.Зарплата.Объект;
 
|ФизЛицо = ЖурналРасчетов.Зарплата.Объект.ОсновнойЭлемент;
    
|Расчет = ЖурналРасчетов.Зарплата.ВидРасч;
 
|Результат = ЖурналРасчетов.Зарплата.Результат;
 
|ДниВЖурнале = ЖурналРасчетов.Зарплата.Дни;
|ЧасыВЖурнале = ЖурналРасчетов.Зарплата.Часы;
 
|Функция СальдоНач = Сумма(Результат) когда (Расчет.ВходитВГруппу(ГруппаРасчетов.НачальноеСальдо)=1);
|Функция СуммаНачисления = Сумма(Результат) когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1);
|Функция СуммаУдержания = Сумма(Результат) когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ВсеУдержания)=1);
|Функция МатериальныеБлага = Сумма(Результат) когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ДоходыВНатуральнойФорме)=1);
 
|Функция ВозвратыНДФЛ = Сумма(Результат) когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ВозвратыНДФЛ)=1);
|Функция Выплачено = Сумма(Результат) когда (Расчет=ВидРасчета.ВыплатаЗарплаты);
 
|Функция ВозвратВКассу = Сумма(Результат) когда (Расчет = ВидРасчета.Возврат);
|Функция Долг = Сумма(Результат) когда ((Расчет=ВидРасчета.НачальноеСальдоЗадолженность)или(Расчет=ВидРасчета.НачальноеСальдоОкругления) или(Расчет=ВидРасчета.НачальноеСальдоПереплатаНДФЛ));
 
|Функция Дни = Сумма(ДниВЖурнале) когда ((Расчет.ВходитВГруппу(ГруппаРасчетов.ОсновныеНачисления)=1) и (ФизЛицо = Сотрудник));
|Функция Часы = Сумма(ЧасыВЖурнале) когда ((Расчет.ВходитВГруппу(ГруппаРасчетов.ОсновныеНачисления)=1) и (ФизЛицо = Сотрудник));
 
|Группировка Сотрудник Без Групп;
|Группировка Расчет Упорядочить по Расчет.Очередность;
 
|Условие(Результат<>0);
   |"//}}ЗАПРОС
;
  
  if ВыбСотр.Выбран()=1 then
ТекстЗапроса = ТекстЗапроса+"Условие(Сотрудник=ВыбСотр);";
  endif;
 
  if Запрос.Выполнить(ТекстЗапроса)=0 then
глСтатусСтрока(Контекст,"");
Возврат;
  endif;
 
  //Запрос.ВНачалоВыборки();
  While Запрос.Группировка(1)=1 Do
xMan=Запрос.Сотрудник; nSaldo1=Запрос.СальдоНач;
nSummaN=Запрос.СуммаНачисления; nSummaU=Запрос.СуммаУдержания; nSummaD=Запрос.МатериальныеБлага;
nDays=Запрос.Дни; nClocks=Запрос.Часы; xDayClock=TrimAll(nDays)+?(nClocks>0," ("+TrimAll(nClocks)+")","");
nKassaBank=Запрос.Выплачено; nSaldo2=nSaldo1+nSummaN-nSummaU-nKassaBank;
 
xTabel=xMan.Код; xFio=TrimAll(глФамилияИмяОтчество(xMan)); xProf=xMan.Должность.Получить(Дата2);
sVar=""+xMan+": "+Формат(nSaldo1,"Ч012.2.'")+"..."+Формат(nSummaN,"Ч012.2.'")+" / "+Формат(nSummaU,"Ч012.2.'")+"..."+Формат(nSaldo2,"Ч012.2.'");
Сообщить(sVar,"i");
         
While Запрос.Группировка(2)=1 Do
xNU=Запрос.Расчет; nSumma=Запрос.Результат;
Сообщить(глПредставлениеВидаРасчета(xNU)+": "+nSumma);
EndDo;
  EndDo;
 
  R=СоздатьОбъект("ТаблицаЗначений"); Запрос.Выгрузить(R, 3, 0); R.ВыбратьСтроку();
 

Проблема…
Есть некий “гаврик”, у которого на анализируемый месяц приходится несколько договоров подряда (12’000=). Из запроса выбирается лишь сумма последнего договора (4’600=).
Ладно, выгружаю запрос в таблицу значений. Действительно, для данного ВР значение колонок “СуммаНачисления” 12’000, “Результат” 4’600=.
 
Что я делаю не так?
К списку тем К списку форумов

Интересные темы

odines.ru
23.11.2024 - 09:55
Смотри также:
Должна ли входить в расчет среднего произв. доплата ?
Хочу создать ежеквартальную компенсацию расходов на жилье
Удержание за неотработанные дни отпуска

Re: Запрос…

VadimB
1 - 12.05.2009 - 15:07
(1+) Да, диковато как-то смотрится... :-((

Re: Запрос…

Пудель
2 - 12.05.2009 - 15:20
Наивный вопрос.
Если речь идёт о группировках, то на значения простых реквизитов смотреть и нельзя, разумеется! есть у Вас нормальная функция СуммаНачислений - её и курите.

Re: Запрос…

VadimB
3 - 12.05.2009 - 16:06
(2) Так мне и непонятно, почему для данного ВР попадает только 4’600=. Если бы попадали и другие суммы - то вопросов нет. Конечно, можно сделать внутри 2-го цикла проверку вхождения в ту или иную группу и брать соотвествующее значение...

Re: Запрос…

Пудель
4 - 12.05.2009 - 16:58
Чего непонятно-то? При подсчёте функции СуммаНачисления запрос проходит по всем записям нужного вида расчета. В Результат попадает последняя из пройденных - ибо результат это не итоговое значение, а значение, соответствующее последнему из объектов, по которым пробегал запрос. В данном случае это записи ЖР.
К списку тем К списку форумов

Добавить новое сообщение

Ваше имя:
Тема сообщения:
Сообщение:
« Удержание за неотработанные дни отпуска Перевод периода »
© 2009 Форум 1С: Одинэс.Ру