Имя: Пароль:
1C
Админ
Работа с запросами в ОЛЕ - ошибки
0 BUBU
 
21.08.13
14:13
Делаю запрос через ОЛЕ к другой базе (база ОЛЕ)
Вот его сформированный текст
текстзапроса=
"//{{ЗАПРОС(Сформировать)
Период с '01.08.13' по '05.08.13';
Фирма            = Регистр.Продажи.Фирма;
Покупатель     = Регистр.Продажи.Покупатель;
Номенклатура    = Регистр.Продажи.Номенклатура;                
основ_ = Регистр.Продажи.ТекущийДокумент;
Поставщик        = Регистр.Продажи.Поставщик;кол_=Регистр.Продажи.Количество;
Функция сумкол = Сумма(кол_);
колв_=регистр.Продажи.КоличествоВ;
Функция сумколв = Сумма(колв_);
ПродСт  = Регистр.Продажи.ПродСтоимость;
Функция СуммаПродСт  = Сумма(ПродСт);
ПродСтВ = Регистр.Продажи.ПродСтоимостьВ;
Функция СуммаПродСтВ = Сумма(ПродСтВ);
Группировка Покупатель упорядочить по Покупатель.Наименование без групп;
Группировка Номенклатура упорядочить по Номенклатура.Наименование без групп;
Группировка основ_;
Условие (Номенклатура.ПринадлежитГруппе(СпЗапроса[1].ПолучитьЗначение(1))=1);"

запрос=База.CreateObject("Запрос");
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;  

Механизм в "условии" надыбил на форуме.
Используется функции в глобальном модуле базы ОЛЕ,
В которых ищется и устанвливается группа справочника для поиска.

В вызывающей базе

База.EvalExpr(<строка>)

где База - это объект ОЛЕ, а строка сформирована так:

СкорректироватьСписок(1,2,"Справочник","Номенклатура","10001","Яшкино")
Таким образом устанавливается в базе ОЛЕ группа для поиска.
Далее делаю выборку обычным способом

Пока запрос.Группировка(1)=1 Цикл
    врем.НоваяСтрока();
    врем.контр = запрос.Покупатель.Код;
    врем.Наим=запрос.Покупатель.Наименование;
    врем.Кол = запрос.кол_;
    врем.Сумма =запрос.продст;
    // ит=ит+врем.Сумма;
    Пока запрос.Группировка(2)=1 Цикл
               и .д.
        конецЦикла    
конецЦикла

Все отрабатывает - но запрос врет !
Я делал такой же запрос без оле в приниющей базе - все нормально.
Причем по составу выбранных документов результаты совпадают,
а количество и сумма примерно в одном из пяти движений
(т.е. далеко не всех) - нет.
Более того, группировка(1) вытягивает вообще неизвестно что.
Может подскажете, что не так?
Или это вообще принципиально не работает ?
1 Ёпрст
 
21.08.13
14:14
>>>   врем.Сумма =запрос.продст;

вот это и есть п...ц
2 Ёпрст
 
21.08.13
14:15
надо смотреть на значения функций запроса, а не на переменные для расчета функций.
3 BUBU
 
21.08.13
14:26
Да, это кажется финиш ...