Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

8.3 СКД. Как получить значение отбора в модуле обекта?

8.3 СКД. Как получить значение отбора в модуле обекта?
Я
   palpetrovich
 
02.03.20 - 11:59
Значение отбора (ДоговорКлиента) нужно для передачи в общий модуль, там формируется ТЗ, которая скармливается СКД
В параметрах ДоговорКлиента - нет, только в отборе

вот так получить могу:
КоллекцияЭлементовПользовательскихНастроек = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
ЭлементПользовательскойНастроки = КоллекцияЭлементовПользовательскихНастроек.Получить(0);
ДоговорКлиента = ЭлементПользовательскойНастроки.ПравоеЗначение;

Есть-ли возможность получения не по индексу?

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

но проще будет обойти польз. настройки в них перебором найти нужный элемент
   pechkin
 
9 - 02.03.20 - 12:41
сначала нужно
КомпоновщикНастроек.Получитьнастройки() - и там уже будут все пользовательские настройки применены
   palpetrovich
 
10 - 02.03.20 - 14:17
Спасибо всем, получилось через цикл

ТребуемыеОтборы = Новый Массив;
ТребуемыеОтборы.Добавить(Новый ПолеКомпоновкиДанных("ДоговорКлиента"));
ОтборДоговорКлиента  = Неопределено;
Для Каждого Отбор Из КомпоновщикНастроек.ПолучитьНастройки().Отбор.Элементы Цикл
    Если ТребуемыеОтборы.Найти(Отбор.ЛевоеЗначение) <> Неопределено Тогда
        ОтборДоговорКлиента =  Отбор;
            Прервать;
        КонецЕсли;
    КонецЦикла;
Если ОтборДоговорКлиента = Неопределено Тогда
    ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не выбран договор!");
    Возврат;
КонецЕсли;                
ДоговорКлиента = ОтборДоговорКлиента.ПравоеЗначение;
   080808Ник
 
11 - 02.03.20 - 14:24
(10) нужно получать пользовательские настройки, иначе простые настройки выдаст значение по умолчанию. вроде как

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.