|   |   | 
| 
 | Сохранение настроек отборов пользователя скд | ☑ | ||
|---|---|---|---|---|
| 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 | 
        изврат
 но сделал так и работает Настройки= КомпоновщикНастроек.Настройки; // руками указываю поля ВыбранноеПолеКомментарий = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПолеКомментарий.Использование = Истина; ВыбранноеПолеКомментарий.Заголовок = "Код"; ВыбранноеПолеКомментарий.Поле = Новый ПолеКомпоновкиДанных("Код"); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить( СКД,Настройки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,,Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТаблицаЗначений = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |