Имя: Пароль:
1C
1С v8
как сравнить перечисление с текстовым значением в запросе?
0 rchervak
 
19.08.11
10:57
Здравствуйте. собственно проблема в следующем:

Выбираю запросом по СОМ соединению из "Удаленной Базы" документы с опреденеммыми видами операции.
Видов порядка 8 значений. Виды - перечисления.
Вот запрос

"ВЫБРАТЬ
   |    Документ.Номер КАК Номер
   |ИЗ
   |    Документ.Расходныйдокумент КАК Документ
   |ГДЕ
   |    Документ.Дата МЕЖДУ &НачалоПериода И &КонецПериода
   |    И Документ.Проведен
       |    И Документ.ВидОперации = &ВидОперации

Запрос.УстановитьПараметр("ВидОперации", СписокВидовОперации);



Виды операции в Рабочей базе получаю из Списка значений
ТекПризнак =  ?(ЭлементыФормы.ПризнакРеализ.Значение.Количество() = 0, NULL, ЭлементыФормы.ПризнакРеализ.Значение.ВыгрузитьЗначения());

СписокВидовОперации = connection.NewObject("Массив");
Для каждого Элемент из ТекПризнак цикл
СписокВидовОперации.Добавить(Элемент);
КонецЦикла;


В итоге всего этого получаю массив из признаков с типом строка.

А вот в запросе никак не могу понять каким образом теперь сравнить тип строку с типом перечисление.

Пробывал функцию Представление, но тогда ругается что нельзя сравникать строку с неограниченной длиной.
1 Grusswelle
 
19.08.11
10:58
ВЫРАЗИТЬ
2 rchervak
 
19.08.11
11:04
Изменил на
И Выразить(Документ.ВидОперации как строка (200)) = &ВидОперации

Выдает ошибка
Произошла исключительная ситуация: {(31, 4)}: Несовместимые типы "ВЫРАЗИТЬ"
И <<?>>Выразить(Документ.ВидОперации как строка (200)) = &ВидОперации
3 rchervak
 
19.08.11
11:08
(1)
передалал на это:
И Выразить(Документ.ВидОперации как строка (200)) в (&ВидОперации)

таже ошибка.
4 rchervak
 
19.08.11
11:20
почитал про "выразить" и понял одно, походу если элемент содержит значение в текстовом виде то его можно вытащить для сравнения с помощью выразить, а вот если такого значения впринципе нет, значит и "выразить" не поможет.. Сижу курю....

обидно что даже не понятно на 100% ЕСТЬ ЛИ У ПЕРЕЧИСЛЕНИЯ ЗНАЧЕНИЕ В ТИПЕ СТРОКА.. мож знает кто
5 Михаил Козлов
 
19.08.11
11:22
Значениия перечислений можно сравнить по Идентификатор().
6 Reset
 
19.08.11
11:29
Правильней в СписокВидовОперации занести значения перечислений из COM объекта.

СписокВидовОперации.Добавить(connection.Перечисления.БлаБлаВидыОпераций.ТакойТоВид);

и затем в запросе Документ.ВидОперации в (&ВидыОпераций)
7 Михаил Козлов
 
19.08.11
11:30
(6) Полагаю, что речь идет о сопоставлении значений перечисления в 2-х базах.
8 rchervak
 
19.08.11
11:33
(7) да. и все равно если Забирать значение перечислений из удаленной базы мне нужно будет все равно их сравнивать со списком который пользователь выберет. И опять не прокатит. (6) вариант
9 Reset
 
19.08.11
11:34
(8) Поэтому надо среди всех вариантов выбрать самый дерьмовый?
10 rchervak
 
19.08.11
11:35
В кратце объясню смысл.

Пользователь выбирает Виды операций (из списка значений) а затем получает из удаленной базы   все документы с нужными видами.
11 Reset
 
19.08.11
11:36
(10) Смысл абсолютно понятен из (0)
12 rchervak
 
19.08.11
11:37
(11) Это я так.. на всякий случай
13 rchervak
 
19.08.11
11:39
(6) я понял в чем был смысл ответа.. ща попробую..
14 rchervak
 
19.08.11
13:52
(6) спасибо. помогло.