OLE объекты. Запросы. Как передать дату в запросе?
05.10.2005
12:03
#1
"Данный запрос работает замечательно:
Запрос = V7.CreateObject("Запрос");
ТекстЗапроса= "
|Период с '01.01.2005';
|Док= Документ.ПКО.ТекущийДокумент;
|ГРУППИРОВКА Док;
|";
Запрос.выполнить(ТекстЗапроса);
Но как передать дату???
Следующий запрос уже не работает
"ошибка в выражении 'Дата1'"
Дата1 = '01.01.2005';
ТекстЗапроса= "
|Период с Дата1;
|Док= Документ.ПКО.ТекущийДокумент;
|ГРУППИРОВКА Док;
|";
"
Запрос = V7.CreateObject("Запрос");
ТекстЗапроса= "
|Период с '01.01.2005';
|Док= Документ.ПКО.ТекущийДокумент;
|ГРУППИРОВКА Док;
|";
Запрос.выполнить(ТекстЗапроса);
Но как передать дату???
Следующий запрос уже не работает
"ошибка в выражении 'Дата1'"
Дата1 = '01.01.2005';
ТекстЗапроса= "
|Период с Дата1;
|Док= Документ.ПКО.ТекущийДокумент;
|ГРУППИРОВКА Док;
|";
"
05.10.2005
19:30
#2
"Добрый день.
Попробуйте так:
Дата1 = Дата(01.01.2005);
ТекстЗапроса= "
|Период с Дата1;
|Док= Документ.ПКО.ТекущийДокумент;
|ГРУППИРОВКА Док;
|"; "
Попробуйте так:
Дата1 = Дата(01.01.2005);
ТекстЗапроса= "
|Период с Дата1;
|Док= Документ.ПКО.ТекущийДокумент;
|ГРУППИРОВКА Док;
|"; "
09.10.2005
14:33
#3
Я тоже заметил, что OLE-объекты "по-умолчанию" или "упрощенных" значений не понимают. Если, например, написано в конфигураторе "Можно не ставить, по умолчанию значение такое-то...". На OLE это может не работать. Тоже самое с типом значения.
11.10.2005
16:27
#4
"Очень просто. Дата в OLE передается напрямую, хотя я передавал и более сложные типы данных.
В данном случае рекомендую
ТекстЗапроса= "
|Период с '"+Строка(Дата1)+"';
|Док= Документ.ПКО.ТекущийДокумент;
|ГРУППИРОВКА Док;
|";"
В данном случае рекомендую
ТекстЗапроса= "
|Период с '"+Строка(Дата1)+"';
|Док= Документ.ПКО.ТекущийДокумент;
|ГРУППИРОВКА Док;
|";"
11.10.2005
16:37
#5
"Кстати тип значения в OLE можно получить обращаясь к процедуре ЗначениеВСтроку, а не ТипЗначения или ТипЗначенияСтр.
Например:
ТипОбъектаТорговли = """";
ВидОбъектаТорговли = """";
ПредставлениеТорговли = """";
ЭтоГруппаВТорговли = 0;
СтрокаТипа = СтрЗаменить(глБаза.ЗначениеВСтроку(ОбъектТорговли),"""","""");
Если (СтрЧислоВхождений(СтрокаТипа,"{") > 1) или (СтрокаТипа = "{}") Тогда
// Объект в торговли либо типа Списка значений, таблица Значений и прочих составных типов
// или Неопределенного типа - А также периодический реквизит
Возврат ПустойОбъект;
КонецЕсли;
СтрокаТипа = СтрЗаменить(СтрокаТипа,"{","""");
СтрокаТипа = СтрЗаменить(СтрокаТипа,"}","""");
СписокТипов = СоздатьОбъект("СписокЗначений");
Для Инд = 1 По СтрЧислоВхождений(СтрокаТипа,",")+1 Цикл
Позиция = Найти(СтрокаТипа,",");
Если Позиция=0 Тогда
СписокТипов.ДобавитьЗначение(СтрокаТипа);
Прервать;
КонецЕсли;
СписокТипов.ДобавитьЗначение(Лев(СтрокаТипа,Позиция-1));
СтрокаТипа = Сред(СтрокаТипа,Позиция+1);
КонецЦикла;
ТипОбъектаТорговли = СписокТипов.ПолучитьЗначение(1);
Если СписокТипов.РазмерСписка() > 1 Тогда
ВидОбъектаТорговли = СписокТипов.ПолучитьЗначение(2);
КонецЕсли;
Если СписокТипов.РазмерСписка() > 2 Тогда
ПредставлениеТорговли = СписокТипов.ПолучитьЗначение(3);
КонецЕсли;
Если (ТипОбъектаТорговли = "Справочник") или ((ТипОбъектаТорговли = "Документ")) Тогда
ВидОбъектаТорговли = ОбъектТорговли.Вид();
КонецЕсли;
"
Например:
ТипОбъектаТорговли = """";
ВидОбъектаТорговли = """";
ПредставлениеТорговли = """";
ЭтоГруппаВТорговли = 0;
СтрокаТипа = СтрЗаменить(глБаза.ЗначениеВСтроку(ОбъектТорговли),"""","""");
Если (СтрЧислоВхождений(СтрокаТипа,"{") > 1) или (СтрокаТипа = "{}") Тогда
// Объект в торговли либо типа Списка значений, таблица Значений и прочих составных типов
// или Неопределенного типа - А также периодический реквизит
Возврат ПустойОбъект;
КонецЕсли;
СтрокаТипа = СтрЗаменить(СтрокаТипа,"{","""");
СтрокаТипа = СтрЗаменить(СтрокаТипа,"}","""");
СписокТипов = СоздатьОбъект("СписокЗначений");
Для Инд = 1 По СтрЧислоВхождений(СтрокаТипа,",")+1 Цикл
Позиция = Найти(СтрокаТипа,",");
Если Позиция=0 Тогда
СписокТипов.ДобавитьЗначение(СтрокаТипа);
Прервать;
КонецЕсли;
СписокТипов.ДобавитьЗначение(Лев(СтрокаТипа,Позиция-1));
СтрокаТипа = Сред(СтрокаТипа,Позиция+1);
КонецЦикла;
ТипОбъектаТорговли = СписокТипов.ПолучитьЗначение(1);
Если СписокТипов.РазмерСписка() > 1 Тогда
ВидОбъектаТорговли = СписокТипов.ПолучитьЗначение(2);
КонецЕсли;
Если СписокТипов.РазмерСписка() > 2 Тогда
ПредставлениеТорговли = СписокТипов.ПолучитьЗначение(3);
КонецЕсли;
Если (ТипОбъектаТорговли = "Справочник") или ((ТипОбъектаТорговли = "Документ")) Тогда
ВидОбъектаТорговли = ОбъектТорговли.Вид();
КонецЕсли;
"
Читают тему
(гостей: 1)