|
Программное выполнение СКД | ☑ | ||
---|---|---|---|---|
0
Орбита
26.06.19
✎
13:44
|
В ЗУП есть отчет остатки отпусков.
Пытаюсь программно получить из него данные в виде таблицы значений, чтобы посчитать остаток. Если я просто запускаю свой код на каком-то сотруднике, то получаю на выходе пустую таблицу значений. Если же вначале запускаю отчет остатки отпусков, потом запускаю свой код - получаю требуемую таблицу значений. Вопрос: что я делаю не так? Вот код функции: &НаСервере Функция ПолучитьКоличествоДнейОтпускаНаСервере(Сотрудник, ДатаОтчета) Экспорт СхемаОст = Отчеты.ОстаткиОтпусков.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); КомпоновщикНастроекНастройки = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроекНастройки.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаОст)); // КомпоновщикНастроекНастройки.ЗагрузитьНастройки(СхемаОст.НастройкиПоУмолчанию); КомпоновщикНастроекНастройки.ЗагрузитьНастройки(СхемаОст.ВариантыНастроек.ДанныеРасчета.Настройки); // КомпоновщикНастроекНастройки.ЗагрузитьНастройки(СхемаОст.ВариантыНастроек.ОстаткиОтпусковПоВидам.Настройки); КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаОтчета", ДатаОтчета); КомпоновщикНастроекНастройки.Настройки.Отбор.Элементы.Очистить(); ЭлементОтбора = КомпоновщикНастроекНастройки.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Сотрудник"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Сотрудник; // ЭлементОтбора = Список.Отбор.Элементы[1]; ЭлементОтбора.Использование = Истина; // Элементы.Список.Обновить(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаОст, КомпоновщикНастроекНастройки.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,,,Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ДанныеТЗ = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(ДанныеТЗ); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); Возврат ДанныеТЗ; КонецФункции |
|||
1
palsergeich
26.06.19
✎
13:56
|
Вангую:
КомпоновщикНастроекНастройки.Настройки это реквизит формы, который заполняется при исполнении первого отчета |
|||
2
Орбита
26.06.19
✎
14:08
|
(1) но я же его очищаю
КомпоновщикНастроекНастройки.Настройки.Отбор.Элементы.Очистить(); И если я выбираю другого сотрудника в отчете остатки отпусков, то моей функцией выводятся данные нужного сотрудника, а не выбранного в отчете остатки отпусков |
|||
3
silent person
26.06.19
✎
14:15
|
может лучше использовать функции общего модуля
ОстаткиОтпусков.ОстатокОтпускаСотрудникаНаДату( или ОстаткиОтпусков.ОстаткиОтпусковСотрудниковНаДату( |
|||
4
toypaul
гуру
26.06.19
✎
14:35
|
попробовать сначала схему
СхемаОст = Отчеты.ОстаткиОтпусков.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); поместить в хранилище и адрес передать в Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаОст) |
|||
5
toypaul
гуру
26.06.19
✎
14:37
|
плюс посмотреть модуль отчета. мало ли что там еще может быть
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |