|
Сохранение настроек отборов пользователя скд | ☑ | ||
---|---|---|---|---|
0
lamme
06.11.20
✎
12:53
|
УТ11,4
справочник - описывающий правила формирования остатков у формы справочника есть реквизит с типом - КомпоновщикНастроек на форме - лежат пользовательсткие настройки отборов. Есть так же макет - в котором запрос. -- При открытии считывается макет - отборы активны СКД=Справочники.НастройкиАвтоВыгрузкиПрайса.ПолучитьМакет("СКД"); АдресВоВременномХранилище=ПоместитьВоВременноеХранилище(СКД,УникальныйИдентификатор); ИсточникНастроек=Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресВоВременномХранилище); КомпоновщикНастроек.Инициализировать(ИсточникНастроек); КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию); Вопрос. Пользовтаель создал какие -то отборы. 1 Как и куда эти отборы - сохранить - чтобы при повторном открытии этого же эелемента справочника - все отборы восстановились ? 2 как их потом прочиатть-восстановить -после того как сохранятся ? |
|||
1
kumena
06.11.20
✎
13:39
|
1. РеквизитСправочникаДляХранинияНастроек = Новый ХранилищеЗначения(Настройки);
2. КомпоновщикНастроек.ЗагрузитьНастройки(РеквизитСправочникаДляХранинияНастроек.Получить()); как-то так, возможно в синтаксисе может быть ошибка. |
|||
2
kumena
06.11.20
✎
13:40
|
РеквизитСправочникаДляХранинияНастроек - тип хранилище значения
|
|||
3
Timon1405
06.11.20
✎
14:36
|
изучить подсистему "ВариантыОтчетов" не предалгать?
|
|||
4
lamme
06.11.20
✎
15:32
|
(1)
не хочет. РеквизитФормыВЗначение("Объект").НастройкиХранилище = Новый ХранилищеЗначения(КомпоновщикНастроек.Настройки) буквально сразу же - после этой строки - смотрю отладчико - РеквизитФормыВЗначение("Объект").НастройкиХранилище.получить() а там как было - неопределено - так и осталось что не так делаю? Реквизит справочника - НастройкиХранилище -имеет тип = ХранилищеЗначения |
|||
5
kumena
06.11.20
✎
16:18
|
Объект.НастройкиХранилище = Новый ХранилищеЗначения(КомпоновщикНастроек.Настройки)
|
|||
6
lamme
06.11.20
✎
16:19
|
это при записи элемента справочника идет
объет там имеет вид Объект ДанныеФормыСтруктура |
|||
7
lamme
06.11.20
✎
16:21
|
Объект.НастройкиХранилище - на сервере нет этого реквизита
вот хз почему |
|||
8
lamme
06.11.20
✎
16:22
|
но есть
Объект.Наименование |
|||
9
kumena
06.11.20
✎
16:22
|
у меня таким образом работает, код из формы отчета.
ДокументОбъект = Документы.УтверждениеБюджета.СоздатьДокумент(); ДокументОбъект.НастройкиОтчета = Новый ХранилищеЗначения(Настройки); ДокументОбъект.Записать(); |
|||
10
kumena
06.11.20
✎
16:23
|
+9, серверный контекст естественно. почему у тебя не работает - думай сам!
|
|||
11
lamme
06.11.20
✎
16:24
|
это программное оьбращение
это понятно. |
|||
12
lamme
06.11.20
✎
16:33
|
короче
сам в себя при записи объекта - записать не получается а если записывать во внешний регистр хранения - то получается все. а вот почему сам в себя записать не получается - не знаю... |
|||
13
Kassern
06.11.20
✎
16:50
|
(0) Все же уже придумано и есть в типовых конфигурациях...Зайдите к примеру в сегменты партнеров, или номенклатуры. Посмотрите как там сохраняются отборы для СКД.
|
|||
14
Михаил Козлов
07.11.20
✎
11:51
|
Если на форму положить не настройки компоновщика, а отбор пользовательских настроек компоновщика, то у этого реквизита можно установить флаг сохранения.
А так можно глянуть в типовых, например, в обработке ОбеспечениеПотребностей. |
|||
15
lamme
08.11.20
✎
20:59
|
---
Предыдущий вопрос решен ВОпрос следующий. То что выше описано - это пользовательский интерфейс настроек для формирования прайсов по тем или иным настройкам. На сервере - регл задание- которое берет эти настроки и формирует остатки. КомпоновщикНастроек = новый КомпоновщикНастроекКомпоновкиДанных(); СКД=Справочники.НастройкиАвтоВыгрузкиПрайса.ПолучитьМакет("СКД"); АдресВоВременномХранилище=ПоместитьВоВременноеХранилище(СКД, Новый УникальныйИдентификатор()); ИсточникНастроек=Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресВоВременномХранилище); КомпоновщикНастроек.Инициализировать(ИсточникНастроек); запрос = новый запрос(); запрос.УстановитьПараметр("Владелец",схеманастройки.Ссылка); запрос.Текст = "ВЫБРАТЬ | БезопасноеХранилищеДанных.Владелец КАК Владелец, | БезопасноеХранилищеДанных.Данные КАК Данные |ИЗ | РегистрСведений.БезопасноеХранилищеДанных КАК БезопасноеХранилищеДанных |ГДЕ | БезопасноеХранилищеДанных.Владелец = &Владелец"; РРР = запрос.Выполнить().Выгрузить(); Если РРР.Количество() >0 тогда КомпоновщикНастроек.ЗагрузитьНастройки(РРР[0].Данные.получить()); конецесли; НастройкиКомпоновщика = КомпоновщикНастроек.Настройки; ПараметрыНастройки = НастройкиКомпоновщика.ПараметрыДанных; //// устанавливаем параметры отчета //ЗначениеПараметра = ПараметрыНастройки.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода")); //ЗначениеПараметра.Значение = НачалоПериода; //ЗначениеПараметра = ПараметрыНастройки.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонецПериода")); //ЗначениеПараметра.Значение = КонецДня(КонецПериода); //Получим макет компоновки КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СКД, НастройкиКомпоновщика,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); //Через процессор компоновки получим результат ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных); ТаблицаРезультат = Новый ТаблицаЗначений; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); Вот в ТаблицаРезультат - я для себя делаю промежуточную таблицу - чтобы посмотреть - правильо ли все работает по отборам пользователей Отборы работают. Косяк всплыл в другом месте. В СКД идут поля выбора Номенклатура.Артикул / Номенклатура.Код / Номенклатура.Комментарий в настройках схемы так же указываю эти поля. а в отладчике в момент ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат); вижу только 2 колонки - Номенклатура и Остаток как и где указать - чтобы выводились и еобходимые параметры типа Артикул-Код-Коммент |
|||
16
lamme
08.11.20
✎
22:07
|
изврат
но сделал так и работает Настройки= КомпоновщикНастроек.Настройки; // руками указываю поля ВыбранноеПолеКомментарий = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПолеКомментарий.Использование = Истина; ВыбранноеПолеКомментарий.Заголовок = "Код"; ВыбранноеПолеКомментарий.Поле = Новый ПолеКомпоновкиДанных("Код"); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить( СКД,Настройки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,,Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТаблицаЗначений = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |