Имя: Пароль:
1C
 
Перечисления в запросе через OLE
Ø
,
0 Sergulet1
 
29.12.05
16:02
Отправляю запрос в удаленную базу
    Запрос = БазаОле.CreateObject("Запрос");
    
    ТекстЗапроса = " Период с '"+Дата1+ "' по '"+Дата2+"';
    |Порода = Регистр.РасходСырья.Порода;
    |ТипСырья = Регистр.РасходСырья.ТипСырья;
    |Сорт = Регистр.РасходСырья.Сорт;
    |ВидДвижения = Регистр.РасходСырья.ВидДвижения;
    |Группировка Порода без групп;
    |Группировка ТипСырья без групп;
    |Группировка Сорт без групп;
    |Условие (ВидДвижения = Перечисление.ВидДвижения.Окорка);
    |Объем = Регистр.РасходСырья.Объем;
    |Функция Расход = Сумма(Объем);";
Выдает ошибку
Условие (ВидДвижения = Перечисление.ВидДвижения.Окорка <<?>> );
Запрос[9] : Ошибка в выражении 'Перечисление'
Вроде все сделал по уму. Как построить условие?
1 zzz
 
29.12.05
16:02
http://www.sinor.ru/~my1c/knowhow/v7&OLE.html
2 Sergulet1
 
29.12.05
16:06
Эти текстом и руководствовался, когда писал. Но не работает
3 zzz
 
29.12.05
16:09
Сообщить( БазаОле.Перечисление.ВидДвижения.Окорка.Идентификатор() )
и как ты запрос выполняешь? код?
4 КонецЦикла
 
29.12.05
16:09
2(2) Если не хочешь долго думать - пиши через идентификатор в запросе и сверяй со строкой
5 Sergulet1
 
29.12.05
16:17
Пробовал и через идентификатор и через ПорядковыйНомер(). Не работает. Ошибка правда уже другая.
2 zzz Запрос без этого условия работает. В смыле данные возвращаются. Делал группировку по перечислению, чтобы потом отобрать нужные данные по порядковому номеру перечисления. Но в местной базе порядковый номер не получить.
6 zzz
 
29.12.05
16:18
2(5) ?
7 Alexaha
 
29.12.05
16:19
5. я пользовался шаблоном и метаданными
8 Sergulet1
 
29.12.05
16:24
(6) Вот так:
    ТекстЗапроса = " Период с '"+Дата1+ "' по '"+Дата2+"';
    |Порода = Регистр.РасходСырья.Порода;
    |ТипСырья = Регистр.РасходСырья.ТипСырья;
    |Сорт = Регистр.РасходСырья.Сорт;
    |ВидДвижения = Регистр.РасходСырья.ВидДвижения.Идентификатор;
    |Группировка Порода без групп;
    |Группировка ТипСырья без групп;
    |Группировка Сорт без групп;
    |Группировка ВидДвижения;
    //|Условие (ВидДвижения = Окорка);
    |Объем = Регистр.РасходСырья.Объем;
    |Функция Расход = Сумма(Объем);";
Ошибка:
ВидДвижения = Регистр.РасходСырья.ВидДвижения. <<?>> Идентификатор;
Запрос[5] : Неверно заданный путь 'Идентификатор'
(7) Это как?
9 КонецЦикла
 
29.12.05
16:28
2(8) МойВид = "Окорка";
 |Условие (ВидДвижения.Идентификатор() = МойВид);
10 Sergulet1
 
29.12.05
16:37
2(9) А как я в тексте запроса передам в удаленную базу переменную МойВид?
11 Lexusss
 
29.12.05
16:37
(9) Тогда уж
 |Условие (ВидДвижения.Идентификатор() = "+МойВид+");
12 КонецЦикла
 
29.12.05
16:43
2(10,11) Короче вы поняли... :)
 |Условие (ВидДвижения.Идентификатор() = ""Окорка"");
13 Sergulet1
 
29.12.05
16:50
Получилось след. образом:
    Запрос = БазаОле.CreateObject("Запрос");
    
    ТекстЗапроса = " Период с '"+Дата1+ "' по '"+Дата2+"';
    |Порода = Регистр.РасходСырья.Порода;
    |ТипСырья = Регистр.РасходСырья.ТипСырья;
    |Сорт = Регистр.РасходСырья.Сорт;
    |ВидДвижения = Регистр.РасходСырья.ВидДвижения;
    |Группировка Порода без групп;
    |Группировка ТипСырья без групп;
    |Группировка Сорт без групп;
    |Условие (ВидДвижения.ПорядковыйНомер() = 3);
    |Объем = Регистр.РасходСырья.Объем;
    |Функция Расход = Сумма(Объем);";
Что интересно, при использовании метода ВыбратьДвижения() нужное значение перечисления в качестве фильтра по движениям работает замечательно. Но это было слишком долго. Всем спасибо.