Имя: Пароль:
1C
 
Запрос из 8.1 в 7.7 по OLE и перечисление
0 Fragster
 
гуру
19.03.10
12:30
Запрос в 7.7 работает, в 8.1 выдает исключение:

Ошибка при вызове метода контекста (Выполнить): Произошла исключительная ситуация (1С:Предприятие): Условие(ТекущийСтатус = Перечисление.ВидыТМЦ.Продукция <<?>> );
Запрос[9] : Ошибка в выражении 'Перечисление'
   Если Запрос.Выполнить(ТЗ)=0 Тогда

как вызываю запрос:

   Нач = НачалоНедели(НачалоНедели(ТекущаяДата())-1);
   Кон = НачалоНедели(ТекущаяДата())-1;
   ТЗ = "
   |с '"+Формат(Нач,"ДФ = дд.ММ.гг")+"' по '"+Формат(Кон,"ДФ = дд.ММ.гг")+"';
   |Без итогов;
   |Номенклатура = Регистр.Продажи.Номенклатура;
   |ПродСтоимость = Регистр.Продажи.ПродСтоимость;
   |ТекущийСтатус = Регистр.Продажи.Номенклатура.ТекущийСтатус;
   |Функция ПродСтоимостьСумма = Сумма(ПродСтоимость);
   |Группировка Номенклатура без групп;
   |Условие(ТекущийСтатус = Перечисление.ВидыТМЦ.Продукция);
   |"
   ;
   Если Запрос.Выполнить(ТЗ)=0 Тогда
       Сообщить("Запрос не прошел",СтатусСообщения.ОченьВажное);
       Возврат;
   КонецЕсли;
   

при этом запрос

   |Без итогов;
   |Номенклатура = Регистр.Продажи.Номенклатура;
   |ПродСтоимость = Регистр.Продажи.ПродСтоимость;
   |Функция ПродСтоимостьСумма = Сумма(ПродСтоимость);
   |Группировка Номенклатура без групп;

прокатывает.

может я чего забыл уже, давно по оле ничего не делал?
1 Fragster
 
гуру
19.03.10
12:40
^(
2 Fragster
 
гуру
19.03.10
12:54
ну напишите уже, в чем я лоханулся
3 Cube
 
19.03.10
13:01
Помню мучился, но не помню как решил...
Попробуй вместо

Перечисление.ВидыТМЦ.Продукция

написать

База77.Перечисления.ВидыТМЦ.Получить(ИНД)

где ИНД - число, индекс нужного значениея в перечислении

Хотя я не уверен...
4 Fragster
 
гуру
19.03.10
13:07
не, не гипотенуза
5 Fragster
 
гуру
19.03.10
13:30
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
6 Шурик71
 
19.03.10
13:58
Под рукой рабочего варианта нет, моделировать лень, но должно работать примерно так:

// до запроса

ЗначениеСтатуса = v77.evalexpr("Перечисление.ВидыТМЦ.Продукция");

// в запросе

Условие(ТекущийСтатус = ЗначениеСтатуса);
7 Fragster
 
гуру
19.03.10
14:31
(6) нифига
8 Шурик71
 
19.03.10
15:22
(7) держи. проверил. работает.

   // в v77 ссылка
   Запрос = v7.CreateObject("Запрос");
   ТипТовара = v7.evalexpr("Перечисление.ТипыТоваров.Собственный.ПорядковыйНомер()");
   
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |ТекущийЭлемент = Справочник.Номенклатура.ТекущийЭлемент;
   |Наименование = Справочник.Номенклатура.Наименование;
   |ТипТовара = Справочник.Номенклатура.ТипТовара;
   |ЕдиницаИзмерения = Справочник.Номенклатура.ЕдиницаИзмерения;
   |Функция Счётчик = Счётчик();
   |Группировка ТекущийЭлемент;
   |Условие(ТипТовара.ПорядковыйНомер() = "+ТипТовара+");
   |"//}}ЗАПРОС
   ;
9 Fragster
 
гуру
19.03.10
15:31
(8) спасибо... что-то я совсем старый стал уже. в пятницу моск не варит
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший