Имя: Пароль:
1C
1C 7.7
v7: Com соединение 1с 8.3 и 1с 7.7
, , ,
0 nadysaan
 
14.06.18
12:36
Добрый день. Помогите люди добрые. Через Com соединение подключаюсь в базе 1с 7.7. На семерошном запросе ошибка.
Запрос
    АвтомобильСОМ = в7.CreateObject("Справочник.Номенклатура");
    
    Если АвтомобильСОМ.НайтиПоРеквизиту("ВИН",Автомобиль.VIN, 1) = 1 тогда  
        Авто = АвтомобильСОМ.ТекущийЭлемент();
    КонецЕсли;
    
    Если Авто <> Неопределено Тогда
        начучета=НачалоГода(текущаядата());
        запрос = в7.CreateObject("Запрос");
        текстзап= "//{{ЗАПРОС(Сформировать)
        |ОбрабатыватьДокументы все;
        |Без итогов;
        |ЗаказНаряд = Документ.ЗаказНаряд.ТекущийДокумент,Документ.ПоступлениеТМЦ.ТекущийДокумент,
        |Документ.ПеремещениеТМЦ.ТекущийДокумент,Документ.Реализация.ТекущийДокумент,
        |Документ.КомплектацияТМЦ.ТекущийДокумент;
        |Подразделение = Документ.ЗаказНаряд.Склад,Документ.ПоступлениеТМЦ.Склад,
        |Документ.ПеремещениеТМЦ.СкладПолучатель,Документ.Реализация.Склад,
        |Документ.КомплектацияТМЦ.Склад;
        |Автомобиль = Документ.ЗаказНаряд.Автомобиль,Документ.ПоступлениеТМЦ.номенклатура,
        |Документ.ПеремещениеТМЦ.номенклатура,Документ.Реализация.номенклатура,
        |Документ.КомплектацияТМЦ.Комплект;
        |Группировка ЗаказНаряд;
        |Условие(Автомобиль = Авто);
        |";//}}ЗАПРОС
        
        если запрос.выполнить(текстзап)=0 тогда
            возврат;
        конецесли;
Ошибка
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(279)}: Ошибка при вызове метода контекста (выполнить)
        если запрос.выполнить(текстзап)=0 тогда
по причине:
Произошла исключительная ситуация (1С:Предприятие): Условие(Автомобиль = Авто <<?>> );
Запрос[14] : Ошибка в выражении 'Авто'
1 1Сергей
 
14.06.18
12:37
Потому, что так нельзя
2 nadysaan
 
14.06.18
12:40
Подскажите, как сделать отбор всех документов по одной машине?
3 hhhh
 
14.06.18
12:41
(0) вот это странное выражение

   Если Авто <> Неопределено Тогда

разве в семерке есть Неопределено ?
4 1Сергей
 
14.06.18
12:41
(2) в конфигурацию семерки можно вносить изменения?
5 nadysaan
 
14.06.18
12:42
да
6 hhhh
 
14.06.18
12:43
(2) может так?

      |Условие(Автомобиль.VIN = " + Автомобиль.VIN) + "
7 nadysaan
 
14.06.18
12:44
пробовала. тоже самое.
8 1Сергей
 
14.06.18
12:45
(5) Создай в глобальном модуле в самом верху переменную

Перем ПараметрыЗапроса Экспорт;


Потом в обработке

в7.ПараметрыЗапроса = в7.CreateObject("Массив");
в7.ПараметрыЗапроса[0] = Авто;

а в тексте запроса:

|Условие(Автомобиль = ПараметрыЗапроса[0]);
9 NikVars
 
14.06.18
12:48
(2) http://1c.moy.su/publ/vzaimodejstvie_cherez_ole/37-1-0-141
Тут есть чуток про работу с запросами
10 nadysaan
 
14.06.18
13:01
(8) спасибо, смысл поняла, попробую, когда пользователи закончат ностальгировать по 7.7 и выйдут из неё :)
11 NikVars
 
14.06.18
13:03
(10) Угу... Главное, сразу воевать в боевой базе. Ничего не пробуй в тестовых базах! Так что ли?!
12 nadysaan
 
14.06.18
13:05
(11) Она уже давно не работая, часть информации по какой-то неведомой мне причине не перенесли, вот пользователям и приходится заходить туда и смотреть старую информацию
13 nadysaan
 
14.06.18
13:06
(11) Не рабочая :)
14 1Сергей
 
14.06.18
13:13
(10) Писал по памяти, семерки нет под рукой. Возможно ещё сам массив надо будет в семерке создавать при старте
15 NikVars
 
14.06.18
13:24
(13) Ясно... Как 1С свои конфы пишет?! У них же нет данных пользователей со всей России по всем отраслям и всем базам... Фантастика!
16 nadysaan
 
14.06.18
13:35
(14)
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(262)}: Ошибка при вызове метода контекста (CreateObject)
        в7.ПараметрыЗапроса = в7.CreateObject("Массив");
по причине:
Произошла исключительная ситуация (1С:Предприятие): Неудачная попытка создания объекта (Массив): 0
17 mehfk
 
14.06.18
13:43
Не так массивы в семерке работают.
18 NikVars
 
14.06.18
15:57
(16) Мануал в помощь!
http://old.mista.ru/tutor_1c/
19 1Сергей
 
14.06.18
17:33
(16) Сорри. Массив создавать не надо. Его нужно правильно объявить

Перем ПараметрыЗапроса[365] Экспорт;
20 1Сергей
 
14.06.18
17:33
(18) нету там про объявление массивов
21 Birmingem
 
14.06.18
18:50
Предложенное в (6)
  |Условие(Автомобиль.VIN = " + Авто.VIN) + "
должно работать.

Или лучше так, если код в справочнике уникальный конечно:
  |Условие(Автомобиль.Код = " + Авто.Код) + "

Проверь в отладчике, что показывает: Авто.VIN или Авто.Код?
22 NikVars
 
15.06.18
10:20
(20) Не подсказывай! Пусть сама убедится!
23 nadysaan
 
15.06.18
12:41
(21) В том то и дело, что показывает просто COMОбъект и все
24 nadysaan
 
15.06.18
12:42
(22) Не надо подсказывать, я в первую очередь смотрела по отладчику
25 Salimbek
 
15.06.18
12:54
(23) Эм-м-м, Сообщить(Авто.VIN) - что напишет в окне сообщений? Просто через всякие ОЛЕ объекты передаются как COMОбъект, а вот простые типы - должны передаваться как и положено, как строки или числа. Разумеется, если нет Истории на этом реквизите.
26 nadysaan
 
15.06.18
14:16
(25) Авто.ВИН = "5KCYD4840EB401622        " Строка
27 Birmingem
 
15.06.18
14:22
(26) Ну вот, уже хорошо.
Теперь в запросе отключи строчку "|Условие(Автомобиль = Авто);"
И в цикле по группировке посмотри что покажет отладчик:
Запрос.Автомобиль.ВИН