Имя: Пароль:
1C
1С v8
Внешний отчет и ругань на внешнее соединение
0 zippygrill
 
09.04.20
13:59
Всем привет!
Программно вызываю внешний дополнительный отчет. КОнфа 1С ERP
        ОбработкаСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта", ИмяОбъектаКакВСправочнике);
        ДвоичныеДанныеОбработки = ОбработкаСсылка.ХранилищеОбработки.Получить();
        ДвоичныеДанныеОбработки.Записать(ИмяВременногоФайлаОбработки);
        ВнешняяОбработкаОбъект = ВнешниеОбработки.Создать(ИмяВременногоФайлаОбработки);
        ИмяВыполняемойКоманды = "Идентификатор_ВедомостьПокупных";    
        
        ВнешняяОбработкаОбъект.ВыполнитьКоманду(ИмяВыполняемойКоманды, ПараметрыКоманды);

В ВыполнитьКоманду() есть внешнее подключение к другой базе через WS и ругается на WSОпределение. Ошибка при вызове конструктора (WSОпределения)

У пользователя от которого запущена все эта байда, снята галка "Защита от опасных действий" и стоит роль "Разрешить внешнее соединение"

Что еще посмотреть? В СведенияОВнешнейОбработке может какие особые разрешения вписать?

Пы.сы. Если отчет открыть через Файл - Открыть и сформировать , то подключение к другой базе проходит.
1 RomanYS
 
09.04.20
14:02
>>В СведенияОВнешнейОбработке может какие особые разрешения вписать?
Как минимум безопасный режим снять. Хотя ошибка странноватая
2 zippygrill
 
09.04.20
14:03
(1) Ужо есть

    ПараметрыРегистрации.БезопасныйРежим = Ложь;
3 RomanYS
 
09.04.20
14:07
(2) Значит проблема не в интерграции внешней обработки, а в самом конструкторе. Там как минимум один обязательный параметр. Текст ошибки?
4 zippygrill
 
09.04.20
14:15
(3) Вот не очень информативно..просто ошибка в конструкторе

{ВнешняяОбработка.ERP_Обработка_ВедомостьПокупных_РКМПоПериоду.МодульОбъекта(457)}: Ошибка при вызове конструктора (WSОпределения)
5 zippygrill
 
09.04.20
14:18
Весь этот код находится в модуле http сервиса. Подключение к этому http сервису идет также от имени пользователя у которого отключены опасные действия и разрешить внешние соединения.

ОбработкаСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта", ИмяОбъектаКакВСправочнике);
        ДвоичныеДанныеОбработки = ОбработкаСсылка.ХранилищеОбработки.Получить();
        ДвоичныеДанныеОбработки.Записать(ИмяВременногоФайлаОбработки);
        ВнешняяОбработкаОбъект = ВнешниеОбработки.Создать(ИмяВременногоФайлаОбработки);
        ИмяВыполняемойКоманды = "Идентификатор_ВедомостьПокупных";    
        
        ВнешняяОбработкаОбъект.ВыполнитьКоманду(ИмяВыполняемойКоманды, ПараметрыКоманды);
6 RomanYS
 
09.04.20
14:27
(5) Эээ.
Во-первых строку с конструктором мы так и не увидели.

Во-вторых (2) относится запуску из интерфейса. Ты же её кодом из файла запускаешь(забудь в такой ситуации про интеграцию БСП). У метода ВнешниеОбработки.Создать вроде должны быть параметры безопасного режима, могу ошибаться.
7 zippygrill
 
09.04.20
14:28
ВнешниеОбработкиМенеджер (ExternalDataProcessorsManager)
Создать (Create)
Вариант синтаксиса: По имени файла
Синтаксис:
Создать(<ПолноеИмяФайла>, <БезопасныйРежим>, <ЗащитаОтОпасныхДействий>)

СведенийОВнешнейОбработке() похоже фиолетово на ВнешниеОбработки.Создать(,БезопасныйРежим).
Указал истина в ВнешняяОбработкаОбъект = ВнешниеОбработки.Создать(ИмяВременногоФайлаОбработки,Истина);
Мне помогло
8 zippygrill
 
09.04.20
14:29
точнее указал Ложь
9 zippygrill
 
09.04.20
14:31
всем спс))