![]() |
|
Получить данные из штатного отчета в таблицу значений | ☑ | ||
---|---|---|---|---|
0
lg2marvel
04.09.19
✎
09:37
|
Привет.
Хочу получить данные из штатного отчета. Нашел пример, но он не полностью, начинаю так: ОтчетСостояниеШтатногоРасписания = Отчеты.СостояниеШтатногоРасписания.Создать(); ОтчетСостояниеШтатногоРасписания.ИнициализироватьОтчет(); НастройкиДанныеРасчета = ОтчетСостояниеШтатногоРасписания.СхемаКомпоновкиДанных.ВариантыНастроек.ЗаполненностьШтатногоРасписания.Настройки; ОтчетСостояниеШтатногоРасписания.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиДанныеРасчета); НастройкиОтчета = ОтчетСостояниеШтатногоРасписания.КомпоновщикНастроек.ПолучитьНастройки(); ДатаОтчета = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаАктуальности")); ДатаОтчета.Значение = ТекущаяДата(); ДатаОтчета.Использование = истина; Как дальше? Нужно что-то типа ОтчетСостояниеШтатногоРасписания.Сформировать(), но как правильно? |
|||
1
lg2marvel
04.09.19
✎
09:54
|
ОтчетСостояниеШтатногоРасписания = Отчеты.СостояниеШтатногоРасписания.Создать();
ОтчетСостояниеШтатногоРасписания.ИнициализироватьОтчет(); НастройкиДанныеРасчета = ОтчетСостояниеШтатногоРасписания.СхемаКомпоновкиДанных.ВариантыНастроек.ЗаполненностьШтатногоРасписания.Настройки; ОтчетСостояниеШтатногоРасписания.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиДанныеРасчета); НастройкиОтчета = ОтчетСостояниеШтатногоРасписания.КомпоновщикНастроек.ПолучитьНастройки(); ДатаОтчета = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаАктуальности")); ДатаОтчета.Значение = ТекущаяДата(); ДатаОтчета.Использование = истина; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(ОтчетСостояниеШтатногоРасписания.СхемаКомпоновкиДанных, НастройкиОтчета,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); // Создадим и инициализируем процессор компоновки. ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,, Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; РезультатКомпоновки = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(РезультатКомпоновки); ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина); Что-то не так: {ВнешнийОтчет.ДостаточностьИОттокПерсонала.Форма.ФормаОтчета.Форма(2165)}: Ошибка при вызове метода контекста (Выполнить) МакетКомпоновки = КомпоновщикМакета.Выполнить(ОтчетСостояниеШтатногоРасписания.СхемаКомпоновкиДанных, НастройкиОтчета,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); по причине: Ошибка компоновки макета по причине: Ошибка генерации макета по причине: Не поддерживается вывод таблиц и диаграмм в универсальную коллекцию значений |
|||
2
luter-89
04.09.19
✎
10:05
|
В сети полно рабочих примеров, может попробовать сначала погуглить?
|
|||
3
toypaul
гуру
04.09.19
✎
10:07
|
что из этого не понятно "Не поддерживается вывод таблиц и диаграмм в универсальную коллекцию значений" ?
|
|||
4
lg2marvel
04.09.19
✎
10:08
|
(2) взял пример из конфигурации, делаю на его подобии
Функция ТаблицаОстатковОтпусков(СтруктураПараметров) Экспорт ОтчетОстаткиОтпусков = Отчеты.ОстаткиОтпусков.Создать(); НастройкиДанныеРасчета = ОтчетОстаткиОтпусков.СхемаКомпоновкиДанных.ВариантыНастроек.ДанныеРасчета.Настройки; ОтчетОстаткиОтпусков.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиДанныеРасчета); НастройкиОтчета = ОтчетОстаткиОтпусков.КомпоновщикНастроек.ПолучитьНастройки(); ДатаОтчета = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаОтчета")); ДатаОтчета.Значение = СтруктураПараметров.ДатаОстатков; ДатаОтчета.Использование = Истина; Если ЗначениеЗаполнено(СтруктураПараметров.ИсключаемыеРегистраторы) Тогда РегистраторИсключение = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НеучитываемыйРегистраторОтпусков")); РегистраторИсключение.Значение = СтруктураПараметров.ИсключаемыеРегистраторы; РегистраторИсключение.Использование = Истина; КонецЕсли; Отбор = НастройкиОтчета.Отбор; Отбор.Элементы.Очистить(); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ЭтоОтпуск", ВидСравненияКомпоновкиДанных.Равно, Истина); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Дни", ВидСравненияКомпоновкиДанных.НеРавно, 0); Если ЗначениеЗаполнено(СтруктураПараметров.Сотрудники) И (СтруктураПараметров.Сотрудники.Количество() > 0) Тогда ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Сотрудник", ВидСравненияКомпоновкиДанных.ВСписке, СтруктураПараметров.Сотрудники); КонецЕсли; Если ЗначениеЗаполнено(СтруктураПараметров.ВидыОтпусков) И (СтруктураПараметров.ВидыОтпусков.Количество() > 0) Тогда ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ВидОтпуска", ВидСравненияКомпоновкиДанных.ВСписке, СтруктураПараметров.ВидыОтпусков); КонецЕсли; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(ОтчетОстаткиОтпусков.СхемаКомпоновкиДанных, НастройкиОтчета,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); // Создадим и инициализируем процессор компоновки. ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,, Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; РезультатКомпоновки = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(РезультатКомпоновки); ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина); Возврат РезультатКомпоновки; КонецФункции Моя функция: Процедура ТестНаСервере() ОтчетСостояниеШтатногоРасписания = Отчеты.СостояниеШтатногоРасписания.Создать(); НастройкиДанныеРасчета = ОтчетСостояниеШтатногоРасписания.СхемаКомпоновкиДанных.ВариантыНастроек.ЗаполненностьШтатногоРасписания.Настройки; ОтчетСостояниеШтатногоРасписания.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиДанныеРасчета); НастройкиОтчета = ОтчетСостояниеШтатногоРасписания.КомпоновщикНастроек.ПолучитьНастройки(); ДатаОтчета = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаАктуальности")); ДатаОтчета.Значение = ТекущаяДата(); ДатаОтчета.Использование = истина; Отбор = НастройкиОтчета.Отбор; Отбор.Элементы.Очистить(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(ОтчетСостояниеШтатногоРасписания.СхемаКомпоновкиДанных, НастройкиОтчета,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); // Создадим и инициализируем процессор компоновки. ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,, Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; РезультатКомпоновки = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(РезультатКомпоновки); ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина); КонецПроцедуры |
|||
5
lg2marvel
04.09.19
✎
10:12
|
ага, проблема в том что я хочу вывести результат в таблицу значений
|
|||
6
lg2marvel
04.09.19
✎
11:08
|
ОтчетСостояниеШтатногоРасписания = Отчеты.СостояниеШтатногоРасписания.Создать(); - создаю отчет в конфигурации
ОтчетСостояниеШтатногоРасписания = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Состояние штатного расписания"); - как создать из внешнего отчета? |
|||
7
lg2marvel
04.09.19
✎
11:22
|
Нужно получить ОтчетОбъект
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |