![]() |
|
v7: Что не так с запросом через ОЛЮ? | ☑ | ||
---|---|---|---|---|
0
2S
07.10.17
✎
17:03
|
ДатаНачалаОтпускаОЛЕ = Дата1;
СпрСотрудникиОЛЕ = ОЛЕ.CreateObject("Справочник.Сотрудники"); Если СпрСотрудникиОЛЕ.НайтиПоКоду(ТекСотрудник.Код, 0) = 1 Тогда ТекСотрудникОЛЕ = СпрСотрудникиОЛЕ.ТекущийЭлемент(); КонецЕсли; ЗапросОЛЕ = ОЛЕ.CreateObject("Запрос"); ТекстЗапросаОЛЕ = "Период с '" + ДатаНачалаОтпускаОЛЕ + "' по '" + ДатаОкончанияОтпускаОЛЕ + "'; |ТекущийДокумент = ЖурналРасчетов.Зарплата.ТекущийДокумент; |ДатаНачала = ЖурналРасчетов.Зарплата.ДатаНачала; |ДатаОкончания = ЖурналРасчетов.Зарплата.ДатаОкончания; |Объект = ЖурналРасчетов.Зарплата.Объект; |ВидРасч = ЖурналРасчетов.Зарплата.ВидРасч.Код; |Дни = ЖурналРасчетов.Зарплата.Дни; |Результат = ЖурналРасчетов.Зарплата.Результат; |Функция ДниСумма = Сумма(Дни); |Функция РезультатВсего = Сумма(Результат); |Группировка Объект; |Группировка ВидРасч; |Группировка ТекущийДокумент; |Группировка ДатаНачала; |Группировка ДатаОкончания; |Условие(Объект = ТекСотрудникОЛЕ); |Условие((ВидРасч = ""ОтпускОчередной"") ИЛИ (ВидРасч = ""ОтпускДополнительный"") ИЛИ (ВидРасч = ""КомпенсацияОтпускаСверх28дней"") ИЛИ (ВидРасч = ""КомпенсацияОтпуска"")); |"//}}ЗАПРОС Если ЗапросОЛЕ.Выполнить(ТекстЗапросаОЛЕ) = 1 Тогда {C:\EXTFORMS\ОСТАТКИОТПУСКОВ.ERT(281)}: 1С:Предприятие: Условие(Объект = ТекСотрудникОЛЕ <<?>> ); Запрос[16] : Ошибка в выражении 'ТекСотрудникОЛЕ' Условие по видам расчетов неверно описал? |
|||
1
Смотрящий
07.10.17
✎
17:07
|
(0) Не находит по коду в ОЛЕ-базе, не инициализируется переменная
|
|||
2
2S
07.10.17
✎
17:27
|
переделал через массив
ОЛЕ.ExecuteBatch("СписокСотрудников[1] =СоздатьОбъект(""СписокЗначений"")"); СписокСотрудников = ОЛЕ.EvalExpr("СписокСотрудников[1]"); СпрСотрудникиОЛЕ = ОЛЕ.CreateObject("Справочник.Сотрудники"); Если СпрСотрудникиОЛЕ.НайтиПоКоду(ТекСотрудник.Код, 0) = 1 Тогда СписокСотрудников.ДобавитьЗначение(СпрСотрудникиОЛЕ.ТекущийЭлемент()); КонецЕсли; ОЛЕ.ExecuteBatch("СписокВР[1] =СоздатьОбъект(""СписокЗначений"")"); СписокВР = ОЛЕ.EvalExpr("СписокВР[1]"); СписокВР.ДобавитьЗначение(ОЛЕ.ВидРасчета.ОтпускОчередной); СписокВР.ДобавитьЗначение(ОЛЕ.ВидРасчета.ОтпускДополнительный); СписокВР.ДобавитьЗначение(ОЛЕ.ВидРасчета.КомпенсацияОтпускаСверх28дней); СписокВР.ДобавитьЗначение(ОЛЕ.ВидРасчета.КомпенсацияОтпуска); ЗапросОЛЕ = ОЛЕ.CreateObject("Запрос"); ТекстЗапросаОЛЕ = "Период с '" + ДатаНачалаОтпускаОЛЕ + "' по '" + ДатаОкончанияОтпускаОЛЕ + "'; |ТекущийДокумент = ЖурналРасчетов.Зарплата.ТекущийДокумент; |ДатаНачала = ЖурналРасчетов.Зарплата.ДатаНачала; |ДатаОкончания = ЖурналРасчетов.Зарплата.ДатаОкончания; |Объект = ЖурналРасчетов.Зарплата.Объект; |ВидРасч = ЖурналРасчетов.Зарплата.ВидРасч; |Дни = ЖурналРасчетов.Зарплата.Дни; |Результат = ЖурналРасчетов.Зарплата.Результат; |Функция ДниСумма = Сумма(Дни); |Функция РезультатВсего = Сумма(Результат); |Группировка Объект; |Группировка ВидРасч; |Группировка ТекущийДокумент; |Группировка ДатаНачала; |Группировка ДатаОкончания; |Условие (Объект в СписокСотрудников[1]); |Условие (ВидРасч в СписокВР[1]); |"//}}ЗАПРОС ; СписокСотрудников = ОЛЕ.EvalExpr("СписокСотрудников[1]"); {C:\ОСТАТКИОТПУСКОВ.ERT(257)}: 1С:Предприятие: 1 СписокСотрудников<<?>>[1] Переменная не объявлена как массив (СписокСотрудников) |
|||
3
Злопчинский
07.10.17
✎
17:28
|
Потому что тексотрудниколе будет иметь тип "ОЛЕ" и доступен в базе которая Инициирует подклцчение к ОЛЕ-базе, а в оле базе, где выполняется запрос - никакого ТеСотрудникОле нет, а должен иметь тип ссылка
надо сделать типа Оле.глРасшифровка = ОлеСправочникСотрудник.ТекущийЭлемент(); |Условие(Объект = глРасшифровка); |
|||
4
Злопчинский
07.10.17
✎
17:28
|
используй экспортные глоб.переменные оле-базы и все.
|
|||
5
2S
07.10.17
✎
17:31
|
(4) описал в оле базе
Перем СписокВР[1] Экспорт; Перем СписокСотрудников[1] Экспорт; |
|||
6
Злопчинский
07.10.17
✎
17:35
|
вот насчет массивов не знаю, надо проверить.. по идее д.б. ок
|
|||
7
2S
07.10.17
✎
17:37
|
(6) и я о том же
ладно, поковыряю, а то с этим в последний раз лет 5 назад сталкивался. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |