Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Что не так с запросом через ОЛЮ?

v7: Что не так с запросом через ОЛЮ?
Я
   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) Не находит по коду в ОЛЕ-базе, не инициализируется переменная
   2S
 
2 - 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
используй экспортные глоб.переменные оле-базы и все.
   2S
 
5 - 07.10.17 - 17:31
(4) описал в оле базе
Перем СписокВР[1] Экспорт;
Перем СписокСотрудников[1] Экспорт;
   Злопчинский
 
6 - 07.10.17 - 17:35
вот насчет массивов не знаю, надо проверить.. по идее д.б. ок
   2S
 
7 - 07.10.17 - 17:37
(6) и я о том же
ладно, поковыряю, а то с этим в последний раз лет 5 назад сталкивался.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит Тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует