ЗиК Подскажите

Новая тема
"Составил отчет, чтобы по одному коду ИМНС сосчитался НДФЛ по всем сотрудникам. Сотрудников перебирает, а вот НДФЛ не суммируется. Выводит только по первому сотруднику НДФЛ. Что здесь нетак?





Процедура Сформировать()

//Перем НДФЛ;

//НДФЛ=0;

Т=СоздатьОбъект("Таблица");

Т.ИсходнаяТаблица("Таблица");

ЖЗ=СоздатьОбъект("ЖурналРасчетов.Зарплата");

ЖЗ.ВыбратьЗаписи(ДатаНач, ДатаКон);

Спр=СоздатьОбъект("Справочник.Сотрудники");

Спр.ВыбратьЭлементы();

Пока Спр.ПолучитьЭлемент()=1 Цикл

КодИМН=Спр.КодИМНС;

Если КодИМН="1001" Тогда

ВыборСотрудника=Спр.ТекущийЭлемент();

Сообщить (КодИМН);

Сообщить (ВыборСотрудника);



Пока ЖЗ.ПолучитьЗапись()=1 Цикл

Если ЖЗ.Объект=ВыборСотрудника Тогда



Если ЖЗ.ВидРасч=ВидРасчета.НДФЛ Тогда

НДФЛ=НДФЛ+ЖЗ.Результат;

Сообщить (НДФЛ);



КонецЕсли;

КонецЕсли;



КонецЦикла;



КонецЕсли;

 

КонецЦикла;

Т.ВывестиСекцию("Секция_1");

Т.ТолькоПросмотр(1);

Т.Показать();



КонецПроцедуры"
"Нарушен порядок вложенности операций цикла, я бы сделал так:



НДФЛ = 0;

ЖЗ=СоздатьОбъект("ЖурналРасчетов.Зарплата");

Спр=СоздатьОбъект("Справочник.Сотрудники");

Спр.ВыбратьЭлементы();

Пока Спр.ПолучитьЭлемент()=1 Цикл

  КодИМН=Спр.КодИМНС;

  Если КодИМН="1001" Тогда

    ВыборСотрудника=Спр.ТекущийЭлемент();

    Сообщить (КодИМН);

    Сообщить (ВыборСотрудника);

    Если ЖЗ.ВыбратьЗаписиПоОбъекту(ВыборСотрудника,ДатаНач, ДатаКон) = 1 Тогда

       Пока ЖЗ.ПолучитьЗапись()=1 Цикл

          Если ЖЗ.ВидРасч=ВидРасчета.НДФЛ Тогда

             НДФЛ=НДФЛ+ЖЗ.Результат;

             Сообщить (НДФЛ);

             Прервать;

          КонецЕсли;

       КонецЦикла;

    КонецЕсли;

  КонецЕсли;

КонецЦикла;



Правильнее решать такие задачи при помощи запросов вида:

ТекстЗапроса =

"//({ЗАПРОС(НДФЛ)

|  // Задаем интервал запроса

|Период с ДатаНач по ДатаКон;

|  // Определяем внутренние переменные

|Рез = ЖурналРасчетов.Зарплата.Результат;

|Расч = ЖурналРасчетов.Зарплата.ВидРасч;

|ИМНС = ЖурналРасчетов.Зарплата.Объект.КодИМНС;

|  // Назначаем группировки

|Группировка ИМНС без групп;

|  // Назначаем функции

|Функция Сум = Сумма(Рез);

|Условие(Рез = ВидРасчета.НДФЛ);

|"//}}ЗАПРОС





"
Во втором примере где запрос будет ли группироваться по кодам ИМНС? Я имею в виду по каждому ИМНС своя сумма НДФЛ (суммированная по всем сотрудникам данного кода).
"Условие(Расч = ВидРасчета.НДФЛ); //это имелось в виду?"
Да, совершенно верно - описочка вышла |Условие (Расч = ВидРасчета.НДФЛ).

Группироваться запрос будет по кодам ИМНС.
Читают тему
(гостей: 1)

Быстрый переход