Имя: Пароль:
1C
1С v8
Почему не работает отбор в ФормаВыбора?
0 xintrea
 
22.01.14
13:23
Имеем 1С 8.2., управляемые формы, тонкий клиент, самописная конфигурация.

Есть справочник ОбъектыСтроительства. Сделал для этого справочника форму выбора (просто стандартную). Она нужна для того, чтобы в списке выбора показать только те записи, которые доступны пользователю. Отбор доступных записей пытаюсь сделать через метод ПриСозданииНаСервере():

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
  
Список.Отбор.Элементы.Очистить();

Запрос = Новый Запрос("ВЫБРАТЬ Ссылка
                        |ИЗ Справочник.ОбъектыСтроительства");
ВыборкаОбъектовСтроительства = Запрос.Выполнить().Выбрать();

// Перебор объектов строительства
Пока ВыборкаОбъектовСтроительства.Следующий() Цикл

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

        Иначе  
   Сообщить("Просмотр запрещен");
        КонецЕсли;  
          
    КонецЦикла;
  
КонецПроцедуры

То есть, у формы ФормаВыбора есть автоматически сформированный реквизит Список (Тип - динамический список, основная таблица - Справочник.ОбъектыСтроительства). У него в дереве видно свойство Отбор. Я и пытаюсь настроить этот отбор.

В результате вижу, что элементы отбора для некоторых объектов добавляются, для других- нет. Но форма выбора по прежнему показывает весь список.

Почему? Что еще нужно сделать чтобы наложить отбор на список записей в справочнике при выборе?
1 Kondarat
 
22.01.14
13:33
(0) Все коды доступных объектов запихать в массив, после выборки создать ЭлементОтбора

ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ЭлементОтбора.ПравоеЗначение = Массив;

Не?
Основная теорема систематики: Новые системы плодят новые проблемы.