Интеграция 1С:Документооборот

1. Aliyah 27.06.23 15:49 Сейчас в теме
Доброго времени суток! Настроена интеграция в ЗУП 3.1 с ДО 2.1. Возникла необходимость создать алгоритм позволяющий, автоматически создавать документ на стороне 1С:ДО при проведении в ЗУП.

Использую следующую функцию из общего модуля:

Функция СоздатьОбъектДОПоПравилу(ОбъектИС, Правило) Экспорт

Прокси = ИнтеграцияС1СДокументооборотПовтИсп.ПолучитьПрокси();
ОбъектДОИлиСообщение = ИнтеграцияС1СДокументооборот.СоздатьОбъектДОПоПравилу(
Прокси, ОбъектИС, Правило);

Если ТипЗнч(ОбъектДОИлиСообщение) = Тип("Строка") Тогда
Возврат ОбъектДОИлиСообщение;
КонецЕсли;

Результат = Новый Структура;
Результат.Вставить("name", ОбъектДОИлиСообщение.name);
Результат.Вставить("ID", ОбъектДОИлиСообщение.objectID.ID);
Результат.Вставить("type", ОбъектДОИлиСообщение.objectID.type);

Возврат Результат;

КонецФункции

Проблема в том, что алгоритм работает только если выполнять его вручную. Когда же я его засунул в обработку, подключил регламентное задание, он перестает работать. Ругается мол : Интеграция с 1С:Документооборотом не настроена, или сервис
1С:Документооборота недоступен. Обратитесь к администратору.

Я так понимаю проблема в том что он берет данные авторизации из параметров текущего сеанса, ПараметрыСеанса.ИнтеграцияС1СДокументооборотИмяПользователя, вопрос как вручную прописать настройки прокси. Подкинуть нужного пользователя, чтобы он обращался через него. Может кто то сталкивался с подобной задачей? Как решили?

Функция ПолучитьПрокси(ВызыватьИсключение = Истина, ИмяПользователя = Неопределено, Пароль = Неопределено,
ИспользуетсяАутентификацияОС = Неопределено) Экспорт

// Получим настройки авторизации из параметров сеанса, если они не переданы параметрами функции.
Если ИспользуетсяАутентификацияОС = Неопределено Тогда
ИспользуетсяАутентификацияОС = ПараметрыСеанса.ИнтеграцияС1СДокументооборотИспользуетсяАутентификацияОС;
КонецЕсли;

Если ИмяПользователя = Неопределено Тогда
ИмяПользователя = ПараметрыСеанса.ИнтеграцияС1СДокументооборотИмяПользователя;
КонецЕсли;

Если Не ЗначениеЗаполнено(ИмяПользователя) И Не ИспользуетсяАутентификацияОС Тогда
Возврат Неопределено;
КонецЕсли;

Если Пароль = Неопределено Тогда
Если Не ПараметрыСеанса.ИнтеграцияС1СДокументооборотПарольИзвестен И Не ИспользуетсяАутентификацияОС Тогда
Возврат Неопределено;
КонецЕсли;
Пароль = ПараметрыСеанса.ИнтеграцияС1СДокументооборотПароль;
КонецЕсли;

МестоположениеWSDL = Константы.АдресВебСервиса1СДокументооборот.Получить();
Если ЗначениеЗаполнено(МестоположениеWSDL)
И Прав(МестоположениеWSDL, 1) <> "/"
И Прав(МестоположениеWSDL, 1) <> "\" Тогда
МестоположениеWSDL = МестоположениеWSDL + "/";
КонецЕсли;

// При необходимости создадим защищенное соединение. Используем сертификаты из хранилища
// Windows, если это имеет смысл для текущей платформы.
ЭтоСоединениеSSL = СтрНачинаетсяС(МестоположениеWSDL, "https");
Если ЭтоСоединениеSSL Тогда
Если СерверРаботаетПодWindows() Тогда
ЗащищенноеСоединение = ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение(
Новый СертификатКлиентаWindows(),
Новый СертификатыУдостоверяющихЦентровWindows());
Иначе
ЗащищенноеСоединение = ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение();
КонецЕсли;
Иначе
ЗащищенноеСоединение = Неопределено;
КонецЕсли;

ИнтернетПрокси = Неопределено;
ИнтеграцияС1СДокументооборотПереопределяемый.ПриПолученииWSПрокси(ИнтернетПрокси);

Попытка
Определения = Новый WSОпределения(МестоположениеWSDL + "ws/dm.1cws?wsdl",
ИмяПользователя,
Пароль,
ИнтернетПрокси,
ТаймаутСервиса(),
ЗащищенноеСоединение,
ИспользуетсяАутентификацияОС);
Исключение
Определения = Неопределено;
ТекстСообщенияОбОшибке = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;

Если Определения = Неопределено Тогда
Попытка
Определения = Новый WSОпределения(МестоположениеWSDL + "ws/DMService?wsdl",
ИмяПользователя,
Пароль,
ИнтернетПрокси,
ТаймаутСервиса(),
ЗащищенноеСоединение,
ИспользуетсяАутентификацияОС);
Исключение
Определения = Неопределено;
ТекстСообщенияОбОшибке = ТекстСообщенияОбОшибке
+ Символы.ПС
+ ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
КонецЕсли;

Если Определения = Неопределено Тогда
ЗаписьЖурналаРегистрации(
ИмяСобытияЖурналаРегистрации(),
УровеньЖурналаРегистрации.Ошибка,,,
ТекстСообщенияОбОшибке);
Если ВызыватьИсключение Тогда
ВызватьИсключение НСтр("ru = 'Ошибка подключения к 1С:Документообороту.
|
|Возможно, не прошла авторизация, указан неверный адрес веб-сервиса
|или база 1С:Документооборота не опубликована на веб-сервере.
|
|Подробности в журнале регистрации. Обратитесь к администратору системы.'");
Иначе
Возврат Неопределено;
КонецЕсли;
КонецЕсли;

Попытка
Прокси = Новый WSПрокси(Определения,
"http://www.1c.ru/dm",
"DMService",
"DMServiceSoap",
ИнтернетПрокси,
ТаймаутСервиса(),
ЗащищенноеСоединение,,
ИспользуетсяАутентификацияОС);
Исключение
Инфо = ИнформацияОбОшибке();
ЗаписьЖурналаРегистрации(
ИмяСобытияЖурналаРегистрации(),
УровеньЖурналаРегистрации.Ошибка,,,
ПодробноеПредставлениеОшибки(Инфо));
Если ВызыватьИсключение Тогда
ВызватьИсключение НСтр("ru = 'Ошибка подключения к 1С:Документообороту.
|
|Возможно, не прошла авторизация, указан неверный адрес веб-сервиса
|или база 1С:Документооборота не опубликована на веб-сервере.
|
|Подробности в журнале регистрации. Обратитесь к администратору системы.'");
Иначе
Возврат Неопределено;
КонецЕсли;
КонецПопытки;

Прокси.Пользователь = ИмяПользователя;
Прокси.Пароль = Пароль;

Возврат Прокси;

КонецФункции
По теме из базы знаний
Найденные решения
3. user1278383 5 28.06.23 08:37 Сейчас в теме
Нужна авторизация в ДО при запуске рег. задания. Не знаю какая у вас версия библиотеки интеграции, но я перед выполнение рег. задания делал так:
Если НЕ ПараметрыСеанса.ИнтеграцияС1СДокументооборотПарольИзвестен Тогда
		ИнтеграцияС1СДокументооборотБазоваяФункциональностьВызовСерв­ера.УстановитьНастройкиАвторизацииВПараметрыСеанса(
			Константы.ИнтеграцияС1СДокументооборотИмяПользователяДляОбмена.Получить(),
			Константы.ИнтеграцияС1СДокументооборотПарольДляОбмена.Получить(),
			ЛОжь,
			Ложь);   
		ИнтеграцияС1СДокументооборотБазоваяФункциональностьВызовСерв­ера.УстановитьВерсиюСервисаВПараметрыСеанса();	
	КонецЕсли;
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. laperuz 46 28.06.23 06:36 Сейчас в теме
У рег. задания в свойствах можно задать имя пользователя, от которого оно будет выполняться.
Прикрепленные файлы:
3. user1278383 5 28.06.23 08:37 Сейчас в теме
Нужна авторизация в ДО при запуске рег. задания. Не знаю какая у вас версия библиотеки интеграции, но я перед выполнение рег. задания делал так:
Если НЕ ПараметрыСеанса.ИнтеграцияС1СДокументооборотПарольИзвестен Тогда
		ИнтеграцияС1СДокументооборотБазоваяФункциональностьВызовСерв­ера.УстановитьНастройкиАвторизацииВПараметрыСеанса(
			Константы.ИнтеграцияС1СДокументооборотИмяПользователяДляОбмена.Получить(),
			Константы.ИнтеграцияС1СДокументооборотПарольДляОбмена.Получить(),
			ЛОжь,
			Ложь);   
		ИнтеграцияС1СДокументооборотБазоваяФункциональностьВызовСерв­ера.УстановитьВерсиюСервисаВПараметрыСеанса();	
	КонецЕсли;
4. Aliyah 30.06.23 10:03 Сейчас в теме
(3) Спасибо, большое! Помогло)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот