Имя: Пароль:
1C
1С v8
Перенос по СОМ. Значение не является значением объектного типа (ОбменДанными)
0 1dvd
 
19.04.17
16:07
приветствую всех!

Необходимо по COM-соединению обновить некоторые реквизиты в некоторых справочниках. Реквизит1 - Строка(20)

УИД_БУХ = Бухгалтерия.NewObject("УникальныйИдентификатор",строка(Договор.УникальныйИдентификатор()));
Договор_БУХ = Бухгалтерия.Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(УИД_БУХ);
Договор_БУХ_Объект = Договор_БУХ.ПолучитьОбъект();
Договор_БУХ_Объект.ОбменДанными.Загрузка = Истина; // <--- Вот тут ругается
Договор_БУХ_Объект.Реквизит1 = Договор.Реквизит1;
Договор_БУХ_Объект.Записать();


{Форма.Форма.Форма(446)}: Значение не является значением объектного типа (ОбменДанными)
                        Договор_БУХ_Объект.ОбменДанными.Загрузка = Истина;

Что делаю не так?
1 DmitrO
 
19.04.17
16:10
Когда объекта с такой ссылкой нет, то ПолучитьОбъект возвращает Неопределено.
2 1dvd
 
19.04.17
16:11
(1) стоит проверка на это, про сто не стал весь код вываливать
3 1dvd
 
19.04.17
16:13
вот, более полный код:


УИД_БУХ = Бухгалтерия.NewObject("УникальныйИдентификатор",строка(Договор.УникальныйИдентификатор()));
Договор_БУХ = Бухгалтерия.Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(УИД_БУХ);

Если НЕ Договор_БУХ.Пустая() Тогда
    
    Если Не Договор.Реквизит1 = Договор_БУХ.Реквизит1 Тогда
        ДоговорБУХПоРеквизит1 = Бухгалтерия.Справочники.ДоговорыКонтрагентов.НайтиПоРеквизиту("Реквизит1", Договор.Реквизит1);
        Если ДоговорБУХПоРеквизит1.Пустая() Тогда
            Договор_БУХ_Объект = Договор_БУХ.ПолучитьОбъект();
            Договор_БУХ_Объект.ОбменДанными.Загрузка = Истина;
            Договор_БУХ_Объект.Реквизит1 = Договор.Реквизит1;
            Договор_БУХ_Объект.Записать();
4 drcrasher
 
19.04.17
16:14
Соединение = СтруктураОбмена.Соединение1С;
    
    Если УУИДНового <> "" Тогда
        ВнешнийУУИД = Соединение.newObject("УникальныйИдентификатор", Соединение.string(УУИДНового));
        Результат = Соединение.Справочники[ВидСправочника].ПолучитьСсылку(ВнешнийУУИД);
        Если Результат.ПолучитьОбъект() = Неопределено Тогда
            Если ЭтоГруппа Тогда
                Врем = Соединение.Справочники[ВидСправочника].СоздатьГруппу();
            Иначе
                Врем = Соединение.Справочники[ВидСправочника].СоздатьЭлемент();
            КонецЕсли;
            Врем.УстановитьСсылкуНового(Результат);
            Врем.УстановитьНовыйКод(СтруктураОбмена.Узел.ПрефиксВыгружаемыхОбъектов);
        Иначе
            Врем = Результат.ПолучитьОбъект();
        КонецЕсли;
    Иначе
        Если ЭтоГруппа Тогда
            Врем = Соединение.Справочники[ВидСправочника].СоздатьГруппу();
        Иначе
            Врем = Соединение.Справочники[ВидСправочника].СоздатьЭлемент();
        КонецЕсли;
        Врем.УстановитьНовыйКод(СтруктураОбмена.Узел.ПрефиксВыгружаемыхОбъектов);
    КонецЕсли;
    
    Врем.ОбменДанными.Загрузка = Истина;
    
    Возврат Врем;


подозреваю, что где-то в другом месте ошибка
5 mehfk
 
19.04.17
16:16
Чем черт не шутит, попробуй
ОбменДанными на DataExchange заменить.
6 Неверный Параметр И
 
19.04.17
16:18
1) Если НЕ Договор_БУХ.Пустая() Тогда
Это условие всегда выполняется.

2) Бухгалтерия.Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(УИД_БУХ);
всегда создает непустую ссылку. Возможно ее нет в базе, это второй вопрос. При этом Договор_БУХ.ПолучитьОбъект() вернет Неопределено.

3) Читайте СП, там иногда правду пишут.
7 1dvd
 
19.04.17
16:19
(4),(6) спасибо, так помогло:

УИД_БУХ = Бухгалтерия.NewObject("УникальныйИдентификатор",строка(Договор.УникальныйИдентификатор()));
Договор_БУХ = Бухгалтерия.Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(УИД_БУХ);

Если НЕ Договор_БУХ.Пустая() Тогда
    
    Если Не Договор.Реквизит1 = Договор_БУХ.Реквизит1 Тогда
        ДоговорБУХПоРеквизит1 = Бухгалтерия.Справочники.ДоговорыКонтрагентов.НайтиПоРеквизиту("Реквизит1", Договор.Реквизит1);
        Договор_БУХ_Объект = Договор_БУХ.ПолучитьОбъект();
        Если Не Договор_БУХ_Объект = Неопределено Тогда
            Договор_БУХ_Объект.ОбменДанными.Загрузка = Истина;
            Договор_БУХ_Объект.Реквизит1 = Договор.Реквизит1;
            Договор_БУХ_Объект.Записать();
8 Неверный Параметр И
 
19.04.17
16:21
(7) Не Договор_БУХ_Объект = Неопределено

Не Договор Не Бух Не Объект <> Не Определено