Имя: Пароль:
1C
1C 7.7
v7: Запрос к базе 7.7 через Оле
0 1С-ница
 
12.11.14
16:50
Платформа 7.70.027
Необходимо один отчет собрать из нескольких идентичных баз, принято решение делать это через Оле. Запрос был сначала отлажен для работы с обычной базой. Далее дорабатывался под Оле. Результат запроса получается пустым, т е одна строка там есть, но она пустая. Что не так с запросом?

Процедура ЗапросПоОказаниюУслуг(БазаОлЕ, Год)
    Перем ЗапросОле, ТекстЗапроса;
    //Создание объекта типа Запрос
    ЗапросОле = БазаОле.CreateObject("Запрос");
    
    ТекстЗапроса =
    "//{{ЗАПРОС(ЗапросПоОказаниюУслуг)
    //|Период с ВыбНачПериода по ВыбКонПериода;
    //|Период с '"+НачДата+ "' по '"+КонДата+"';
    //    |Период с НачалоГода по ДатаАктуальностиОле;
    |ТекущийДокумент = Регистр.ОказаниеУслуг.ТекущийДокумент;
    //|Основание = ТекущийДокумент.Основание;
    |Гость = Регистр.ОказаниеУслуг.Гость;
    //|Тип = Регистр.ОказаниеУслуг.ТипУслуги;
    |Услуга = Регистр.ОказаниеУслуг.Услуга;
    |ДатаР = Регистр.ОказаниеУслуг.Гость.ДатаРождения;
    |Сумма = Регистр.ОказаниеУслуг.Сумма;
    |Функция РасхСумма = Расход(Сумма);
    |Функция ПрихСумма = Приход(Сумма);
    //|Группировка ТекущийДокумент;
    //|Группировка Тип;
    |Группировка Гость упорядочить по Гость.Наименование Без Групп;
    |Группировка Услуга;
    |Условие (ТекущийДокумент.Вид()=""ДополнительныеУслугиПоФакту"");
    //|Условие(Гость.Город.Наименование В (Города));
    //    |Условие((ТекущаяДата()-ДатаР)>6570);
    |"//}}ЗАПРОС
    ;
    
    //    |Условие(ТекущийДокумент.Вид()=""ДополнительныеУслугиПоФакту"");
    Города = БазаОлЕ.CreateObject("СписокЗначений");
    Города.ДобавитьЗначение("Город1",);
    Города.ДобавитьЗначение("Город2",);
    
    НачалоГода = НачГода("01.01."+Год);
    ДатаАктуальностиОле = БазаОле.EvalExpr("ПолучитьДатуТА()");
    
    ТЗОле=БазаОле.CreateObject("ТаблицаЗначений");
    
    ЗапросОле.Выполнить(ТекстЗапроса);
    
    ЗапросОле.Выгрузить(ТЗОле);
    
    Сообщить("Количество строк: "+ТЗОле.КоличествоСтрок());

КонецПроцедуры
1 КонецЦикла
 
12.11.14
16:54
Периода нет совсем?
2 Злопчинский
 
12.11.14
16:55
Потому что при запросе к регистрам если не указан период то берется с ТА до ТА - вероятность что именно в ТА попадут все необходимые данные по ОБОРОТУ (приход и расход) - стремится к нулю
3 КонецЦикла
 
12.11.14
16:55
Вы выбрали наиболее тормознутый и проблемный для себя вариант
А ведь можно было нарыть и другую ссылку, там же, рядом:
http://1c911.by/stati_1s/statya-kak-ispolzovat-urbd-v-otlichayushchihsya-konfiguraciyah.htm
4 Злопчинский
 
12.11.14
16:55
(1) Опередун
5 Ёпрст
 
12.11.14
16:55
(0) на Дату ТА нет движений.
6 1С-ница
 
12.11.14
16:55
(1) На период ругается, отключила его временно
7 Злопчинский
 
12.11.14
16:56
(5) именно на дату ТА или на позицию ТА?
8 1С-ница
 
12.11.14
16:56
На ТА есть движения
9 Злопчинский
 
12.11.14
16:57
(6) потому что ты бяка.
формируй текст запроса сразу с нужными датами в периоде а не используй переменные, передаваемые из твоей базы в олебазу
10 1С-ница
 
12.11.14
16:57
(9) так у меня 9 баз, у каждой свой период
11 Злопчинский
 
12.11.14
16:59
Быстренько метнулся к ДенисуЧ и купил СП
.
"Если в описании запроса команда Период С опущена, то интервал дат формирования запроса устанавливается в точку актуальности итогов."
12 Ёпрст
 
12.11.14
16:59
(10) ну и ладно
13 1С-ница
 
12.11.14
16:59
Как тогда правильно дату указать?
14 Ёпрст
 
12.11.14
17:00
15 Злопчинский
 
12.11.14
17:01
(10) ну и что? у меня 3500 товаров разных и это не мешает их рассматривать ка кнекую общую сущность.
.
Вытаскивай из ОЛЕбазы нужные ДатыН и ДатаК в свою базу и подставляй сразу в текст запроса в кажду базу свои данные.
.
или в тексте ОЛЕзапроса используй переменнные, которые доступный в ОлеБазе и видны в твлей базе - например, глРасшифровка
16 КонецЦикла
 
12.11.14
17:01
(13) Мне интересен момент консолидации... как планируется получить сводный отчет? Ковырянием в ТЗ?
Если период какой-то текущий все время используется - его можно прошить в константах баз. НУ или в коде настройки предусмотреть... чужая база - потемки...
17 Злопчинский
 
12.11.14
17:02
(16) гораздо интереснее как они будут "консолидировать" одного и того же клиента в разных базах если эти клиенты не были "отпочкованы" во все базы из каког-то источника...
18 1С-ница
 
12.11.14
17:04
Результаты со всех баз планируется слить в одну ТЗ, которую потом отсортировать по Фио и остальным полям
19 1С-ница
 
12.11.14
17:07
С явным указанием дат все выгрузилось
20 1С-ница
 
12.11.14
17:27
И так тоже выгрузилось
|Период с '"+НачалоГода+ "' по '"+ДатаАктуальностиОле+"';
Только вот появилась проблема, описанная здесь:
1С 7.7 "Переключиться"
21 Ёпрст
 
12.11.14
17:32
(20)не пользуй оле, делов то
22 Злопчинский
 
12.11.14
17:33
(20) олебаза занята чем-то тяжелым...
23 КонецЦикла
 
12.11.14
18:15
(20) То ли еще будет...
У меня когда-то спрашивала не желаю ли установить рабочую дату. Поставил автоперевод.
24 Злопчинский
 
12.11.14
18:20
(23)_ у мну вообще ощущение, что те кто писал 1Ску 7.7 в т.ч. типовые - они вообще не предусматривали и не догадывались осознанно о возможности использования конфигурации в "пакетных" (не интерактивных) режимах выполнения.. иногда поубивать хочется...