Ошибки в данных после выполнения свертки (ЗУП 2.5)

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

	
	Для Каждого с Из Данные Цикл
		
		Для Каждого сс Из с.ОстаткиВРазрезеРабочихЛетИВидовОтпусков Цикл
										
			н = РаботникиОрганизаций.Добавить();
			н.Сотрудник = с.Сотрудник;
			н.ФизЛицо = с.Сотрудник.ФизЛицо;
			н.ВидЕжегодногоОтпуска = сс.ВидЕжегодногоОтпуска;
			н.КоличествоДнейОтпуска = сс.ОсталосьДней;
			н.ДатаНачалаРабочегоГода = сс.РабочийГодС;
			н.ДатаОкончанияРабочегоГода = сс.РабочийГодПо;
						
			Для Каждого ссс Из сс.ФактическиеОтпуска Цикл
				
				УчтенныеПериоды = УчтенныеДокументыИПериоды.НайтиСтроки(Новый Структура("ВидЕжегодногоОтпуска, Период, Документ", 
					сс.ВидЕжегодногоОтпуска, ссс.ДатаРегистрации, ссс.ДокументРасшифровка));
				Если УчтенныеПериоды.Количество() Тогда
					Продолжить;
				КонецЕсли;
				
				н.Факт=н.Факт+ссс.КоличествоДнейОтпуска;
				
				 
				НоваяСтрока = УчтенныеДокументыИПериоды.Добавить();
				НоваяСтрока.ВидЕжегодногоОтпуска = сс.ВидЕжегодногоОтпуска;
				НоваяСтрока.Период = ссс.ДатаРегистрации;
				НоваяСтрока.Документ = ссс.ДокументРасшифровка;
			
				
			КонецЦикла;
			
		КонецЦикла;
		
	КонецЦикла;
 	
	РаботникиОрганизаций.Свернуть("Сотрудник, ФизЛицо, ВидЕжегодногоОтпуска, ДатаНачалаРабочегоГода, ДатаОкончанияРабочегоГода", "КоличествоДнейОтпуска, План, Факт");
	РаботникиОрганизаций.Сортировать("Сотрудник, ВидЕжегодногоОтпуска, ДатаНачалаРабочегоГода, ДатаОкончанияРабочегоГода");
	
	
	СформироватьОтчет(ЭлементыФормы.Результат,,Истина, Ложь);
	

	
КонецПроцедуры

Показать


Можете подсказать, где может идти дублирование данных в циклах.
По теме из базы знаний
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот