Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Программно изменить (установить) отбор динамического списка в быстром доступе          
AnryMc Подменю пользователя
сообщение 20.05.24, 16:02
Сообщение #1

Оратор
Иконка группы
Группа: Местный
Сообщений: 378
Спасибо сказали: 103 раз
Рейтинг: 104.6

Доброго времени суток!

Дано: Форма списка. Основной реквизит - СПИСОК - Динамический список.

Произвольный запрос. В "Настройке списка" - "Настройки" - "Отбор" добавлен НовыйОтбор с "включать в настройки пользователя" и режим редактирования "быстрый доступ"
Т.е. данный отбор виден и доступен пользователю в форме Списка

ВОПРОС: Как его (этот отбор) заполнить программно при открытии формы Списка

AnryMc Подменю пользователя
сообщение 21.05.24, 9:46
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 378
Спасибо сказали: 103 раз
Рейтинг: 104.6

AnryMc @ Вчера, 17:02 * ,

Ап!!!

Если делать так:
        Список.Отбор.Элементы.Очистить();
    текНастройка = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

всё отрабатывает но на форме (элементы отбора с "быстрым доступом") - пустые
И в "Ещё" - "настройка списка" - данный отбор тоже не виден, т.е. его нельзя отменить...

Если использовать коды (варианты)
        //            //текНастройка = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных().Отбор.Элементы[0];
        //            //текНастройка = Список.КомпоновщикНастроек.Настройки.Отбор.Элементы[0];
        //            //текНастройка = Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0];

видны элементы с "быстрым доступом" но они не сохраняются...

sava1 Подменю пользователя
сообщение 21.05.24, 10:21
Сообщение #3

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2699
Из: Проскуров
Спасибо сказали: 684 раз
Рейтинг: 663.3

отбор надо не добавлять, а найти и установить

вообще в БСп есть процедура
ОбщегоНазначенияКлиентСервер. УстановитьЭлементОтбораДинамическогоСписка(ДинамическийСписок, ИмяПоля,
ПравоеЗначение = Неопределено,
ВидСравнения = Неопределено,
Представление = Неопределено,
Использование = Неопределено,
РежимОтображения = Неопределено,
ИдентификаторПользовательскойНастройки = Неопределено) Экспорт

AnryMc Подменю пользователя
сообщение 21.05.24, 11:16
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 378
Спасибо сказали: 103 раз
Рейтинг: 104.6

Цитата(sava1 @ 21.05.24, 11:21) *
вообще в БСп есть процедура


Да есть, но она не устанавливает отбор для элементов с "быстрым доступом" на форме
и не устанавливает отбор в "настройках списка"

т.е. пользователь не может изменить / отменить данный отбор.

З.Ы, Т.е. нужно делать свои реквизиты на форма - заполнять их - и уже на основании информации в них пользоваться установкой из БСП.

И если в настройке Списка есть "быстрый отбор", например Номенклатура =
и я добавлю свой реквизит "Номенклатура = (по моему)"
То есть на форме будет 2 реквизита с дублирующимися функциями - это путаница, перезагрузка интерфейса, ...
Объяснить Пользователю что нужно сначала "очистить" мой реквизит а затем выбрать то что нужно в стандартном (к которому он привык)

Сообщение отредактировал AnryMc - 21.05.24, 11:22

sava1 Подменю пользователя
сообщение 21.05.24, 11:28
Сообщение #5

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2699
Из: Проскуров
Спасибо сказали: 684 раз
Рейтинг: 663.3

Вы хотя-бы смотрели процедуру ?

    Если РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный Тогда
        ОтборДинамическогоСписка = ДинамическийСписок.КомпоновщикНастроек.ФиксированныеНастройки.Отбор;
    Иначе
        ОтборДинамическогоСписка = ДинамическийСписок.КомпоновщикНастроек.Настройки.Отбор;
    КонецЕсли;

AnryMc Подменю пользователя
сообщение 30.05.24, 12:52
Сообщение #6

Оратор
Иконка группы
Группа: Местный
Сообщений: 378
Спасибо сказали: 103 раз
Рейтинг: 104.6

Цитата(sava1 @ 21.05.24, 12:28) *
Вы хотя-бы смотрели процедуру ?


Смотрел...

Ещё раз ПОВТОРЯЮ вопрос:

Я могу установить отбор программно, но я хочу чтобы он отображался в элементах со свойством "быстрый доступ" и пользователь мог его изменить / отменить...

