Имя: Пароль:
1C
 
СКД: Установить параметры программно
0 Живой Ископаемый
 
02.04.10
16:20
Есть вот такой код

       СхемаКомпоновкиДанных = ПолучитьМакет("БезОрганизацийИБухСчетов");
       СхемаКомпоновкиДанных.Параметры.НачалоПериода.Значение = НачалоДня(НачПериода);
       СхемаКомпоновкиДанных.Параметры.КонецПериода.Значение = КонецДня(КонПериода);
       СхемаКомпоновкиДанных.Параметры.Организация.ДоступенСписокЗначений = Истина;
       СхемаКомпоновкиДанных.Параметры.Организация.Значение = НашиОрганизации;
       СхемаКомпоновкиДанных.Параметры.ПустаяСсылкаДДС.Значение = Справочники.СтатьиДвиженияДенежныхСредств.ПустаяСсылка();
       СхемаКомпоновкиДанных.Параметры.СтатьяКурсовойРазницы.Значение = СтатьяКурсовыхРазниц;        
//на этом этапе параметры заполнены именно как я хочу        

       Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;//а это взято из Хрусталевой
//после этой строчки в отладчике вижу что
//Настройки.ПараметрыДанных.Элементы - пустая коллекция
//Настройки.ПараметрыДанных.Элементы[0] - получить нельзя
       ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
       
       КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
       МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки);//а в этой строке, тоже взятой из Хрусталевой я передаю кажется Намтсройку с незаполненными параметрами
//и после ее выполнения Настройки.ПараметрыДанных.Элементы - попрежнему пустая коллекция
   
       ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
       ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки, Истина);

       ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
       ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
       
       ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
//в момент выполнения этой строки вываливается с ошибкой:
{(15, 43)}: Не задано значение параметра "НачалоПериода"
РегистрБухгалтерии.Хозрасчетный.Остатки(<<?>>&НачалоПериода, Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СчетаВБанках)), ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.БанковскиеСчета), Организация В ИЕРАРХИИ (&Организация)) КАК ХозрасчетныйОстатки


Ну то есть короче я так и не установил Параметры.

Можете подсказать в какой момент и каким образом я должен установить параметры?
1 Один С
 
02.04.10
16:23
Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода"));
   Если Параметр <> Неопределено Тогда
       Параметр.Значение = НачПериода;
       Параметр.Использование = Истина;
   КонецЕсли;
2 Живой Ископаемый
 
02.04.10
16:24
Кажется понял...
КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы - содержит  все мне нужные параметры

Просто не понял откуда доступен этот КомпоновщикНастроек - я его не объявлял
3 navarafree
 
12.04.10
14:18
(2) схожая проблема, КомпоновщикНастроек где объявляется?
4 Живой Ископаемый
 
12.04.10
14:30
(3) Ну.. типа нигде, просто доступен.
5 navarafree
 
12.04.10
14:35
(4) доступен отовсюду и всегда?
6 navarafree
 
12.04.10
14:36
(5) + просто я пишу в модуле формы внешней обработки. и при сохранении ругается что переменная якобы неопределена :(
7 acsent
 
12.04.10
14:38
использование
8 navarafree
 
12.04.10
14:46
(7) какая глубокая мысль :)
9 johnbay
 
12.04.10
15:05
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   КомпоновщикНастроек = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
при внешнем использовании
10 navarafree
 
12.04.10
15:08
(9) ща попробуем
11 navarafree
 
12.04.10
15:13
СхемаКомпоновкиДанных = ПолучитьМакет("Макет1");
   Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
       
   ПараметрСклад = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПарСклад"));
   
   ПараметрСклад.Использование = Истина;
   ПараметрСклад.Значение = СписокСкладов;
12 navarafree
 
12.04.10
15:13
не находит почему-то параметр ПарСклад
13 DmitrO
 
12.04.10
15:22
СхемаКомпоновкиДанных = ПолучитьМакет("Макет1");
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);

ПараметрСклад = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПарСклад"));
 
ПараметрСклад.Использование = Истина;
ПараметрСклад.Значение = СписокСкладов;
14 navarafree
 
12.04.10
15:32
(13) сколько сегодня историю данной темы читал, так нигде не видел :) работает все спасибо! Скажите откуда знания верного написания данного кода? В хрусталевой что-то внятного объяснения не нашел
15 DmitrO
 
12.04.10
15:46
Учебники не читаю, читаю тока документацию.
Вообще тут конечно вопрос тонкий. Дело в том что тип объекта одинаковый (НастройкиКомпоновкиДанных), но когда он получен из компоновщика настроек - он полноценный, а когда он получен из схемы он как бы ReadOnly, но это почему-то влияет на поиск параметра (вероятно внутри поиском занимается именно КомпоновщикНастроекКомпоновкиДанных) - он тогда надо было бы исключение хоть выкидывать при попытке поиска. Ну или тогда тпы этих объектов делать разные..

Короче грешны тут разработчики 1С..
16 navarafree
 
12.04.10
15:49
документация это справка и модули типовой конфы?
17 Живой Ископаемый
 
12.04.10
15:53
2(16) C:\Program Files\1cv81\AddDoc\RU
18 DmitrO
 
12.04.10
15:59
документация это (17) + справка
ну и у других посмотреть конечно тоже надо бывает, а то они такого в документации напишут - без поллитры не разберешься.
19 navarafree
 
12.04.10
16:01
(17) не знал что есть такой источник инфы :) Кстати возник такой вопрос по СКД, коли эту ветку читают опытные люди. Вот скажем вывожу я в сводную таблицу, сформированную при помощи СКД, цены номенклатуры. По строкам к примеру - номенклатура, по колонкам - склады. Вопрос такой: можно к этой таблице дополнительную колонку с кодом номенклатуры присоеднить? Только не группировку дополнительную с полем Код в строки добавлять, а как-то иначе.
20 Живой Ископаемый
 
12.04.10
16:03
2(19) Ну... мне как раз недавно так нужно было - я добавил поле Номенклатура.Код, и сказал выводить доп. поля отдельно, не вместе с группировкой
21 Живой Ископаемый
 
12.04.10
16:10
22 navarafree
 
12.04.10
16:12
(20) симпотично получилось! а вот это "сказал выводить доп. поля отдельно" - интерактивно настраивается или программно? если интерактивно, то где?
23 Живой Ископаемый
 
12.04.10
16:16
2(22) интерактивно один раз в конфигураторе, в схеме компоновке, на закладке "Другие настройки"\"Расположение реквизитов"\"Отдельно"
24 Живой Ископаемый
 
12.04.10
16:17
но можно и программно.
25 navarafree
 
12.04.10
16:19
(23) получилось! спасибо большое, сегодня я знаю по 1С больше чем вчера, значит не зря день прошел :)
2 + 2 = 3.9999999999999999999999999999999...