Имя: Пароль:
1C
 
СКД: СКД программно: помогите
0 nop
 
22.10.09
12:47
РезультатПоКолонкам = ВыполнитьЗапросыИАнализ();
   
   ЭлементыФормы.Результат.Очистить();
   
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   СхемаКД = ЭтотОбъект.СхемаКомпоновкиДанных;
   НаборДанных = СхемаКД.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
   НаборДанных.Имя = "Таблица";
   НаборДанных.ИмяОбъекта = "Таблица";
   НаборДанных.ИсточникДанных = "Таблица";
   Для каждого стр из колонкиОтчета Цикл
       поле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
       поле.Поле = стр.ИмяКолонки;
       поле.ПутьКДанным = стр.ИмяКолонки;
       поле.Заголовок = стр.Заголовок;
       поле.ТипЗначения = Новый ОписаниеТипов("Число");
   КонецЦикла;
   
   Настройки = ЭтотОбъект.КомпоновщикНастроек.Настройки;
   //Настройки.Структура.Очистить();
   
   МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКД,Настройки);

чего оно ругается "ошибка генерации макета" на последней строке?
1 IronDemon
 
22.10.09
12:51
Настройки = КомпоновщикНастроек.Настройки;
2 nop
 
22.10.09
12:54
(1) у меня вроде так и написано.

Поясню: пытаюсь настроить и вывести СКД с 0, программно, по ВнешнемуИсточникуДанных типа ТаблицаЗначений
материал беру отсюда http://www.gr13.ru/forum/index.php?showtopic=319 , но вот застрял ...
3 nop
 
22.10.09
13:07
шо ваще такое этот макет компоновки???
4 GenV
 
22.10.09
13:27
(3) Скомпонованная твоя схема СКД с учетом применения твоих настроек.
ЗЫ У тебя в схеме уже что-то прописано, раз её берешь и настройки из неё? Что у тебя выводится в расшифровке "Подробно" ошибки? "Неправильно указан источник данных" ?
5 nop
 
22.10.09
13:31
точно! не заметил " Ошибка в схеме компоновки данных: не найден источник данных: Таблица "
6 nop
 
22.10.09
13:39
какое имя должно быть? зачем оно вообще?
7 nop
 
22.10.09
13:43
как правильно сделать надо?
8 nop
 
22.10.09
13:50
ап!
9 nop
 
22.10.09
13:54
блин, ИсточникДанных - это родитель  в дереве слева
10 Defender aka LINN
 
22.10.09
14:03
Ну посмотри параметры метода "Выполнить", что ли...
11 ilpar
 
22.10.09
14:11
почитай Хрусталеву ... ) Там есть програмное заполнение
12 Demasiado
 
22.10.09
14:26
или погляди бух корп, отчет "универсальный отчет по метаданным"
13 nop
 
29.10.09
13:50
14 nop
 
29.10.09
17:06
добавил программно источник данных в СКД вот так

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


после запуска открываю настройки СКД и не вижу доступных полей кроме системных.
Что я не сделал?
15 nop
 
29.10.09
17:11
ап
16 nop
 
29.10.09
17:14
апп
17 nop
 
29.10.09
17:18
ДоступныеПоляКомпоновкиДанных ?
18 nop
 
29.10.09
17:48
????????
19 MRAK
 
29.10.09
17:57
(18) тебеж в (1) еще подсказали... все долбишь?

   КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
   Настройки = КомпоновщикНастроек.Настройки;
   
   КомпоновщикНастроек.Инициализировать(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
   
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, );
       
   ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,,);

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

   ПроцессорВывода.НачатьВывод();
   ПроцессорВывода.ОтображатьПроцентВывода = Истина;
   Пока Истина Цикл
       ЭлементРезультата = ПроцессорКомпоновки.Следующий();
       Если ЭлементРезультата = Неопределено тогда
           Прервать;
       КонецЕсли;    
       ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
   КонецЦикла;
   ПроцессорВывода.ЗакончитьВывод();
