Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 июн 2025, 09:19

сохранение настроек отбора скд

Автор sali, 19 июн 2025, 07:27

0 Пользователей и 1 гость просматривают эту тему.

sali

есть обработка с выгрузкой там отбор по: номенклатуре, цене, штрихкоду, подарочным сертификатам, остаткам, контрагентам, дисконтным картам и скидкам и наценкам. это выглядит вот так Снимок экрана 2025-06-19 102830.png Снимок экрана 2025-06-19 102857.png
кто может работал или стакивался ранее с таким , когда эти настройки отбора нужно сохранить. у меня отбор сейчас работает так - я нахожусь на вкладке "номенклатура" и выставляю ей отбор , потом могу перейти на вкладку "цена" и сделать что-то там, а потом снова перехожу на страницу "номенклатура" и теряю свой отбор . то бишь он очищается если я перехожу с вкладки во вкладку . мне нужно сохранить эти настройки и подвязывать к торговому оборудованию. вопрос только когда будет нажиматься кнопка "сохранить отбор" (сохранить настройки отбора), куда и в каких данных могут они записываться?
куда это можно сказать - в регистр сведений непериодический, подчиненный справочнику "Торговое оборудование". но в каком виде?

sali

Снимок экрана 2025-06-19 142549.png как хранить это в регистре, в каком типе данных? чтобы потом при работе загружать настройки и при изменении обновлять/перезаписывать

antoneus

КомпоновщикНастроек.ПолучитьНастройки(), запихать в хранилище значения.

sali


sali

как потом вытащить ,ну когда отрыли отбор. запросом вытащить этот реквизит хранилища значения с условием чтобы торговое оборудование было равным с тем что на форме выбрали и потом компоновщикнастроек.загрузитьнастройки(данные настройки)
так?

antoneus


sali

что-то не так. все начинается с команды "показать отбор" она просто меняет название кнопки , но я туда дальше добавил свое
&НаКлиенте
Процедура ПоказатьСкрытьОтбор(Команда)
   
    ВидимостьОтбора = НЕ ВидимостьОтбора;
    УстановитьВидимостьОтбора(Элементы, ВидимостьОтбора); 
    Если ВидимостьОтбора = Истина Тогда
        адресНастроек = ПолучитьНастройкиОтбора(); 
        КомпоновщикНастроек.ЗагрузитьНастройки(адресНастроек);
    КонецЕсли;
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьОтбора(Знач Элементы, Знач ВидимостьОтбора)
   
    Если ВидимостьОтбора Тогда
        Элементы.ГруппаОтбор.Видимость = Истина;
        Элементы.Отбор.Заголовок = НСтр("ru = 'Скрыть отбор'"); 
    Иначе
        Элементы.ГруппаОтбор.Видимость = Ложь;
        Элементы.Отбор.Заголовок = НСтр("ru = 'Показать отбор'");
    КонецЕсли;
   
КонецПроцедуры


&НаСервере
Функция ПолучитьНастройкиОтбора()
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    СохраненныеНастройкиОтборов.СохраненнаяНастройка КАК СохраненнаяНастройка,
    |    ЭДОН_ТорговоеОборудование.Ссылка КАК Ссылка
    |ИЗ
    |    Справочник.ЭДОН_ТорговоеОборудование КАК ЭДОН_ТорговоеОборудование
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СохраненныеНастройкиОтборов КАК СохраненныеНастройкиОтборов
    |        ПО ЭДОН_ТорговоеОборудование.Ссылка = СохраненныеНастройкиОтборов.ТорговоеОборудование
    |ГДЕ
    |    ЭДОН_ТорговоеОборудование.Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка" , ЭтотОбъект.ЭДОН_ТорговоеОборудование);
   
    РезультатЗапроса = Запрос.Выполнить();
   
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
   
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл   
        Если ВыборкаДетальныеЗаписи.СохраненнаяНастройка <> Null Тогда
            Возврат ВыборкаДетальныеЗаписи.СохраненнаяНастройка;
        КонецЕсли;
    КонецЦикла;
КонецФункции




этот код уже для записи в РС
&НаСервере
Функция ПолучитьИмяМакета()
    ИмяМакета = "";
   
    Если Режим = "Номенклатура" Тогда
        ИмяМакета = "ШаблонОтбораНоменклатура";
    ИначеЕсли Режим = "Цены" Тогда
        Если ЭтоБП Тогда
            ИмяМакета = "ШаблонОтбораЦеныБП";
        ИначеЕсли ЭтоУНФ Тогда
            ИмяМакета = "ШаблонОтбораЦеныУНФ";
        КонецЕсли;           
    ИначеЕсли Режим = "Остатки" Тогда
        Если ЭтоБП Тогда
            ИмяМакета = "ШаблонОтбораОстаткиБП";
        ИначеЕсли ЭтоУНФ Тогда
            ИмяМакета = "ШаблонОтбораОстаткиУНФ";
        КонецЕсли;           
    ИначеЕсли Режим = "Контрагенты" Тогда
        ИмяМакета = "ШаблонОтбораКонтрагенты";
    ИначеЕсли Режим = "ДисконтныеКарты" Тогда
        ИмяМакета = "ШаблонОтбораДисконтныеКарты";
    ИначеЕсли Режим = "Скидки" Тогда
        ИмяМакета = "ШаблонОтбораСкидки";
        // *** 27.05.2025 Рядов Сергей  Аркад ***
        // <<< Доработка для дисконтных карт
    ИначеЕсли Режим = "ПодарочныеСертификаты" Тогда
        ИмяМакета = "ШаблонПодарочныеСертификаты";
        //Доработка для дисконтных карт >>
    КонецЕсли;   
   
    Возврат ИмяМакета;
КонецФункции // ПолучитьИмяМакета()


&НаКлиенте
Процедура СохранитьНастройкиОтбора(Команда)
    СохранитьНастройкиОтбораНаСервере();
КонецПроцедуры


&НаСервере
Процедура СохранитьНастройкиОтбораНаСервере() 
    ИмяМакета = ПолучитьИмяМакета(); 
    НастройкиОтбора = КомпоновщикНастроек.ПолучитьНастройки(); //настройки.отбор.элементы;

    МенеджерЗаписи = РегистрыСведений.СохраненныеНастройкиОтборов.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.ТорговоеОборудование = ЭтотОбъект.ЭДОН_ТорговоеОборудование;   
    МенеджерЗаписи.СохраненнаяНастройка = Новый ХранилищеЗначения(НастройкиОтбора);
    МенеджерЗаписи.ИмяОбъекта = Обработки.ЭДОН_РабочееМесто.ПолучитьМакет(ИмяМакета);
    МенеджерЗаписи.Записать();
КонецПроцедуры


Снимок экрана 2025-06-19 154655.png
ТО - справочник торговое оборудование
имя объекта - строка
сохраненная настройка - хранилище значения

sali

именно в этой строке что-то не то КомпоновщикНастроек.ЗагрузитьНастройки(адресНастроек);

antoneus

адресНастроек - это хранилище значения.

sali

antoneus, да. но если прописывать адреснастроек.получить() - ошибка при вызове метода контекста получить(). значит там не хранилище?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск