Имя: Пароль:
1C
1С v8
Программное создание СКД с отбором на форме
0 conscious
 
21.06.22
17:38
Создал обработку с реквизитом на форме "НастройкиКД" типа "КомпоновщикНастроекКомпоновкиДанных", разместил на форме таблицу с путем к данным НастройкиКД.Настройки.Отбор.
Далее создаю программно СКД:

    СКД = Новый СхемаКомпоновкиДанных;

    ИсточникДанных = СКД.ИсточникиДанных.Добавить();
    ИсточникДанных.Имя = "Запрос";
    ИсточникДанных.ТипИсточникаДанных = "Local";
    
    НаборДанных = СКД.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
    НаборДанных.Имя = "Запрос";
    НаборДанных.ИсточникДанных = "Запрос";
    НаборДанных.Запрос = "ВЫБРАТЬ
                         |    Контрагенты.Ссылка КАК Ссылка
                         |{ВЫБРАТЬ
                         |    Ссылка.*}
                         |ИЗ
                         |    Справочник.Контрагенты КАК Контрагенты
                         |{ГДЕ
                         |    Контрагенты.ИНН,
                         |    Контрагенты.Наименование}";

    ДобавленноеПоле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
    ДобавленноеПоле.Заголовок = "Ссылка";
    ДобавленноеПоле.ПутьКДанным = "Ссылка";
    ДобавленноеПоле.Поле = "Ссылка";

    Структура = СКД.НастройкиПоУмолчанию.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    Структура.Использование = Истина;
    Структура.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
    Структура.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));

    ЭлемОтбора = СКД.НастройкиПоУмолчанию.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлемОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИНН");
    ЭлемОтбора.Использование = Истина;    
    ЭлемОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;

    НастройкиКД.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));
    НастройкиКД.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);


Почему на форме отбор отображается так: https://i.imgur.com/31DWRjJ.png
И в доступных полях (если нажать "Добавить новый элемент" ничего нет)...
Что упустил?
1 youalex
 
21.06.22
17:45
АдресВХ = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор);
    НастройкиКД.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресВХ));

Иначе у тебя Компоновщик "забудет" схему
2 conscious
 
21.06.22
17:48
(1) Да, так работает. Спасибо!

А в какой момент схема "забывается" и почему? Не оч. понимаю этот момент )
3 youalex
 
21.06.22
17:54
(2) В клиентском контексте схемы нет
4 conscious
 
21.06.22
17:56
Ок, понятно.