Имя: Пароль:
1C
1С v8
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) нужно получать пользовательские настройки, иначе простые настройки выдаст значение по умолчанию. вроде как
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший