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

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

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

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

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

Типа как для параметра:
ПараметрДатаОтчета = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаОтчета"));
Если ПараметрДатаОтчета <> Неопределено Тогда
    ДатаОтчета = КоллекцияЭлементовПользовательскихНастроек.Найти(ПараметрДатаОтчета.ИдентификаторПользовательскойНастройки).Значение.Дата;
КонецЕсли;
 
 Партнерская программа EFSOL Oblako
   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 человек.