![]() |
|
Перенос по СОМ. Значение не является значением объектного типа (ОбменДанными) | ☑ | ||
---|---|---|---|---|
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) Не Договор_БУХ_Объект = Неопределено
Не Договор Не Бух Не Объект <> Не Определено |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |