Имя: Пароль:
1C
1С v8
установка параметров СКД программно. Как?
0 Ar-Bus
 
07.03.13
13:22
А как в СКД добавить Параметры? Вот ситуация:
&Организация - элемент из справочника Организации. в обычном модуле я бы так написал:

элементОрганизация=Справочники.Оргаризации.НайтиПоНаименованию("ОрганизацияПример");
Если элементОрганизация=Неопределено Тогда
возврат;
Иначе
Запрос.УстановитьПараметр("параметрОрганизация",элементОрганизация);
КонецЕсли;

А как указать значение параметра в СКД? Заходил на вкладку СКД Параметры, но там можно указывать только предопределенные значения. Какой существует выход из данной ситуации?
1 Ar-Bus
 
07.03.13
13:29
поднимаю
2 mikecool
 
07.03.13
13:30
отбор
3 Ar-Bus
 
07.03.13
13:33
(2) а поподробнее?
4 mikecool
 
07.03.13
13:33
также параметру в выражение (кажется) можно написать ахинею из (0)
5 mikecool
 
07.03.13
13:33
(3) подробнее - заменяешь параметр на отбор и спокойно пользуешься
указано значение - отбор накладывается, нет - не накладывается
6 Михаил 1С
 
07.03.13
13:39
Сейчас напишу (возьму код из своей конфы).
7 GANR
 
07.03.13
13:39
ЗначенияПараметровДанныхКомпоновкиДанных.УстановитьЗначениеПараметра (DataCompositionDataParameterValues.SetParameterValue)
ЗначенияПараметровДанныхКомпоновкиДанных (DataCompositionDataParameterValues)
УстановитьЗначениеПараметра (SetParameterValue)
Синтаксис:

УстановитьЗначениеПараметра(<Параметр>, <Значение>)
Параметры:

<Параметр> (обязательный)

Тип: Строка; ПараметрКомпоновкиДанных.
Имя параметра или параметр компоновки данных, значение которого нужно установить.
<Значение> (обязательный)

Значение, которое нужно установить.
Описание:

Устанавливает значение параметра и включает свойство Использование. Если параметр с указанным именем не найден, будет вызвано исключение.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
8 Михаил 1С
 
07.03.13
13:40
Установка параметров в СКД:

КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаНач").Значение = ДатаНач;
   КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаНач").Использование = Истина;
   Если ЗначениеЗаполнено(ДатаКон) Тогда
       КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаКон").Значение = КонецДня(ДатаКон);
   Иначе
       КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаКон").Значение = Дата(2030, 1, 1, 0, 0, 0);
   КонецЕсли;
   КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаКон").Использование = Истина;
9 НаборДанных
 
07.03.13
13:42
(0)Ужас, тема порванный на 100500 раз б0ян....
10 Михаил 1С
 
07.03.13
13:43
С отбором сложнее, на него не навестись по имени, надо знать - каким он идет по-порядку (надо знать его индекс). Причем, надо сначала в СКД уже создать этот Отбор (во вкладке Настройка). Тогда потом можно использовать такой код:

КомпоновщикНастроек.Настройки.Отбор.Элементы[0].ПравоеЗначение = ТвоеЗначение;
КомпоновщикНастроек.Настройки.Отбор.Элементы[0].Использование = Истина;
11 НаборДанных
 
07.03.13
13:45
Кстати, организация одна?
12 Михаил 1С
 
07.03.13
13:50
(0) Автор, жду ваши Спасибы! :))
13 Ar-Bus
 
07.03.13
13:54
(12) Спасибо большое, все получилось! Н-да, удивлен скорости помощи... Обычно здесь помогают нехотя...
14 Михаил 1С
 
07.03.13
13:56
(13) Даа, просто эту тему я уже хорошо изрыл, и помнил где это лежит, чтобы сразу код выложить.
15 Михаил 1С
 
07.03.13
13:59
Я обычно все часто-используемые параметры в СКД вывожу на форму, чтобы пользователю не рыться в настройках СКД. Настройки периода вывожу и то, что еще часто нужно.
16 GANR
 
07.03.13
14:00
(14)(15) Специально для увлеченных СКД людей даю полезную ссылку http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=608399.
17 Михаил 1С
 
07.03.13
14:02
(16) Даа, люди круто делают. Но мне такое сейчас сложно.
Спасибо за ссылку (за расширение кругозора).
18 GANR
 
07.03.13
14:07
(17) Это не от крутости, это скорее, от безвыходности сваял. Функционал платформы, предназначенный для описанной в ссылке задачи, не срабатывал - вот и применил выгрузку в XML->программную правку файла->загрузку настроек СКД из XML.
19 badboychik
 
07.03.13
21:25
(10) Фигня. Я свою функцию поиска по имени написал и все. И создавать в схеме его не обязательно
20 badboychik
 
07.03.13
21:42
(10)
ПолеДляОтбора = НОвый ПолеКомпоновкиДанных(ИмяПоля);
ЭлемОтбор = НайтиОтборПоИмениПоля(ПолеДляОтбора); // своя функция
Если ЭлемОтбор = Неопределено Тогда
  ЭлемОтбор = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
  ЭлемОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
  ЭлемОтбор.ЛевоеЗначение = ПолеДляОтбора;
КонецЕсли;
ЭлемОтбор.Использование = Истина;
ЭлемОтбор.ПравоеЗначение = ЗначениеПоля;
СформироватьОтчет();
21 kiruha
 
07.03.13
21:49
(0)
Автоматическое преобразование схемы СКД в программный код
http://infostart.ru/public/173317/
http://1cskd.ru/2013/02/avtomaticheskoe-preobrazovanie-sxemy-skd-v-programmnyj-kod/
все само заполнит
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший