|
Заполнение пользовательских настроек на УФ | ☑ | ||
---|---|---|---|---|
0
alf2006x
23.08.18
✎
11:32
|
Всем доброго дня.
Перевожу обычную форму на УФ. В обычной форме есть табличное поле УсловияОтбора с типом значения = Отбор. Заполняется оно настройками из построителя запроса ПЗ путем программного создания ПЗ с нужным текстом запроса, выполнения метода ПЗ.ЗаполнитьНастройки() и последующим присвоением УсловияОтбора = ПЗ.Отбор На УФ я создал реквизит Компоновщик с типом значения = КомпоновщикНастроекКомпоновкиДанных и на форму вытащил его таблицу ПользовательскиеНастройкиКомпоновкиДанных. Подскажите, куда скормить имеющийся текст запроса чтобы в Пользовательских настройках появились доступные значения для отбора? |
|||
1
Cyberhawk
23.08.18
✎
13:22
|
Держи карман шире
|
|||
2
DrWatson
23.08.18
✎
13:44
|
(1) да ладно, чё ты.
(0) Процедура ИнициализироватьКомпоновщик(КомпоновщикНастроек, УникальныйИдентификатор, Знач НастройкиКомпоновщика = Неопределено) СхемаКомпоновкиДанных = (Загрузить или создать схему компоновки); URLСхемыКомпоновкиДанных = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, УникальныйИдентификатор); КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(URLСхемыКомпоновкиДанных)); Если ЗначениеЗаполнено(НастройкиКомпоновщика) Тогда КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновщика); КомпоновщикНастроек.Восстановить(СпособВосстановленияНастроекКомпоновкиДанных.Полное); Иначе КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); КонецЕсли; КонецПроцедуры |
|||
3
Cyberhawk
23.08.18
✎
13:45
|
(2) И где в этом коде ответ на "куда скормить имеющийся текст запроса"? :)
|
|||
4
DrWatson
23.08.18
✎
13:48
|
(3) Невнимательно прочитал вопрос. Думал схему компоновки создать программно создать не трудно.
Ладно, держи. СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных; ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить(); ИсточникДанных.Имя = "ИсточникДанных1"; ИсточникДанных.ТипИсточникаДанных = "Local"; НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных")); НаборДанных.Имя = "НаборДанных1"; НаборДанных.ИсточникДанных = ИсточникДанных.Имя; НаборДанных.АвтоЗаполнениеДоступныхПолей = Ложь; НаборДанных.Запрос = ТекстЗапроса; |
|||
5
alf2006x
23.08.18
✎
13:48
|
Спасибо.
Ушел пробовать. |
|||
6
DrWatson
23.08.18
✎
13:49
|
+(4) АвтоЗаполнениеДоступныхПолей лучше не пиши, у тебя в запросе скорее всего нет {}.
|
|||
7
alf2006x
23.08.18
✎
14:38
|
Всё сделал по инструкции.
Текст запроса отправил в НаборДанных. Захожу в СхемаКомпоновкиДанных.ВариантыНастроек.Основной.Настройки.Отбор.ДоступныеПоляОтбора.Элементы а там - никого. Делаю то же самое в Консоли отчетов СКД - там на закладке "Настройки" в варианте "Основной"/Выбранные поля/ Доступные поля - всё появляется (при наличии текста запроса, всё что есть в тексте запроса). Может программно для СхемаКомпоновкиДанных после установки текста запроса надо какой-то метод инициализации настроек выполнить? |
|||
8
DrWatson
23.08.18
✎
14:47
|
(7) У меня тоже никого. Ну и ладно, мне важнее чтобы было в КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.
Кстати, для целей отбора на форму обычно вытаскивают КомпоновщикНастроек.Настройки.Отбор |
|||
9
DrWatson
23.08.18
✎
14:49
|
(7) >>надо какой-то метод инициализации настроек выполнить.
Надо. В (2) он есть. |
|||
10
alf2006x
23.08.18
✎
15:23
|
(8) Совершенно справедливое замечание.
В итоге всё получилось. Огромное спасибо! |
|||
11
alf2006x
23.08.18
✎
17:29
|
Вторая серия.
Справочник.ТабличнаяЧасть.СписокУсловий (тип значения реквизита = ХранилищеЗначений) На форме: ТабличнаяЧасть и КомпоновщикНастроекКомпоновкиДанных (из первой серии) При изменении или удалении элемента КомпоновщикаНастроек происходит вызов метода, который должен помещать текущие настройки в ТекущиеДанные.СписокУсловий табличной части. Судя по тому, что реквизит с типом ХЗ недоступен в данных формы - похоже что задача нерешаемая. Как до него добраться на сервере и впихнуть туда упакованные в ХЗ настройки - не понимаю. Или все таки возможны варианты? |
|||
12
Franchiser
гуру
23.08.18
✎
17:40
|
(11) через адрес временного хранилища
|
|||
13
alf2006x
23.08.18
✎
18:06
|
На клиенте укладываю набор КомпоновщикаНастроек во временное хранилище.
Получаю временный адрес. Передаю адрес в процедуру на сервере На всякий случай передаю также номер строки ТекущихДанных табличной части. На сервере пытаюсь сделать так: ТЧ = РеквизитФормыВЗначение("Объект.ТабличнаяЧасть"); НаборУсловийОтбора = ПолучитьИзВременногоХранилища(Адрес); ТЧ[НомерСтроки-1].СписокУсловий = Новый ХранилищеЗначения(НаборУсловийОтбора); Получаю: Поле объекта не обнаружено (СписокУсловий) Смотрю его отладчиком, вижу тип: "ДанныеФормыКоллекция". А на форме ХЗ недоступен. Остается, наверное, только записать элемент, получить его программно, найти нужную строку и впихнуть туда содержимое адреса? |
|||
14
Franchiser
гуру
23.08.18
✎
19:25
|
Зачем тебе ХЗ на форме, вообще ХЗ не используй
|
|||
15
Franchiser
гуру
23.08.18
✎
19:27
|
ТЧ[НомерСтроки-1].СписокУсловий = Адрес;
|
|||
16
Franchiser
гуру
23.08.18
✎
19:30
|
Это вообще что документ, отчёт или обработка?
|
|||
17
alf2006x
24.08.18
✎
09:13
|
Это элемент справочника у которого есть табличная часть, реквизит в которой имеет тип значения ХЗ.
Этот реквизит нужно заполнить комплектом настроек КомпоновщикаНастроекКомпоновкиДанных для каждого элемента ТЧ. То есть для каждого элемента ТЧ справочника пользователь указывает список настроек КНКД, а моя задача эти настройки сохранить в ХЗ для каждой строки ТЧ элемента. Однако когда я на сервере пытаюсь сделать ТЧ[НомерСтроки-1].СписокУсловий = ... то в ответ получаю: "Поле объекта не обнаружено (СписокУсловий)" |
|||
18
Fragster
гуру
24.08.18
✎
09:26
|
все не читал. нужно схему положить во временное хранилище указав вторым параметром уид формы, потом проинициализировать компоновщик настроек на основе источника, созданного с параметром - адресом, полученным на предыдущем этапе.
|
|||
19
alf2006x
24.08.18
✎
09:29
|
А ларчик просто открывался:
ТЧ = РеквизитФормыВЗначение("Объект.ТабличнаяЧасть") возвращает тип "ДанныеФормыКоллекция" а ТЧ = РеквизитФормыВЗначение("Объект") возвращает тип "СправочникОбъект" (собственно то, что мне нужно) Матчасть - это наше всё )) Спасибо за помощь! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |