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