Имя: Пароль:
1C
1С v8
Ошибка в запросе.
,
0 selvador
 
19.02.13
14:27
Функция СправкаОНачислениях(ВыборкаСотрудник)
       
       запрос = Новый Запрос;
       запрос.Текст = "ВЫБРАТЬ
                      |    ЕСТЬNULL(НачисленияНаНачало.Сотрудник, &Сотрудник) КАК Сотрудник,
                      |    ЕСТЬNULL(НачисленияНаНачало.СуммаОборот - НачисленияНаНачало.СуммаУдержаноОборот - НачисленияНаНачало.СуммаВыплаченоОборот, 0) КАК ДолгНаНачало
                      |ПОМЕСТИТЬ ВТ_Начало
                      |ИЗ
                      |    РегистрНакопления.лирсиНачисления.Обороты(&Начало2012, &НачалоПериода, , Сотрудник = &Сотрудник) КАК НачисленияНаНачало
                      |;
                      |
                      |////////////////////////////////////////////////////////////////////////////////
                      |ВЫБРАТЬ
                      |    НДФЛкВычету.ФизЛицо,
                      |    НДФЛкВычету.КодВычета,
                      |    НДФЛкВычету.ПримененныйВычетОборот КАК СуммаВычета
                      |ПОМЕСТИТЬ ВТ_ВычетыНДФЛ
                      |ИЗ
                      |    РегистрНакопления.НДФЛПредоставленныеСтандартныеВычетыФизЛиц.Обороты КАК НДФЛкВычету
                      |ГДЕ
                      |    НДФЛкВычету.МесяцНалоговогоПериода МЕЖДУ &НачалоПериода И &КонецПериода
                      |;
                      |
                      |////////////////////////////////////////////////////////////////////////////////
                      |ВЫБРАТЬ
                      |    ВыплатаТоваром.Сотрудник,
                      |    ВыплатаТоваром.Сумма КАК СуммаНФ,
                      |    ВыплатаТоваром.Ссылка
                      |ПОМЕСТИТЬ ВТ_ВыплатНФ
                      |ИЗ
                      |    Документ.схРеализацияТоваровСпискуФЛ.Контрагенты КАК ВыплатаТоваром
                      |ГДЕ
                      |    ВыплатаТоваром.Ссылка.Проведен
                      |    И ВыплатаТоваром.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
                      |;
                      |
                      |////////////////////////////////////////////////////////////////////////////////
                      |ВЫБРАТЬ
                      |    лирсиНачисления.Организация.Наименование КАК Организация,
                      |    лирсиНачисления.Сотрудник,
                      |    СУММА(Начисления.СуммаОборот) КАК Начисленно,
                      |    СУММА(Начисления.СуммаУдержаноОборот) КАК Удержанно,
                      |    СУММА(Начисления.СуммаВыплаченоОборот) КАК Выплаченно1,
                      |    лирсиНачисления.СуммаВыплачено КАК Выплаченно,
                      |    Начисления.МесяцНачисления,
                      |    лирсиНачисления.Период,
                      |    Начисления.Начисление КАК ВидРасчета,
                      |    СУММА(ЕСТЬNULL(ВТ_Начало.ДолгНаНачало, 0)) КАК ДолгНаНачало,
                      |    ВТ_ВычетыНДФЛ.КодВычета,
                      |    СУММА(ВТ_ВычетыНДФЛ.СуммаВычета) КАК СуммаВычета,
                      |    СУММА(ВТ_ВыплатНФ.СуммаНФ) КАК СуммаНФ,
                      |    лирсиНачисления.Регистратор,
                      |    ВТ_ВыплатНФ.Ссылка КАК ВидВыплатыНФ,
                      |    лирсиНачисления.Сотрудник.Код КАК ТабНомер,
                      |    лирсиНачисления.Сотрудник.ТекущееПодразделениеОрганизации КАК Подразделение,
                      |    лирсиНачисления.Сотрудник.ТекущаяДолжностьОрганизации КАК Должность
                      |ИЗ
                      |    РегистрНакопления.лирсиНачисления.Обороты(&НачалоПериода, &КонецПериода, , Сотрудник = &Сотрудник) КАК Начисления
                      |        ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Начало КАК ВТ_Начало
                      |        ПО Начисления.Сотрудник = ВТ_Начало.Сотрудник
                      |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ВычетыНДФЛ КАК ВТ_ВычетыНДФЛ
                      |        ПО Начисления.Сотрудник.Физлицо = ВТ_ВычетыНДФЛ.ФизЛицо
                      |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ВыплатНФ КАК ВТ_ВыплатНФ
                      |        ПО Начисления.Сотрудник = ВТ_ВыплатНФ.Сотрудник
                      |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.лирсиНачисления КАК лирсиНачисления
                      |        ПО Начисления.МесяцНачисления = лирсиНачисления.МесяцНачисления
                      |            И Начисления.Сотрудник = лирсиНачисления.Сотрудник
                      |            И Начисления.Начисление = лирсиНачисления.Начисление
                      |
                      |СГРУППИРОВАТЬ ПО
                      |    лирсиНачисления.Организация.Наименование,
                      |    лирсиНачисления.Сотрудник,
                      |    Начисления.МесяцНачисления,
                      |    лирсиНачисления.Период,
                      |    Начисления.Начисление,
                      |    ВТ_ВычетыНДФЛ.КодВычета,
                      |    лирсиНачисления.Регистратор,
                      |    лирсиНачисления.СуммаВыплачено,
                      |    ВТ_ВыплатНФ.Ссылка,
                      |    лирсиНачисления.Сотрудник.Код,
                      |    лирсиНачисления.Сотрудник.ТекущееПодразделениеОрганизации,
                      |    лирсиНачисления.Сотрудник.ТекущаяДолжностьОрганизации";
       
       //Устанавливаем параметры запроса
       Запрос.УстановитьПараметр("Начало2012", Дата("20111231235959"));
       Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
       Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода ));
       Запрос.УстановитьПараметр("Сотрудник", ВыборкаСотрудник );
       //Получаем выборку
       выборка = запрос.Выполнить().Выбрать();    
       Возврат Выборка;    
       
КонецФункции

Это что - то типа расчетного листка, вообщем есть отдельная процедура, где я выбираю сотрудника и по этой функции составляю отчет, проблема в том , что для всех сотрудников отрабатывается.Отчет выводится не по всем.


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

конецпроцедуры;
1 SAMURO
 
19.02.13
14:37
чет я не понял, что ты хочешь, чувак)
2 1Сергей
 
19.02.13
14:38
на группу проверяй
3 rs_trade
 
19.02.13
14:38
(1) У него кто то походу в отбор не попадает. Автор, про отладчик слышал?
4 selvador
 
19.02.13
14:40
Отладкой проходил, в функции в запросе просто на некоторых сотрудников выходит пустая ТЗ
5 selvador
 
19.02.13
14:41
почему вот она пустая я незнаю
6 SAMURO
 
19.02.13
14:45
чаю попей))отдохни))глядишь мысль в голову и придет)
7 selvador
 
19.02.13
14:47
Вариант конечно, но блин уже "запарился" чай пить.
8 SAMURO
 
19.02.13
15:27
там кольцо есть)иди поешь)
9 Тролль главный
 
19.02.13
15:31
запрос в цЫкле
10 hhhh
 
19.02.13
15:43
(7) вот эту строчку выбрось

ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)