Вопрос - КАК ОТОБРАЗИТЬ НЕОБХОДИМЫЙ ОТБОР НА ФОРМЕ В ПРЕДОПРЕДЕЛЕННЫХ ЭЛЕМЕНТАХ ОТБОРА СО СВОЙСТВОМ "БЫСТРЫЙ ДОСТУП"

sava1 Подменю пользователя
сообщение 30.05.24, 13:11
Сообщение #7

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2699
Из: Проскуров
Спасибо сказали: 684 раз
Рейтинг: 663.3

может, определиться когда его устанавливать?

AnryMc Подменю пользователя
сообщение 30.05.24, 13:47
Сообщение #8

Оратор
Иконка группы
Группа: Местный
Сообщений: 378
Спасибо сказали: 103 раз
Рейтинг: 104.6

Цитата(sava1 @ 30.05.24, 14:11) *
может, определиться когда его устанавливать?


Я "вижу" элементы "быстрого доступа" при создании на сервере (открытии) - позиционируюсь на них - меняю...
Но при открытии формы они снова "пусты" и отбор не срабатывает...

если делаю
        ОбщийМодульКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "КлючевыеСлова.КлючевоеСлово", СписокКлючевыхСлов, ВидСравненияКомпоновкиДанных.Равно,, ИСТИНА,,"2bfdf78c-437f-4a3e-9c4b-0561e4543a8b");


отбор срабатывает но элемент отбора с индификатором "2bfdf78c-437f-4a3e-9c4b-0561e4543a8b" - пуст на форме

Если так:
        ОбщийМодульКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "КлючевыеСлова.КлючевоеСлово", СписокКлючевыхСлов, ВидСравненияКомпоновкиДанных.Равно,, ИСТИНА, [b]РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ[/b] ,"2bfdf78c-437f-4a3e-9c4b-0561e4543a8b");
- отбор не срабатывает элементы на форме тоже пусты

sava1 Подменю пользователя
сообщение 30.05.24, 15:11
Сообщение #9

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2699
Из: Проскуров
Спасибо сказали: 684 раз
Рейтинг: 663.3

Посмотрите на ПриЗагрузкеПользовательскихНастроек - вроде так называется

AnryMc Подменю пользователя
сообщение 30.05.24, 16:29
Сообщение #10

Оратор
Иконка группы
Группа: Местный
Сообщений: 378
Спасибо сказали: 103 раз
Рейтинг: 104.6

Цитата(sava1 @ 30.05.24, 16:11) *
ПриЗагрузкеПользовательскихНастроек


Цитата
Властивість "ЛевоеЗначение" не підтримується елементом колекції користувацьких настройок компонування даних



Выложил простенькую конфу
Нужно при открытии формы списка Справочник1 отобрать Контрагента из константы...

[необходимо зарегистрироваться для просмотра ссылки]

AnryMc Подменю пользователя
сообщение 31.05.24, 8:46
Сообщение #11

Оратор
Иконка группы
Группа: Местный
Сообщений: 378
Спасибо сказали: 103 раз
Рейтинг: 104.6

Так получилось добавить в отбор (по кнопке "Ещё" - настройка списка)
Но в "быстрый доступ" на форме не отображается...

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
     НужныйКонтрагент = Константы.Константа1.Получить(); //Реквизит формы - ссылка клиент

КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    ВидСравненияФ = ВидСравненияКомпоновкиДанных.Равно;
    ИмяПоляФ = "Контрагент";
    ЗначениеОтбораФ = НужныйКонтрагент;
    
    Для Каждого ЭлементОтбора Из Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
        
        Если ТипЗнч(ЭлементОтбора) = Тип("ОтборКомпоновкиДанных") Тогда
            
            ПользовательскийОтбор = ЭлементОтбора.Элементы;
            
            НовыйЭлементОтбора = Неопределено;
            
            Для Каждого СуществующийЭлементОтбора Из ПользовательскийОтбор Цикл
                
                Если СуществующийЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоляФ) Тогда
                    
                    НовыйЭлементОтбора = СуществующийЭлементОтбора;
                    
                     Прервать;
                    
                КонецЕсли;    
                    
            КонецЦикла;
            
            Если СуществующийЭлементОтбора = Неопределено Тогда
                
                НовыйЭлементОтбора = ПользовательскийОтбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
                
                НовыйЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоляФ);
                
            КонецЕсли;
        
            НовыйЭлементОтбора.ВидСравнения = ВидСравненияФ;
            НовыйЭлементОтбора.Использование = Истина;
            НовыйЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
            НовыйЭлементОтбора.ПравоеЗначение = ЗначениеОтбораФ;            
            
        КонецЕсли;
        
    КонецЦикла;

КонецПроцедуры

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 20.07.24, 0:34
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!