Имя: Пароль:
1C
1C 7.7
v7: OLE Запрос
0 Ainur
 
10.09.12
16:42
Доброго времени!!

Отправляю запрос через OLE.
Выполняю Запрос = БазаОле.CreateObject("Запрос")
В запросе есть условие с использованием константы и перечисления. С этими условиями не работает. Пробовал их глобальной переменной присвоить, тоже не помогает.
1 Ainur
 
10.09.12
16:42
Обе Базы 7.7
2 Lexusss
 
10.09.12
16:43
хммм... обе базы 7.7, в заголовке v8, откуда константы вообще не понятно...
3 Ainur
 
10.09.12
16:44
о да в семерке сейчас создам
4 DrShad
 
10.09.12
16:45
как передаешь константы и перечисления в параметры?
5 Rie
 
10.09.12
16:45
(3) Не надо плодить лишних веток.
6 DrShad
 
10.09.12
16:45
(3) не спеши, модеры перенесут
7 Rie
 
10.09.12
16:45
(0) Текст запроса показал бы. Глядишь - и вышло бы что полезное.
8 Ainur
 
10.09.12
16:46
ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с "+СокрЛП("'"+НачДата+"'")+" по "+СокрЛП("'"+КонДата+"'")+";
   |Обрабатывать НеПомеченныеНаУдаление;
   |ДатаДок = Документ.ПоступлениеТМЦ.ДатаДок, Документ.Реализация.ДатаДок;
   |Фирма = Документ.ПоступлениеТМЦ.Фирма, Документ.Реализация.Фирма;
   |КодОперации = Документ.ПоступлениеТМЦ.КодОперации, Документ.Реализация.КодОперации;
   |НомерДок = Документ.ПоступлениеТМЦ.НомерДок, Документ.Реализация.НомерДок;
   |Контрагент = Документ.ПоступлениеТМЦ.Контрагент, Документ.Реализация.Контрагент;
   |Код = Документ.ПоступлениеТМЦ.Контрагент.Код, Документ.Реализация.Контрагент.Код;
   |Количество = Документ.ПоступлениеТМЦ.Количество, Документ.Реализация.Количество;
   |Сумма = Документ.ПоступлениеТМЦ.Сумма, Документ.Реализация.Сумма;
   |СуммаНДС = Документ.ПоступлениеТМЦ.СуммаНДС, Документ.Реализация.СуммаНДС;
   |Расчет = Документ.ПоступлениеТМЦ.Контрагент.Расчет, Документ.Реализация.Контрагент.Расчет;
   |Функция КоличествоСумма = Сумма(Количество);
   |Функция СуммаСумма = Сумма(Сумма);
   |Функция СуммаНДССумма = Сумма(СуммаНДС);
   |Группировка ДатаДок;
   |Группировка КодОперации;
   |Группировка НомерДок;
   |Группировка Контрагент без групп;
   |Группировка Код;
   |Условие(Расчет = глБН);
   |Условие(Фирма =глОФ);
   |"//}}ЗАПРОС
   ;
9 Ёпрст
 
10.09.12
16:48
10 Ainur
 
10.09.12
16:48
А в начале
   глБН = БазаОле.глБезНал;
   глОФ = БазаОле.глОсновнаяФирма;
или то же самое
глБН = БазаОле.Перечисление.ВидРасчета.БезНал
глОф = БазаОле.Константа.ОсновнаяФирма
11 Ушкин
 
10.09.12
16:53
(10) БазаОле не знает переменую глБН
12 Ainur
 
10.09.12
16:54
Знает. В глобальном модуле присваивается
13 DrShad
 
10.09.12
16:54
(10) и как ты их в запрос передаешь?
14 Ainur
 
10.09.12
16:57
Текст запроса выше
15 Ainur
 
10.09.12
16:59
По идее и так должен работать

|Условие(Расчет = Перечисление.ВидРасчета.БезНал);
|Условие(Фирма =Константа.ОсновнаяФирма);
Он же там это все читает, мы же передаем только текст запроса. В нормальном режиме в ОЛЕ базе этот запрос работает
16 Rie
 
10.09.12
17:01
(12) Но в глобальном модуле у тебя переменная называется глБезНал, а в запросе стоит глБН. Которая из другой базы.
17 Ёпрст
 
10.09.12
17:02
глобальный массив спасёт.
18 Ainur
 
10.09.12
17:06
до запроса я пишу
глБН = БазаОле.глБезНал;
глОФ = БазаОле.глОсновнаяФирма;
19 Ainur
 
10.09.12
17:07
и в запросе писать
Расчет = Массив[1]?
20 Ушкин
 
10.09.12
17:08
(18) Если пишешь в ГМ то причем БазаОле , а если в модуле запроса то (11)
21 Ёпрст
 
10.09.12
17:10
(19)
как пример, фильтрация по списку (тебе проще - пихай не список , а само значение)


В оле базе

Перем СписокКлиентосов[1] Экспорт;

В обработине

ОЛЕ.ExecuteBatch("СписокКлиентосов[1] =СоздатьОбъект(""СписокЗначений"")");
м = ОЛЕ.EvalExpr("СписокКлиентосов[1]");
   
Спр = ОЛЕ.CreateObject("Справочник.Контрагенты");
Пока Спр.ПолучитьЭлемент() = 1 Цикл
  Если Спр.ЭтоГруппа()=0 Тогда
   м.ДобавитьЗначение(Спр.ТекущийЭлемент());
  КонецЕсли;
КонецЦикла;
Запрос = ОЛЕ.CreateObject("Запрос");
ТекстЗапроса = "
|Спр = Справочник.Номенклатура.ТекущийЭлемент;
|Условие (Спр в СписокКлиентосов[1]);
|Группировка Спр Без Групп;";
Запрос.Выполнить(ТекстЗапроса);
Пока Запрос.Группировка(1)=1 Цикл
   Сообщить(Запрос.Спр.Наименование);
КонецЦикла;
22 Ainur
 
10.09.12
17:19
Где то я это уже видел.
В глобальнике ОЛЕ базы пишу функцию, которая возвращает массив с моим перечислением и константой.
а здесь в запросе пишу
|Условие(Расчет в Массив);
|Условие(Фирма в Массив);
Так?
23 Ёпрст
 
10.09.12
17:38
(22) я ж те дал пример :)

в оле базе только объявление массива и всё.
т.е в глобальничке

Перем ТвойМассив[1] Экспорт;

нужно воткнуть.

Сам массив потом создаешь в обработине и заполняешь
24 Ainur
 
10.09.12
17:45
Да все получилось спасибо!!!!! Запрос только элементы не получает, осталос. везде прописать ".Наименование"
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.