Имя: Пароль:
1C
 
как программно прочитать результат СКД
0 New_Tesla
 
15.08.22
18:05
Всем привет!


вот такой вопрос нынче возник попрочили сделать несколько отчетов

но все они основаны на расчетной ведомости
, поэтому хочу просто читать ее резуьтат и выводить в удобной форме

так вот: расчетная ведомость не вызывает процедуру "при компоновке результата" я стараюсь сразу в той процедуре где идет формирование прочитать но! ругаетси!

ЧДЯНТ?

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

    Для Каждого ЭлементОтбора Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
        Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") И ЭлементОтбора.Использование Тогда
            Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация") Тогда
                
                ЗначениеОтбора = ЭлементОтбора.ПравоеЗначение;            
                
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;

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

    ТиповыеОтчеты.СформироватьТиповойОтчет(ЭтотОбъект, Результат, ДанныеРасшифровки, ВыводВФормуОтчета);
    КомпоновщикНастроек.ЗагрузитьНастройки(НастрокаПоУмолчанию);
    УправлениеОтчетами.УстановитьЗапросыСКДПоСоответсвию(СхемаКомпоновкиДанных.НаборыДанных, СоответствиеНаборовДанныхИЗапросов);
    
    
    ЧтоТОНаСервере(СхемаКомпоновкиДанных,КомпоновщикНастроек);
    
    Возврат Результат;
    
КонецФункции

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

    КонецПроцедуры
1 New_Tesla
 
15.08.22
18:07
выходит ошибка

{Отчет.РасчетныеВедомостиОрганизаций.МодульОбъекта(110)}: Ошибка при вызове метода контекста (Выполнить)
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
по причине:
Ошибка компоновки макета
по причине:
Ошибка генерации макета
по причине:
Не поддерживается вывод таблиц, диаграмм и вложенных отчетов в универсальную коллекцию значений
2 DTX 4th
 
15.08.22
18:13
А что в ошибке то непонятно?
Покажи структуру отчета.
3 New_Tesla
 
15.08.22
18:26
(2)что такое "структура отчета"?

и почему не поддерживается то?
4 New_Tesla
 
15.08.22
18:26
я хочу српос скд вывести)
5 New_Tesla
 
15.08.22
18:28
а, понял  мы можем вывести в таблицу знаений только линейюную скд?

а как тогда прочитьа? куда вывести ?

просто результат по областям читать тож не вариант)))
6 New_Tesla
 
15.08.22
18:28
т.к сам отчет состоит из таблицы
7 DTX 4th
 
15.08.22
18:30
(3) Закладка СКД
Что ты ожидаешь увидеть при выгрузке диаграммы в таблицу значений?


    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(Результат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
8 New_Tesla
 
15.08.22
18:40
(7) ты прав старче, там таблица

ка ксюда скрин пометить  хз

в таблице несколько колонок

крч лучше все вывести линейно а потом прочитать, верн?
9 DTX 4th
 
15.08.22
18:51
Ну либо в табличный документ.
10 New_Tesla
 
15.08.22
18:55
да, но как потом таблицный документ мне прочитать? по областям ?
11 DTX 4th
 
15.08.22
19:09
Читать ТД я бы не стал. Думал, может файл просто сохранить надо.
Если есть возможность вывести в плоскую структуру, выглядит как выход.
12 Гений 1С
 
гуру
15.08.22
19:10
(11) неплоскую можно в Дерево выгружать вроде как.
13 New_Tesla
 
15.08.22
19:10
да, думаю взять запросы из расчетки , там параметров не так много

создать новый отчет и его уже выводить универсльно через таблицу значений)

потом напишу
14 Гений 1С
 
гуру
15.08.22
19:11
(13) у СКД есть функция, которая возвращает ее финальный запрос. Можно его выполнить, а выгружать уже самому.
15 New_Tesla
 
15.08.22
19:12
(14) ого! реал гениально!) ща поищем)
16 DTX 4th
 
15.08.22
19:50
(14) О какой функции речь?
17 Гений 1С
 
гуру
15.08.22
20:39
(16) (15) https://open-budget.ru/public/1067260/

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка=ложь;

НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

сообщить(МакетКомпоновки.НаборыДанных.НаборДанных1.Запрос);

КонецПроцедуры
18 mikecool
 
15.08.22
20:56
(0) "но все они основаны на расчетной ведомости
, поэтому хочу просто читать ее резуьтат и выводить в удобной форме "

автор, тебе точно не варианты отчета нужны?
19 New_Tesla
 
15.08.22
21:34
(18) не, там вывод вертолетами в поперекрестье)
20 New_Tesla
 
15.08.22
21:42
(17) да, в принипе норм, спасибо!

просто там тдет обединение в самой скд и поэтому запросов несколько (по осмс, ипн и тд) ну ниче либо одновременно либо поочереи буду вызывать

СПАСИБО
21 DTX 4th
 
16.08.22
17:33
(17) Хм, я же гуглил
Интересно, попробую запомнить, спасибо