Имя: Пароль:
1C
1C 7.7
v7: Не выплняется запрос по документам
0 Tihon_aka_kot
 
21.07.19
15:15
Один и тот же запрос выполняется во внешней обработке и не выполняется в глобальном модуле при подключении по OLE
С подключением все хорошо. К другим документам запрос проходит. В чем может быть причина такого поведения (7ку знаю плохо)
вот сам запрос

Функция глПолучитьРасходнаяНакладная() Экспорт      
    Перем Запрос, ТекстЗапроса;
    ВыбНачПериода = ТекущаяДата()-40;  
    ВыбКонПериода = ТекущаяДата()+10;  
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ОбрабатыватьДокументы все;
    |Док = Документ.РасходнаяНАкладная.ТекущийДокумент;
    |Группировка Док без групп;
    |Условие(Док.ВыгрузитьВ83 = 1);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат "Ошибка запроса";
    КонецЕсли;
    
    Возврат Запрос;  
КонецФункции

Падает в ошибку запроса.
1 Cthulhu
 
21.07.19
15:17
добавь функцию в текст запроса.
2 Cthulhu
 
21.07.19
15:18
ну и ошибка там какая?
3 Tihon_aka_kot
 
21.07.19
15:20
(1) похоже что реквизит "ВыгрузитьВ83" который я добавил как то некоректно записался в БД. Щас я его удалил и заново добавил. - и все пошло как надо))) мистика.
4 Tihon_aka_kot
 
21.07.19
15:21
(1) а зачем там ф-ции?
5 Tihon_aka_kot
 
21.07.19
16:01
(2) В этомместе исправилась - теперь в другом полезла. Ошибка = "ошибка запроса". Как будто в тексте ошибка
6 hhhh
 
21.07.19
16:08
(5) а там есть это текст разве?
7 Tihon_aka_kot
 
21.07.19
16:25
(6)     |Условие(Док.ВыгрузитьВ83 = 1);
да есть
такое ощущение что лихорадит БД (файловая)
Починилось в одном месте и отвалилось в другом
Подклчеине по OLE, поочереди вызываются разные процедуры в 7ке
ХЗ куда копать, какаято дроч
8 Cthulhu
 
21.07.19
17:02
по ОЛЕ сквозная универсальная рекомендация: использовать анг.нотацию в ключевых словах и названиях методов 1с.
9 Tihon_aka_kot
 
21.07.19
17:34
(8) Я использую такой принцип:
из 8ки по OLE вызываю функцию в 7ке которая например отдает мне таблицу значений.
В 8ке перебираю ее и делаюто что мне нужно.
Так вот эта функция в 7ке должна выполнить запрос. И по ОЛЕ он не выполняется. Сейчас конечно перепишу все наименования ф-й на анл но дума что проблема в другом
10 Tihon_aka_kot
 
21.07.19
17:57
(8) Заметил такую особенность: я помещаю ОЛЕобъект в глобальную переменную модуля и работаю с объектом выборки (Запрос, после Запрос.Выполнить()).
Так вот крашится именно вторая процедура.
Меняю их местами - крашится вторая.
11 Tihon_aka_kot
 
21.07.19
18:03
//вот ф-я в 7ке которую вызываю по ОЛЕ.
//она отдает выборку. Я ее в 8ке перебираю.
//Так вот именно второй раз ткаая же процедура но к другому документы крашится. Запрос не может выполнится, как будто какято ошибка в ////тексте. Но если я выполняю его изпод 7ки без ОЛЕ - то все ок.
Функция глПолучитьПриходнаяНакладная(ДатаЗагрузки)   Экспорт
    Перем Запрос, ТекстЗапроса;
    Статус = 1;    
    ДатаНач = ДатаЗагрузки;
    ДатаКон = ТекущаяДата();
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(СформироватьДок)
    |Период с ДатаНач по ДатаКон;
    |ОбрабатыватьДокументы все;
    |Док = Документ.ПриходнаяНакладная.ТекущийДокумент;
    |Группировка Док без групп;
    |Условие(Док.ВыгрузитьВ83=Статус);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат "Ошибка запроса";
    КонецЕсли;
    
    Возврат Запрос;  
    
КонецФункции
12 Tihon_aka_kot
 
21.07.19
18:15
По ходу нашел. Проблема была в том что все переменные в запросе по документу в завпросе в 77 у меня назывались "док"

|Док = Документ.ПриходнаяНакладная.ТекущийДокумент;

и видимо в сл запросе он не переопределял ее поэтому и ошибался при выполнении.
13 ДенисЧ
 
21.07.19
18:32
картинка facepalm.png
14 Tihon_aka_kot
 
23.07.19
13:07
(13) эфект временный. хз. бывает срабатывает - бывает нет
15 Z1
 
23.07.19
13:29
(0) убери слово "без групп"
для группировки по документам это не нужно
16 Bagirius
 
01.08.19
23:32
(15) +
(1) - есть такое в v7, без функций запросы пустые получаются, надо добавлять хотя-бы:
Функция СЧ = Счётчик(Док);
17 Bagirius
 
01.08.19
23:36
|Период с ВыбНачПериода по ВыбКонПериода;
    |ОбрабатыватьДокументы все;
    |Док = Документ.РасходнаяНакладная.ТекущийДокумент;
    |ВыгрузитьВ83 = Документ.РасходнаяНакладная.ВыгрузитьВ83;
    |Группировка Док;
    |Условие(ВыгрузитьВ83 = 1);


ХЗ, но так красивее, и должно летать
18 Bagirius
 
01.08.19
23:38
+ к (17), по примеру (16) на счет функции не уверен, но если что, надо добавить

|Период с ВыбНачПериода по ВыбКонПериода;
    |ОбрабатыватьДокументы все;
    |Док = Документ.РасходнаяНакладная.ТекущийДокумент;
    |ВыгрузитьВ83 = Документ.РасходнаяНакладная.ВыгрузитьВ83;
    |Функция СЧ = Счётчик(Док);
    |Группировка Док;
    |Условие(ВыгрузитьВ83 = 1);
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.