20 MRAK
 
29.10.09
17:57
(19) + сорри, последней строки в (0) не увидел...

смотри в отладчике
21 MRAK
 
29.10.09
17:58
(0) возможно, у тебя СКД - неосновной макет СКД. тогда надо так:

КомпоновщикНастроек.Инициализировать(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
22 MRAK
 
29.10.09
17:59
(21) + вместо
Настройки = ЭтотОбъект.КомпоновщикНастроек.Настройки;
23 nop
 
29.10.09
18:27
КомпоновщикНастроек.Инициализировать(СхемаКД.НастройкиПоУмолчанию); - несоответствие параметров
24 nop
 
29.10.09
18:30
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКД));

Ура! Спасибо! :) (ушел домой)
25 nop
 
10.11.09
17:26
как программно добавить ресурсы и итоги ?
26 nop
 
10.11.09
17:41
ап!!
27 nop
 
10.11.09
17:44
ап! (25)
28 nop
 
10.11.09
17:48
ап :( (25) !!
29 nop
 
10.11.09
17:53
есть вот в СП

ДоступноеПолеКомпоновкиДанных.Ресурс (DataCompositionAvailableField.Resource)
ДоступноеПолеКомпоновкиДанных (DataCompositionAvailableField)
Ресурс (Resource)
Использование:
Только чтение.
Описание:
Тип: Булево. Указывает, является ли поле ресурсом.

но здесь Ресурс - только чтение. Как добавить рессурс программно? Поле, Выражение, Рассчитывать по ... ?
30 nop
 
10.11.09
17:54
это та коллекция?

ПоляИтогаСхемыКомпоновкиДанных (DataCompositionSchemaTotalFields)
ПоляИтогаСхемыКомпоновкиДанных (DataCompositionSchemaTotalFields)
Элементы коллекции:
ПолеИтогаСхемыКомпоновкиДанных
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются поля.
Возможно обращение к полю посредством оператора [...]. В качестве аргумента передается индекс (нумерация с 0), имя поля.

Методы:
Вставить (Insert)
Добавить (Add)
Индекс (IndexOf)
Количество (Count)
Найти (Find)
Очистить (Clear)
Получить (Get)
Сдвинуть (Move)
Удалить (Delete)

Описание:
Коллекция полей итога.
См. также:
СхемаКомпоновкиДанных, свойство ПоляИтога
31 nop
 
10.11.09
18:13
(30) оно! очень просто оказалось :)

               полеИтога = СхемаКД.ПоляИтога.Добавить();
               полеИтога.ПутьКДанным = поле.ПутьКДанным;
               полеИтога.Выражение = "Сумма("+полеИтога.ПутьКДанным+")";
32 nop
 
11.11.09
15:05
как настроить условное оформление программно? Точнее как изменить шрифт ... хочу сделать жирным
33 nop
 
11.11.09
15:08
ап (32)
34 nop
 
11.11.09
15:16
уря, удалось :)

       уо = Неопределено;
       Если ПоляГруппировки.Количество() <> 0 Тогда
           уо = КомпоновщикНастроек.Настройки.УсловноеОформление.Элементы.Добавить();
           уо.Использование = Истина;
           х = уо.Оформление.Элементы.Найти("Font");
           х.Значение        = Новый Шрифт(х.Значение, , , Истина);
           х.Использование    = Истина;
       КонецЕсли;
....
       Для каждого стр из ПоляГруппировки Цикл
....
           поле_уо                    = уо.Поля.Элементы.Добавить();
           поле_уо.Поле            = Новый ПолеКомпоновкиДанных(поле.ПутьКДанным);
           поле_уо.Использование    = истина;
       КонецЦикла;
35 nop
 
11.11.09
18:30
36 luns
 
11.11.09
18:47
(0) Вот тут все есть: http://infostart.ru/public/20437/
Качни и в асю стукни, скажу пароль.