Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 ноя 2024, 21:18

1C 8.3 Ошибка при обращении к функции модуля объекта внешней обработки

Автор LordElf, 22 июн 2016, 08:23

0 Пользователей и 1 гость просматривают эту тему.

LordElf

Я уже убился, понять не могу проблему.
Имею: Общий модуль запускаемый на клиенте (обычное приложение), сервер 1С 8.3.8.1685
Там прописан текст:   
   ОтчетМакетИмяЭл = ПечОбъект.ПолучитьМакет(ИмяЭл);
   ИмяВременногоФайла = ПолучитьИмяВременногоФайла("epf");
        ОтчетМакетИмяЭл.Записать(ИмяВременногоФайла);
        ОбъектОтчетности = ВнешниеОбработки.Создать(ИмяВременногоФайла, ЛОЖЬ); //пробовал Создать(ИмяВременногоФайла);
        ТабДокумент = ОбъектОтчетности.Печать123(); //должен вернуться макет. Функция печать123() в модуле объекта Экспорт

        Так у меня, ОбъектОтчетности тип  ОбработкаОбъект
        вижу все реквизиты обработки в отладчике, могу программно даже форму открыть, она открывается, все в ней заполнено, единственное кнопка "Выполнить" на форме не активна, хотя закрыть -активна и работает...

        Но при ОбъектОтчетности.Печать123(); - вываливается ошибка - "Метод объекта не обнаружен (Печать23)"
        При этом код в 8.2 работает при тех-же условиях, запускаю на сервере 8.3 - не работает, на 8.2 - все отлично причем на 8.3 кроме этого никаких багов нет.
        Пробовал и профили безопасности на сервере делать, и в безопасном и привелегированном режиме запускать... всегда один и тот-же результат

Куда рыть??

LordElf

При этом внешние печ. формы подключенные во внешних отчетах и обработках выше писанным способом печатаются в 8.3... :dfbsdfbsdf: тоесть гдето есть какаято обвязка которая устанавливает контекст выполнения... Может кто наступал на подобные грабли?

LexaK

Объект с макетом где обработка, приложите, посмотрим.
если помогло нажмите: Спасибо!

LordElf

Вот пример. Выгрузил из макета. Не печатаются все формы, в 8.2 печатались. В 8.3 не печатается не одна. При этом внешние печатные формы из дополнительных отчетов и обработок печатаются на ура (КА 1.1). Но нужно свое, т.к. у нас распределенная БД со множеством узлов, они все простые, (собственная разработка) там делаются только определенные вещи (происходит отгрузка инертных материалов в автомобили со взвешиванием на весах, ну и управление всем этим хозяйством) все это сводится в центр, есть желание в центре перейти на новую типовую конфигурацию, но всплыла вот такая ерунда.... день голову ломаю к ответу не приблизился...

LexaK

хм, ну вы блин даете!
в вашей обработке НЕТ процедуры Печать123()
зато есть просто Печать()

поменяйте на такой код

ОтчетМакетИмяЭл = ПечОбъект.ПолучитьМакет(ИмяЭл);
        ИмяВременногоФайла = ПолучитьИмяВременногоФайла("epf");
        ОтчетМакетИмяЭл.Записать(ИмяВременногоФайла);
        ОбъектОтчетности = ВнешниеОбработки.Создать(ИмяВременногоФайла, ЛОЖЬ); //пробовал Создать(ИмяВременногоФайла);

        //нет такой процедуры Печать123
        //ТабДокумент = ОбъектОтчетности.Печать123(); //должен вернуться макет. Функция печать123() в модуле объекта Экспорт

        ТабДокумент = ОбъектОтчетности.Печать(); //так все работает

если помогло нажмите: Спасибо!

LordElf

Ну да, это я пока разбирался поменял. Думал, может из-за имени печать() глюк.  Код из одного места, а обработку из другого места приложил. а так-то там ОбъектОтчетности.печать() вызывалась в оригинале...  И функция печать, я для отладки на печать123() и там и там менял....

В общем победил!
Это обычный полтергейст аля 1с. Глюк платформы 8.3
Магическое заклинание (лекарство):
   ОбъектОтчетности = Неопределено;
Это надо перед кодом:
   ОбъектОтчетности = ВнешниеОбработки.Создать(ИмяВременногоФайла);

И тогда все работает.
Вдруг кому пригодится.

LexaK

только с таким вызовом, как в коде выше, у вас отчет не получится,
в обработке есть реквизит СсылкаНаОбъект, его необходимо заполнить.
тогда ваш код должен выглядеть примерно так,

    ОтчетМакетИмяЭл = ПечОбъект.ПолучитьМакет(ИмяЭл);
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("epf");
    ОтчетМакетИмяЭл.Записать(ИмяВременногоФайла);
    ОбъектОтчетности = ВнешниеОбработки.Создать(ИмяВременногоФайла, ЛОЖЬ); //пробовал Создать(ИмяВременногоФайла);

    ОбъектОтчетности.СсылкаНаОбъект = ССЫЛКА_НА_НУЖНЫЙ_ДОКУМЕНТ;   

    //нет такой процедуры Печать123
    //ТабДокумент = ОбъектОтчетности.Печать123(); //должен вернуться макет. Функция печать123() в модуле объекта Экспорт

    ТабДокумент = ОбъектОтчетности.Печать(); //так все работает


если помогло нажмите: Спасибо!

LordElf

Ну да, это я пока разбирался поменял. Думал, может из-за имени печать() глюк.  Код из одного места, а обработку из другого места приложил. а так-то там ОбъектОтчетности.печать() вызывалась в оригинале...  И функция печать, я для отладки на печать123() и там и там менял.... Из-за такой ерунды я бы день не потерял :) Если бы вызывалась печать123()а в обработке такой функции бы не было, то в 8.2 бы тоже не работало :D

В общем победил!
Это обычный полтергейст аля 1с. Глюк платформы 8.3
Магическое заклинание (лекарство):
   ОбъектОтчетности = Неопределено;
Это надо перед кодом:
   ОбъектОтчетности = ВнешниеОбработки.Создать(ИмяВременногоФайла);

И тогда все работает.
Вдруг кому пригодится.

LexaK

Вот и отлично, что все заработало! :zebzdr:

СПАСИБО - нажимать не забываем! :ooifh:


если помогло нажмите: Спасибо!

LordElf

В общем итог рабочий:


ОтчетМакетИмяЭл = ПечОбъект.ПолучитьМакет(ИмяЭл);
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("epf");
ОтчетМакетИмяЭл.Записать(ИмяВременногоФайла);

//Барабанная дробь, магическая строка, без нее не работает в 8.3
ОбъектОтчетности = Неопределено;
//Конец магической строки

ОбъектОтчетности = ВнешниеОбработки.Создать(ИмяВременногоФайла);
ОбъектОтчетности.СсылкаНаОбъект = ПечОбъект.Ссылка; //Это ссылка на печатаемый объект

ТабДокумент = ОбъектОтчетности.Печать();  //без магической строки выдававл ошибку. Что так мол и так: "{Модуль(НомерСтроки)}: Метод объекта не обнаружен (Печать)"



Всем спасибо за уделенное время. LexaK, спасибо ушло, хоть и не в этом проблема была, я сегодня добр и ласков ко всем :)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск