Имя: Пароль:
1C
 
Как в СКД добавить параметр программно
0 Point
 
27.05.10
11:04
Может где-то и было, но не нашел.
Дайте пинок в нужном направлении.
1 Point
 
27.05.10
11:09
Актуально!
2 Andry888
 
27.05.10
11:11
3 also
 
27.05.10
11:11
на кнопочку я рядом с темой нажать
4 also
 
27.05.10
11:14
Его надо добавить интерактивно, а программно управлять его использованием
5 Point
 
27.05.10
11:15
(4) делал так

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

Выдает ошибку, типа парметр не задан.
6 Megas
 
27.05.10
11:16
Дата = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Дата");

Если Дата  <> Неопределено тогда
        Дата.Использование =  Истина;
        Дата.Значение = КонецДня(ТекущаяДата());
   КонецЕсли;
7 also
 
27.05.10
11:17
(5)    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Клиент").Использование = Истина;
   КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Клиент").Значение = ВыбКлиент;
8 Point
 
27.05.10
11:23
(7) А параметр должен быть задан в запросе и на закладке параметры (схемы) или только на закладке параметры?
9 luns
 
27.05.10
11:24
10 also
 
27.05.10
11:30
(8) на закладке параметры и еще обрати внимание на последний флажок на это на этой вкладке
11 Megas
 
27.05.10
11:34
Если у тебя срабатывает  то будет ошибка.

Параметр.Значение = Неопределено;
Параметр.Использование = Ложь;

Если параметр "НЕОБХОДИМ" то его необходимо использовать = истина!
12 Смешной 1С
 
27.05.10
11:48
Ну что, получилось? У меня такая же проблема, хотелось бы знать решение
13 also
 
27.05.10
11:50
(12) какая у тебя проблема? внимательно прочитай (7) и (10) )))
14 Смешной 1С
 
27.05.10
11:58
У меня проблема в том, что когда программно ставлю - не срабатывает (хотя если в настройках глянуть, значение у параметра стоит). Если в СКД параметр указываю - все отлично работает.
15 Point
 
27.05.10
13:17
(12) Не получилось.

Вот запрос:

ВЫБРАТЬ
   ЗаказПоставкиЭУТабличнаяЧасть.Ссылка.Основание,
   ЗаказПоставкиЭУТабличнаяЧасть.Комплект,
   ЗаказПоставкиЭУТабличнаяЧасть.Комплект.Наименование,
   ЗаказПоставкиЭУТабличнаяЧасть.НомерПроекта,
   ЗаказПоставкиЭУТабличнаяЧасть.НомерЯчейки,
   ЗаказПоставкиЭУТабличнаяЧасть.Количество,
   ЗаказПоставкиЭУТабличнаяЧасть.Сумма,
   ЗаказПоставкиЭУТабличнаяЧасть.Ссылка,
   ЗаказПоставкиЭУТабличнаяЧасть.Ссылка.Клиент КАК Клиент
ИЗ
   Документ.ЗаказПоставкиЭУ.ТабличнаяЧасть КАК ЗаказПоставкиЭУТабличнаяЧасть


Вот процедура:

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


Что не так?
16 Смешной 1С
 
27.05.10
13:20
(15) ошибки или просто не выводит?
17 Point
 
27.05.10
13:23
(16) Ошибки не дает.

По идее должен вывести в отчет, только те записи, у которых Клиент = ВыбКлиент. Но выводит все.
18 also
 
27.05.10
13:23
ВЫБРАТЬ
   ЗаказПоставкиЭУТабличнаяЧасть.Ссылка.Основание,
   ЗаказПоставкиЭУТабличнаяЧасть.Комплект,
   ЗаказПоставкиЭУТабличнаяЧасть.Комплект.Наименование,
   ЗаказПоставкиЭУТабличнаяЧасть.НомерПроекта,
   ЗаказПоставкиЭУТабличнаяЧасть.НомерЯчейки,
   ЗаказПоставкиЭУТабличнаяЧасть.Количество,
   ЗаказПоставкиЭУТабличнаяЧасть.Сумма,
   ЗаказПоставкиЭУТабличнаяЧасть.Ссылка,
   ЗаказПоставкиЭУТабличнаяЧасть.Ссылка.Клиент КАК Клиент
ИЗ
   Документ.ЗаказПоставкиЭУ.ТабличнаяЧасть КАК ЗаказПоставкиЭУТабличнаяЧасть

ГДЕ
   ЗаказПоставкиЭУТабличнаяЧасть.Ссылка.Клиент = &Клиент
19 Смешной 1С
 
27.05.10
13:25
а в настройку глянь, параметр поставился?
попробуй в СКД ручками задать какой-нибудь параметр.
20 Point
 
27.05.10
13:26
(18) так дает ошибку если в ВыбКлиент вообще ничего не выбрано
(19) Параметр стоит.
21 Смешной 1С
 
27.05.10
13:27
(20) ну а как ты хотел без ГДЕ?
Через отбор тогда делай
22 Point
 
27.05.10
13:29
(21) Можно ведь как-то наверное как-то так сделать?

{ГДЕ
   ЗаказПоставкиЭУТабличнаяЧасть.Ссылка.Клиент.*}
23 also
 
27.05.10
13:40
Тебе отбор нужен, а не параметр
24 also
 
27.05.10
13:42
Если ЗначениеЗаполнено(ВыбКлиент) Тогда
       ОтборКлиент = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
       ПолеКомпановки = Новый ПолеКомпоновкиДанных("Клиент");
       ОтборКлиент .Использование  = Истина;
       ОтборКлиент .ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
       ОтборКлиент .ЛевоеЗначение  = ПолеКомпановки;
       ОтборКлиент .ПравоеЗначение = ВыбКлиент ;
   КонецЕсли;
25 Смешной 1С
 
27.05.10
13:51
(24) Вот я уже и через параметр и через отбор, у меня ничего не выводит, как в (14) писал:(
26 also
 
27.05.10
13:59
(25) весь код кажи
27 Смешной 1С
 
27.05.10
14:11
(26) Как я только не делал... Ну вот последний через отбор:

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



Но дело в том, что значение ставиться: Он пишет, что Наименование2 = "Нужное свойство"
В параметрах все стоит. Но НИЧЕГО не выводит...
28 also
 
27.05.10
14:16
Весь код )))