|
Ошибка. Метод (поле COM-объекта) не найден. | ☑ | ||
---|---|---|---|---|
0
Pro-tone
30.11.11
✎
09:17
|
УИ_Бух = СокрЛП(ДокСсылка.УИ_бухгалтерия);
Если НЕ ПустаяСтрока(УИ_Бух) Тогда //документ был выгружен уже ранее, обновим его тогда в бух Попытка БухДокументРеализация = ВнешняяБаза.Документы.РеализацияТоваровУслуг.ПолучитьСсылку(УИ_Бух); Исключение //в редких случаях ссылка генерится неверно, тогда пробуем искать по номеру НайденныйДок = ВнешняяБаза.Документы.РеализацияТоваровУслуг.НайтиПоНомеру(СокрЛП(ДокСсылка.Номер),ДокСсылка.Дата); Если НайденныйДок = Неопределено Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю(""); БухДокументРеализация = ВнешняяБаза.Документы.РеализацияТоваровУслуг.СоздатьДокумент(); Иначе БухДокументРеализация = НайденныйДок; КонецЕсли; КонецПопытки; Иначе БухДокументРеализация = ВнешняяБаза.Документы.РеализацияТоваровУслуг.СоздатьДокумент(); КонецЕсли; Если НЕ ЗначениеЗаполнено(ДокСсылка.Контрагент.УИ_1СБух) Тогда //если нет связи элемента в бух, то прерываем все ! ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Контрагент "+ДокСсылка.Контрагент.Наименование+" не связан с 1С:Бухгалтерия! |Выгрузка документа не возможна !"); Возврат; КонецЕсли; УИ_ВнешнСпрКонтрагенты = ВнешняяБаза.NewObject("УникальныйИдентификатор", ДокСсылка.Контрагент.УИ_1СБух); КонтрагентВнеш = ВнешняяБаза.Справочники.Контрагенты.ПолучитьСсылку(УИ_ВнешнСпрКонтрагенты); //РУГАЕТСЯ НА БухДокументРеализация.Контрагент - мол, метод "контрагент" не обнаружен !!! БухДокументРеализация.Контрагент = КонтрагентВнеш; Если ставим отладчиком на БухДокументРеализация.Контрагент, то видим нормальный COM-объект, но при обращении к нему в коде - ругается, что метод не найден. |
|||
1
Ненавижу 1С
гуру
30.11.11
✎
09:20
|
у тебя в зависимости от условий БухДокументРеализация это объект или ссылка, во втором случае его атрибуты только для чтения
|
|||
2
Pro-tone
30.11.11
✎
09:23
|
(1)
БухДокументРеализация = ВнешняяБаза.Документы.РеализацияТоваровУслуг.СоздатьДокумент(); по идее тут атрибуты БухДокументРеализация не должны быть только для чтения. Или я что-то не понимаю ? Как записать значение атрибута ? |
|||
3
чувак
30.11.11
✎
09:25
|
может так?
КонецПопытки; Иначе БухДокументРеализация = ВнешняяБаза.Документы.РеализацияТоваровУслуг.СоздатьДокумент(); БухДокументРеализация.Записать(); |
|||
4
Ненавижу 1С
гуру
30.11.11
✎
09:25
|
(2) тут то да, но...
уверен что именно эта ветка условий выполняется? |
|||
5
Ненавижу 1С
гуру
30.11.11
✎
09:26
|
УИ_Бух = СокрЛП(ДокСсылка.УИ_бухгалтерия);
Если НЕ ПустаяСтрока(УИ_Бух) Тогда //документ был выгружен уже ранее, обновим его тогда в бух Попытка БухДокументРеализация = ВнешняяБаза.Документы.РеализацияТоваровУслуг.ПолучитьСсылку(УИ_Бух).ПОЛУЧИТЬОБЪЕКТ(); Исключение //в редких случаях ссылка генерится неверно, тогда пробуем искать по номеру НайденныйДок = ВнешняяБаза.Документы.РеализацияТоваровУслуг.НайтиПоНомеру(СокрЛП(ДокСсылка.Номер),ДокСсылка.Дата).ПОЛУЧИТЬОБЪЕКТ(); Если НайденныйДок = Неопределено Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю(""); БухДокументРеализация = ВнешняяБаза.Документы.РеализацияТоваровУслуг.СоздатьДокумент(); Иначе БухДокументРеализация = НайденныйДок.ПОЛУЧИТЬОБЪЕКТ(); КонецЕсли; КонецПопытки; Иначе БухДокументРеализация = ВнешняяБаза.Документы.РеализацияТоваровУслуг.СоздатьДокумент(); КонецЕсли; |
|||
6
Pro-tone
30.11.11
✎
09:27
|
(4) не просто уверен, я проверял оба случая - когда получен существующий объект, и когда создаем с нуля его, в обоих случаях - "метод не найден" выдает
|
|||
7
Pro-tone
30.11.11
✎
09:31
|
(5) у меня сейчас случай создания нового документа, БухДокументРеализация = ВнешняяБаза.Документы.РеализацияТоваровУслуг.СоздатьДокумент();
а твой вариант только для уже полученной ссылки существующего, мне бы с новым сперва понять что не так |
|||
8
чувак
30.11.11
✎
09:36
|
А другие реквизиты попробуй заполнять программно. Ошибка повторяется?
|
|||
9
Pro-tone
30.11.11
✎
09:37
|
(5) щас глянул, вроде бы да, ты прав, получалась ссылка найденная по коду, эх не доглядел я )) а для нового документа все нормально там
вот подправил код УИ_Бух = СокрЛП(ДокСсылка.УИ_бухгалтерия); Если НЕ ПустаяСтрока(УИ_Бух) Тогда //документ был выгружен уже ранее, обновим его тогда в бух Попытка БухДокументРеализация = ВнешняяБаза.Документы.РеализацияТоваровУслуг.ПолучитьСсылку(УИ_Бух).ПолучитьОбъект(); Исключение //в редких случаях ссылка генерится неверно, тогда пробуем искать по номеру НайденныйДок = ВнешняяБаза.Документы.РеализацияТоваровУслуг.НайтиПоНомеру(СокрЛП(ДокСсылка.Номер),ДокСсылка.Дата).ПолучитьОбъект(); Если НайденныйДок = Неопределено Тогда //ну если уж совсем не получается найти, то просто очищаем наше поле "УИ бух в расходной накладной" //и создаем новый документ тогда уж //ОбщегоНазначенияКлиентСервер.СообщитьПользователю(""); БухДокументРеализация = ВнешняяБаза.Документы.РеализацияТоваровУслуг.СоздатьДокумент(); Иначе БухДокументРеализация = НайденныйДок; КонецЕсли; КонецПопытки; Иначе БухДокументРеализация = ВнешняяБаза.Документы.РеализацияТоваровУслуг.СоздатьДокумент(); КонецЕсли; //тут заполняем реквизиты шапки и табличной части !!! Если НЕ ЗначениеЗаполнено(ДокСсылка.Контрагент.УИ_1СБух) Тогда //если нет связи элемента в бух, то прерываем все ! ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Контрагент "+ДокСсылка.Контрагент.Наименование+" не связан с 1С:Бухгалтерия! |Выгрузка документа не возможна !"); Возврат; КонецЕсли; УИ_ВнешнСпрКонтрагенты = ВнешняяБаза.NewObject("УникальныйИдентификатор", ДокСсылка.Контрагент.УИ_1СБух); КонтрагентВнеш = ВнешняяБаза.Справочники.Контрагенты.ПолучитьСсылку(УИ_ВнешнСпрКонтрагенты); БухДокументРеализация.Контрагент = КонтрагентВнеш; Спасибо ! |
|||
10
Pro-tone
30.11.11
✎
09:40
|
(8) да, когда есть объект все верно, тогда на запись реквизиты доступны, ошибка была моя: я ранее для отладки в УИ_1СБух поставил набор ничего не значащих символов, поэтому искался документ по его номеру, возвращалась ссылка, а реквизиты в ней только на чтение как сказано было в (1)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |