Имя: Пароль:
1C
 
Получить программно сотрудников в отпуске
0 1CQuery
 
05.08.25
15:21
Всем привет, мне нужно программно получить список сотрудников в отпуске. Нашел отчет типовой Отсутствие сотрудников в ЗУПе, хочу поулчить данные с СКД. Делаю так, он выдает ничего не показывает:


	ОтчетСостояния = Отчеты.СостоянияСотрудников.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	
	КомпоновщикНастроекНастройки = Новый КомпоновщикНастроекКомпоновкиДанных;
	КомпоновщикНастроекНастройки.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ОтчетСостояния));
	КомпоновщикНастроекНастройки.ЗагрузитьНастройки(ОтчетСостояния.ВариантыНастроек.ОтсутствияСотрудников.Настройки); 
	
	КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода", Дата("01.07.2025 00:00:00"));
	КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ОкончаниеПериода", Дата("31.08.2025 23:59:59"));
	
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(ОтчетСостояния, КомпоновщикНастроекНастройки.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
	ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; 
	ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,,,Истина);
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
	
	ДанныеТЗ = Новый ТаблицаЗначений;
	ПроцессорВывода.УстановитьОбъект(ДанныеТЗ);
	ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
	Для Каждого СтрокаТЗ Из ДанныеТЗ Цикл
		//обработка
	КонецЦикла;


Не подскажете, в чем может быть ошибка?
1 Волшебник
 
05.08.25
15:17
может все работают?
2 1CQuery
 
05.08.25
15:18
Когда делаю под пользователем, в отпуске есть люди...
3 Волшебник
 
05.08.25
15:21
В Вашем программном коде нет команды вывода или показа
4 1CQuery
 
05.08.25
15:25
Отсутствие данных уже видно после выгрузки в переменную ДанныеТЗ
5 SleepyHead
 
гуру
05.08.25
16:14
1. отчет не инициализирован, посмотри его модуль.
   возможно, после строки

ОтчетСостояния = Отчеты.СостоянияСотрудников.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

нужно сделать

ОтчетСостояния.ИнициализироватьОтчет()

А перед (или вместо) загрузки твоих  настроек в компоновщик тоже вызвать

ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) Экспорт

2. вариант решения твоей проблемы - общий модуль "СостоянияСотрудников" смотрел? Там готовая экспортная функция СостоянияСотрудников (0)
6 1CQuery
 
05.08.25
16:58
(5) Спасибо большое!!! СостоянияСотрудников очень помогла...
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший