Интеграция 1С:Документооборот
Доброго времени суток! Настроена интеграция в ЗУП 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С:Документооборота не опубликована на веб-сервере.
|
|Подробности в журнале регистрации. Обратитесь к администратору системы.'");
Иначе
Возврат Неопределено;
КонецЕсли;
КонецПопытки;
Прокси.Пользователь = ИмяПользователя;
Прокси.Пароль = Пароль;
Возврат Прокси;
КонецФункции
Использую следующую функцию из общего модуля:
Функция СоздатьОбъектДОПоПравилу(ОбъектИС, Правило) Экспорт
Прокси = ИнтеграцияС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С:Документооборота не опубликована на веб-сервере.
|
|Подробности в журнале регистрации. Обратитесь к администратору системы.'");
Иначе
Возврат Неопределено;
КонецЕсли;
КонецПопытки;
Прокси.Пользователь = ИмяПользователя;
Прокси.Пароль = Пароль;
Возврат Прокси;
КонецФункции
По теме из базы знаний
- 1С:Документооборот 8 – цена на лицензии КОРП, ПРОФ и ДГУ от 48500 руб.
- Видеокурс-самоучитель "1С:Документооборот 2.1 и 3.0" для самостоятельного внедрения
- Доменная аутентификация ОС при бесшовной интеграции 1С:Документооборот 8 КОРП, редакция 2.1 и 1С:ERP Управление предприятием 2 (в клиент-серверном режиме)
- Интеграция 1С: Документооборот 8, (редакция 2.1) с доменом /active directory для автоматического подключения / отключения пользователей
- 1С:Документооборот КОРП. Интеграция vs синхронизация. Бесшовная интеграция
Найденные решения
Нужна авторизация в ДО при запуске рег. задания. Не знаю какая у вас версия библиотеки интеграции, но я перед выполнение рег. задания делал так:
Если НЕ ПараметрыСеанса.ИнтеграцияС1СДокументооборотПарольИзвестен Тогда
ИнтеграцияС1СДокументооборотБазоваяФункциональностьВызовСерв ера.УстановитьНастройкиАвторизацииВПараметрыСеанса(
Константы.ИнтеграцияС1СДокументооборотИмяПользователяДляОбмена.Получить(),
Константы.ИнтеграцияС1СДокументооборотПарольДляОбмена.Получить(),
ЛОжь,
Ложь);
ИнтеграцияС1СДокументооборотБазоваяФункциональностьВызовСерв ера.УстановитьВерсиюСервисаВПараметрыСеанса();
КонецЕсли;
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Нужна авторизация в ДО при запуске рег. задания. Не знаю какая у вас версия библиотеки интеграции, но я перед выполнение рег. задания делал так:
Если НЕ ПараметрыСеанса.ИнтеграцияС1СДокументооборотПарольИзвестен Тогда
ИнтеграцияС1СДокументооборотБазоваяФункциональностьВызовСерв ера.УстановитьНастройкиАвторизацииВПараметрыСеанса(
Константы.ИнтеграцияС1СДокументооборотИмяПользователяДляОбмена.Получить(),
Константы.ИнтеграцияС1СДокументооборотПарольДляОбмена.Получить(),
ЛОжь,
Ложь);
ИнтеграцияС1СДокументооборотБазоваяФункциональностьВызовСерв ера.УстановитьВерсиюСервисаВПараметрыСеанса();
КонецЕсли;
(3)
Спасибо большое, помогло - после обновления на БИД с поддержкой ДО3.
Если НЕ ПараметрыСеанса.ИнтеграцияС1СДокументооборотПарольИзвестен Тогда
ИнтеграцияС1СДокументооборотБазоваяФункциональностьВызовСерв ера.УстановитьНастройкиАвторизацииВПараметрыСеанса(
Константы.ИнтеграцияС1СДокументооборотИмяПользователяДляОбмена.Получить(),
Константы.ИнтеграцияС1СДокументооборотПарольДляОбмена.Получить(),
ЛОжь,
Ложь);
ИнтеграцияС1СДокументооборотБазоваяФункциональностьВызовСерв ера.УстановитьВерсиюСервисаВПараметрыСеанса();
КонецЕсли;
ИнтеграцияС1СДокументооборотБазоваяФункциональностьВызовСерв
Константы.ИнтеграцияС1СДокументооборотИмяПользователяДляОбмена.Получить(),
Константы.ИнтеграцияС1СДокументооборотПарольДляОбмена.Получить(),
ЛОжь,
Ложь);
ИнтеграцияС1СДокументооборотБазоваяФункциональностьВызовСерв
КонецЕсли;
Спасибо большое, помогло - после обновления на БИД с поддержкой ДО3.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот