Реквизит типа КомпоновщикНастроекКомпоновкиДанных

1. t955938 14.02.19 09:47 Сейчас в теме
Добрый день!
Пытаюсь разобраться как можно использовать СКД в форме элемента справочника. Т.е. в форме элемента справочника хочу отображать отчет, чтобы пользователь имел возможность редактировать поля отчета и отбор.
Для справочника создаю СКД макет.
На форме элемента справочника размещаю реквизит КомпоновщикНастроекКомпоновкиДанных с типом КомпоновщикНастроекКомпоновкиДанных. Перетащил на форму таблицу Пользовательские настройки.
В процедуре ПриСозданииНаСервере пытаюсь связать реквизит КомпоновщикНастроек и макет. Но не получается.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	КомпоновщикНастроекКомпоновкиДанныхПользовательскиеНастройки­ =  Справочники.ЭтикеткиИЦенники.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

При открытии формы таблица Пользовательских настроек пуста.

Подскажите пожалуйста, как связать
По теме из базы знаний
Найденные решения
7. dhurricane 14.02.19 10:17 Сейчас в теме
(6) Попробуйте таки поместить СКД в хранилище формы, запомнить адрес в реквизите формы и инициализировать компоновщик адресом. Кстати, новый компоновщик создавать не нужно, это же реквизит формы.
lohnaty; arabesca; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dhurricane 14.02.19 09:55 Сейчас в теме
(1) Компоновщик настроек инициализируется так:
// Непосредственно
СКД = Справочники.ЭтикеткиИЦенники.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));

// С сохранением СКД в хранилще формы
СКД = Справочники.ЭтикеткиИЦенники.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
АдресСхемы = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор);
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
Показать
3. SedovSU@mail.ru 297 14.02.19 10:03 Сейчас в теме
(1) вы получить макет - в нем тип схема компоновки данных, далее вам нужно инициализировать компоновщик под данную схему

КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ВашаСхемаСКД)
4. t955938 14.02.19 10:06 Сейчас в теме
Спасибо за подсказки.

Воспользовался первой подсказкой, для подключения непосредственно.
СКД = Справочники.ЭтикеткиИЦенники.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));

Переименовал реквизит в КомпоновщикНастроек.
Но при открытии формы таблица Пользовательских настроек пуста.
5. dhurricane 14.02.19 10:09 Сейчас в теме
(4) А вы в макете указали, какие настройки будут пользовательскими?
6. t955938 14.02.19 10:15 Сейчас в теме
Макет правильный, он работает в отчете.
При открытии формы загружаю пользовательские настройки:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

Теперь таблица появляется, но при открытии Выбранные поля все поля отмечены красным крестиком и новые не добавляются.
7. dhurricane 14.02.19 10:17 Сейчас в теме
(6) Попробуйте таки поместить СКД в хранилище формы, запомнить адрес в реквизите формы и инициализировать компоновщик адресом. Кстати, новый компоновщик создавать не нужно, это же реквизит формы.
lohnaty; arabesca; +2 Ответить
8. t955938 14.02.19 10:21 Сейчас в теме
9. t955938 14.02.19 10:31 Сейчас в теме
Вариант с хранилищем работает.
Большое спасибо всем! ! !

СКД = Справочники.ЭтикеткиИЦенники.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
АдресСхемы = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
10. t955938 14.02.19 11:04 Сейчас в теме
Первый вариант тоже работает:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СКД = Справочники.ЭтикеткиИЦенники.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
АдресСхемы = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор);
КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));

Спасибо всем ! ! !
11. t955938 14.02.19 11:04 Сейчас в теме
Спасибо организаторам форума !!!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот