Имя: Пароль:
IT
Админ
Проверить стоит ли отбор на список?
,
0 BorisSPb
 
17.09.13
14:25
Здравствуйте.

Стоит следующая задача: необходимо проверить стоит ли отбор в динамическом списке по элементу "Склад".

Я написал следующую процедуру, которая вызывается по команде нажатия кнопки:


&НаКлиенте
Процедура ОткрытьСправочникНоменклатура();
   Если Элементы.Список.Отбор["Склад"]  Тогда
       //...
   КонецЕсли
КонецПроцедуры

Но в режиме предприятия выдаётся ошибку:


{Документ.ВнутреннееПотреблениеТоваров.Форма.ФормаСписка.Форма(97)}: Поле объекта не обнаружено (Отбор)
   Если Элементы.Список.Отбор["Склад"]  Тогда

Подскажите, пожалуйста, как исправить данную ошибку?
1 shuhard
 
17.09.13
14:26
(0) открыть конфигуратор
поставить точку останова
позырить  Элементы.Список
2 Zamestas
 
17.09.13
14:47
(0) Список.Отбор.Элементы перебираешь и смотришь что в нем.
3 BorisSPb
 
17.09.13
14:51
А каким методом перебирать?
4 Zamestas
 
17.09.13
14:54
(3) Для Каждого ....
5 Sabbath
 
17.09.13
15:02
(0) По идее у отбора может быть метод Количество(). Проверь в отладчике, работает ли. Ну или обходить через Для Каждого и смотреть, если там есть "использование". Сам-то не знаю, чисто предположения, где копать
6 Sabbath
 
17.09.13
15:03
+(5) короче поставь точку останова, посмотри, что там за тип и найди в синтаксис-помощнике, что с ним можно делать
7 BorisSPb
 
17.09.13
16:36
Всем спасибо. Код заработал. Если кому пригодится:

КоллекцияОтбора=Список.Отбор.Элементы;

Для Каждого Элемент Из КоллекцияОтбора Цикл
    //Ваш код        
    КонецЦикла;

Буду также признателен, если вы подскажите каким методом можно получить объект по ссылке?
8 Fish
 
17.09.13
16:41
(7) Ссылка.ПолучитьОбъект() ?
9 BorisSPb
 
17.09.13
16:47
Методом "Ссылка.ПолучитьОбъект()"  можно воспользоваться только на сервере?
10 Classic
 
17.09.13
16:49
(9)
На клиенте вообще объектов нет.
11 BorisSPb
 
17.09.13
16:56
А как тогда с клиента получить объект. Я попробовал такой код, но он выдаёт ошибку.

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

    КоллекцияОтбора=Список.Отбор.Элементы;
    Эл = КоллекцияОтбора[0];
        Объект = ПолучитьОбъектС_Сервера(Эл.ПравоеЗначение);
//..
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьОбъектС_Сервера(Ссылка)
    Возврат Ссылка.ПолучитьОбъект();
КонецФункции
12 Classic
 
17.09.13
16:58
(11)
Зачем тебе на клиенте объект?
13 BorisSPb
 
17.09.13
17:06
На клиенте объект не нужен. Нужно значение его реквизита. Сейчас такой код выдаёт ошибку: Элемент не выбран!

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

    КоллекцияОтбора=Список.Отбор.Элементы;
    Эл = КоллекцияОтбора[0];
           Объект=ПроверитьПринадлежностьГруппеОМТС(Эл.ПравоеЗначение);
//..
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПроверитьПринадлежностьГруппеОМТС(Ссылка)
    Склад =  Ссылка.ПолучитьОбъект();
    Возврат Склад.ВыборГруппы;
КонецФункции
14 Classic
 
17.09.13
17:08
(13)
И на какой строке ошибку выдает?
15 BorisSPb
 
17.09.13
17:09
Все разобрался. Просто в отборе на пустую ссылку сравнение было.
16 BorisSPb
 
17.09.13
17:13
Как можно проверить принадлежит ли объект группе?
17 Rovan
 
гуру
17.09.13
17:24
(16) какой объект ? элемент справочника ??
18 Rovan
 
гуру
17.09.13
17:25
ПринадлежитЭлементу(<Элемент>)