Имя: Пароль:
1C
1С v8
Отбор динамического списка
0 YAGolova
 
02.04.15
12:58
Работаю с УФ крайне редко, поэтому много не знаю. Подскажите пожалуйста - как установить отбор динамического списка НЕ при создании на сервер, а уже с открытой формы (на форме поле - при его изменении установить отбор). Как устанавливать отбор в СКД я знаю - соответственно так же и установил - при нажатии на настройку списка этот отбор виден, НО на форме ничего не меняется - список не перечитывается. Платформа 8.2.19.106. Пробовал: Элементы.Список.Обновить(), ОповеститьОбИзменении, ОтобразитьИзменениеДанных - ни в какую!!!
1 YAGolova
 
02.04.15
12:59
Во всех современных конфигурациях отбор устанавливается дерез Список.КомпоновщикНастроек.Настройки.Отбор, но у меня свойста КомпоновщикНастроек нет, так что я устанавливаю просто через Список.Отбор
2 YAGolova
 
02.04.15
13:14
АУ! Спецы по УФ есть?
3 butterbean
 
02.04.15
13:17
использование установил?
4 DrShad
 
02.04.15
13:19
в типовых есть процедуры общих модулей, которые устанавливают отборы для списков - все написано до вас
5 DrShad
 
02.04.15
13:20
что типа этого ищите ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(
6 asady
 
02.04.15
13:22
(0) нужно нажать на кнопку с красной буквой Я справа от названия темы.

По крайней мере в моём браузере первая страница уже содержит исчерпывающие ответы на твой вопрос
7 YAGolova
 
02.04.15
13:24
(3) установил
8 YAGolova
 
02.04.15
13:27
(5) Там написано ДинамическийСписок.КомпоновщикНастроек.Настройки.Отбор, но у моего динамического списка нет свойства КомпоновщикНастроек - я так подозреваю в силу того что платформа 8.2
9 DrShad
 
02.04.15
13:28
(8) у меня там вот такой код, который отлично работает

// Используется для создания элемента отбора или, если таковой не найден,
// установления существующим элементам свойств
// Параметры
//  ОбластьПоискаДобавления - контейнер с элементами и группами отбора, например
//                  Список.Отбор или группа в отборе
//  ИмяПоля - строка - имя для поля компоновки данных (заполняется всегда)
// Устанавливаемые поля:
//  ВидСравнения - ВидСравненияКомпоновкиДанных - вид сравнения
//  ПравоеЗначение - произвольный
//  Представление - представление элемента компоновки данных
//  Использование - булево - использование элемента
//  РежимОтображения - РежимОтображенияЭлементаНастройкиКомпоновкиДанных - режим отображения
//  ИдентификаторПользовательскойНастройки - Строка - См. ОтборКомпоновкиДанных.ИдентификаторПользовательскойНастройки в синтакс-помощнике.
//
Процедура УстановитьЭлементОтбора(ОбластьПоискаДобавления,
                                знач ИмяПоля,
                                знач ПравоеЗначение = Неопределено,
                                знач ВидСравнения = Неопределено,
                                знач Представление = Неопределено,
                                знач Использование = Неопределено,
                                знач РежимОтображения = Неопределено,
                                знач ИдентификаторПользовательскойНастройки = Неопределено) Экспорт
    
    ЧислоИзмененных = ИзменитьЭлементыОтбора(ОбластьПоискаДобавления, ИмяПоля, Представление,
                            ПравоеЗначение, ВидСравнения, Использование, РежимОтображения);
    
    Если ЧислоИзмененных = 0 Тогда
        Если ВидСравнения = Неопределено Тогда
            ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        КонецЕсли;
        Если РежимОтображения = Неопределено Тогда
            РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
        КонецЕсли;
        ДобавитьЭлементКомпоновки(ОбластьПоискаДобавления, ИмяПоля, ВидСравнения,
                                ПравоеЗначение, Представление, Использование, РежимОтображения, ИдентификаторПользовательскойНастройки);
    КонецЕсли;
    
КонецПроцедуры
10 ЧеловекДуши
 
02.04.15
13:41
(0) Отбор все ровно делается на сервере "&НаСервере"

ГруппаОтбораИ = Список.Отбор; //Можно организовывать еще и группы отбора, По И или ИЛИ

ЭлементОтбора = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение     = Новый ПолеКомпоновкиДанных("<Реквизит по Объекту>");
ЭлементОтбора.ВидСравнения     = ВидСравненияКомпоновкиДанных.Равно; //Условие отбора
ЭлементОтбора.Использование     = Истина;
ЭлементОтбора.ПравоеЗначение = <Значение отбора, может буть список значение>;
//Ниже можешь не писать, если нечего не прячешь
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
11 ЧеловекДуши
 
02.04.15
13:42
(10) А может и не только :)
12 YAGolova
 
02.04.15
13:49
(9) посмотрел внимательно функцию. В параметр ОбластьПоискаДобавления передается везде все тот же злополучный КомпоновщикНастроек.Настройки.Отбор которого у меня нет.
13 YAGolova
 
02.04.15
13:50
(10) так именно и делаю - но список на форме не обновляется
14 DrShad
 
02.04.15
13:50
(12) &НаКлиенте
Процедура ПросрочкаОтборПриИзменении(Элемент)
    ПросрочкаОтборПриИзмененииНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПросрочкаОтборПриИзмененииНаСервере()
    Если ПросрочкаОтбор = 2 тогда
        ПросрочкаОтборОчисткаНаСервере();
    Иначе
    ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(
        Список.Отбор,
        "Просрочка",
        ПросрочкаОтбор,
        ?(Число(ПросрочкаОтбор) = 1, ВидСравненияКомпоновкиДанных.Больше, ВидСравненияКомпоновкиДанных.Равно),
        "",
        Истина,
        ,
        );
    КонецЕсли;
КонецПроцедуры
15 YAGolova
 
02.04.15
13:57
Вообщем, все заработало как только процедуры установки отборов я перенес на клиента
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший