|
8.3 СКД. Как получить значение отбора в модуле обекта? |
☑ |
0
palpetrovich
02.03.20
✎
11:59
|
Значение отбора (ДоговорКлиента) нужно для передачи в общий модуль, там формируется ТЗ, которая скармливается СКД
В параметрах ДоговорКлиента - нет, только в отборе
вот так получить могу:
КоллекцияЭлементовПользовательскихНастроек = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
ЭлементПользовательскойНастроки = КоллекцияЭлементовПользовательскихНастроек.Получить(0);
ДоговорКлиента = ЭлементПользовательскойНастроки.ПравоеЗначение;
Есть-ли возможность получения не по индексу?
Типа как для параметра:
ПараметрДатаОтчета = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаОтчета"));
Если ПараметрДатаОтчета <> Неопределено Тогда
ДатаОтчета = КоллекцияЭлементовПользовательскихНастроек.Найти(ПараметрДатаОтчета.ИдентификаторПользовательскойНастройки).Значение.Дата;
КонецЕсли;
|
|
1
palpetrovich
02.03.20
✎
12:03
|
+ (0) ходят слухои, что "по индексу" искать дело стремное...
|
|
2
D_E_S_131
02.03.20
✎
12:19
|
"Значение отбора (ДоговорКлиента)" - это что за отбор такой в модуле объекта? Или отбор все же на форме у какого-то динамического списка?
|
|
3
acht
02.03.20
✎
12:28
|
(0) Там, ЕМНИП, идентификатор пользовательской настройки есть - строка по которой потом .Найти можно
|
|
4
palpetrovich
02.03.20
✎
12:32
|
(2) "модуль объекта" - модуль объекта отчета. Отбор - в настройках СКД на закладке Отбор
(3) для параметра да, работает, а вот для "не параметра" - не могу найти, потому и спрашиваю
|
|
5
D_E_S_131
02.03.20
✎
12:33
|
(4) А почему, если все это уже есть в СКД, нужно уходить в отдельную процедуру формирования ТЗ? Извращение какое-то...
|
|
6
catena
02.03.20
✎
12:37
|
(5)Ну, например, если ТЗ формируется из екселя, например
|
|
7
080808Ник
02.03.20
✎
12:39
|
(0) "Есть-ли возможность получения не по индексу?" обход пользовательских настроек и сравнение
|
|
8
toypaul
гуру
02.03.20
✎
12:40
|
у отбора тоже есть ИдентификаторПользовательскойНастройки
но проще будет обойти польз. настройки в них перебором найти нужный элемент
|
|
9
pechkin
02.03.20
✎
12:41
|
сначала нужно КомпоновщикНастроек.Получитьнастройки() - и там уже будут все пользовательские настройки применены
|
|
10
palpetrovich
02.03.20
✎
14:17
|
Спасибо всем, получилось через цикл
ТребуемыеОтборы = Новый Массив;
ТребуемыеОтборы.Добавить(Новый ПолеКомпоновкиДанных("ДоговорКлиента"));
ОтборДоговорКлиента = Неопределено;
Для Каждого Отбор Из КомпоновщикНастроек.ПолучитьНастройки().Отбор.Элементы Цикл
Если ТребуемыеОтборы.Найти(Отбор.ЛевоеЗначение) <> Неопределено Тогда
ОтборДоговорКлиента = Отбор;
Прервать;
КонецЕсли;
КонецЦикла;
Если ОтборДоговорКлиента = Неопределено Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не выбран договор!");
Возврат;
КонецЕсли;
ДоговорКлиента = ОтборДоговорКлиента.ПравоеЗначение;
|
|
11
080808Ник
02.03.20
✎
14:24
|
(10) нужно получать пользовательские настройки, иначе простые настройки выдаст значение по умолчанию. вроде как
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший