Имя: Пароль:
1C
1С v8
Вытащить данные из СКД
,
0 MaiorovYury
 
30.01.15
15:23
Уважаемые форумчане,
стоит задача сделать выгрузку в файл данных стандартного отчета (РасчетныеВедомостиОрганизаций) но немного поиграть с полями - некоторые поля сложить, некоторые убрать.
Вообще хотелось бы сформировать этот отчет, но вместо того, чтобы выводить его в поле табличного документа, сразу поиграть с этими полями и вывести уже в файл.
Вопрос - как получить ТЗ с данными этого отчета или что-то более удобоваримое чем поле табличного документа?
1 MaiorovYury
 
30.01.15
15:24
Вот так смог вывести данные на форму, но лазая в конфигураторе не смог найти что-то вроде ТЗ с этими данными

    //Получаем схему из макета
    СхемаКомпоновкиДанных = Отчеты.РасчетныеВедомостиОрганизаций.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    
    //Из схемы возьмем настройки по умолчанию
    Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
    
    //Помещаем в переменную данные о расшифровке данных
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    
    //Формируем макет, с помощью компоновщика макета
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    
    //Передаем в макет компоновки схему, настройки и данные расшифровки
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
    МакетКомпоновки.ЗначенияПараметров.НачалоПериода.Значение = НачалоМесяца(Период);
    МакетКомпоновки.ЗначенияПараметров.КонецПериода.Значение = КонецМесяца(Период);
    
    //Выполним компоновку с помощью процессора компоновки
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
      
    //Очищаем поле табличного документа
    Результат = ЭлементыФормы.Результат;
    Результат.Очистить();
      
    //Выводим результат в табличный документ
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(Результат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
2 Психотерапевта Вызыва
 
30.01.15
15:25
(0) тупо запрос из скд вырвать и выполнить в своей обработке не айс?
3 MaiorovYury
 
30.01.15
15:25
(2) Там порядка 8 запросом в одном отчете. Думаю долго буду разбираться как они там все соединяются
4 MaiorovYury
 
30.01.15
15:26
(2) хотя не удивлюсь, если это все-таки окажется единственный вариант )))
5 polosov
 
30.01.15
15:27
(3) Получи табдок и сохрани его в ексель
6 MaiorovYury
 
30.01.15
15:30
(5) Сразу получить таб док тоже не получится, как я писал - надо кое какие поля сложить, какие-то убрать
В общем не меняя стандартный отчет не получится
7 MaiorovYury
 
30.01.15
15:53
Выходит, что нельзя так?
8 zippygrill
 
30.01.15
16:02
1. Если программно сформировать и выгрузить в ТЗ то нужно потом как то избавиться от итогов(если у тебя есть какие то группировки).
9 SUA
 
30.01.15
16:03
ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений
10 SUA
 
30.01.15
16:03
и потом что угодно с ней крутить
примеры в сегментации если УТ11
11 MaiorovYury
 
30.01.15
16:05
(9) Спасибо!
Как раз наткнулся на эту статью
http://langslab.com/ebooks/skd/dcs-ch3/built-in-language
И курю этот процессор

Только вот такая ошибка выскакивает.
Не поддерживается вывод таблиц, диаграмм и вложенных отчетов в универсальную коллекцию значений
Может кто знает?
12 MaiorovYury
 
30.01.15
16:05
{Форма.Форма.Форма(40)}: Ошибка при вызове метода контекста (Выполнить)
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
по причине:
Ошибка компоновки макета
по причине:
Ошибка генерации макета
по причине:
Не поддерживается вывод таблиц, диаграмм и вложенных отчетов в универсальную коллекцию значений
13 mikecool
 
30.01.15
16:09
(12) и не получится при наличии итогов и наверное еще чего то
14 SUA
 
30.01.15
16:09
не надо выводить таблицы, вложенные отчеты и диаграммы в универсальную коллекцию значений - все просто; сделай свой простейший вариант отчета с детальными записями и дальше полетит
15 mikecool
 
30.01.15
16:10
+13 кури таки запрос и формируй сразу нужные тебе данные
16 Абыр
 
30.01.15
16:15
и не забывать про
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
17 Абыр
 
30.01.15
16:16
(16) а. уже)
18 MaiorovYury
 
30.01.15
16:31
Скопировать схемуКД из отчета к себе в обработку, удалил все настройки КД и все взлетело
Теперь осталось программно удалить все эти настройки, но думаю с этим я уж разберусь
Всем спасибо)))
19 MaiorovYury
 
30.01.15
16:31
Если что - вот код

    //Получаем схему из макета
    СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    
    //Из схемы возьмем настройки по умолчанию
    Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
    
    //Помещаем в переменную данные о расшифровке данных
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    
    //Формируем макет, с помощью компоновщика макета
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    
    //Передаем в макет компоновки схему, настройки и данные расшифровки
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    МакетКомпоновки.ЗначенияПараметров.НачалоПериода.Значение = НачалоМесяца(Период);
    МакетКомпоновки.ЗначенияПараметров.КонецПериода.Значение = КонецМесяца(Период);
    
    //Выполним компоновку с помощью процессора компоновки
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    //ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
    
    ДеревоРезультата = Новый ТаблицаЗначений;
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ПроцессорВывода.УстановитьОбъект(ДеревоРезультата);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    Сообщить("Ура");
20 mikecool
 
30.01.15
16:58
(19) спасибо, таких кодов как грязи
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс