При выполнении COM соединения фоновым заданием по РАСПИСАНИЮ: "Ошибка при вызове метода контекста (Connect)"

1. machneff 44 06.04.20 09:30 Сейчас в теме
Добрый день, настраиваю обмен между двумя базами (платформа 1С 8.3.15.1830, базы файловые) столкнулся с такой проблемой: при выполнении обмена интерактивно (жму кнопку в дополнительной обработке, либо в списке регламентных заданий) - всё работает, при выполнении регламентным (фоновым) по расписанию - выдаёт ошибку: "Ошибка при вызове метода контекста (Connect)".

Что ей надо?)

Код подключения:

&НаСервере
Функция ПолучитьПодключениеКФайловойБД() 
	
	Если Режим Тогда
		ПараметрыПодключения = "File=""" + СокрЛП(ПутьКБазе) + """; Usr=""" + СокрЛП(Пользователь) + """; Pwd=""" + СокрЛП(Пароль) + """;";
	Иначе
		ПараметрыПодключения = "Srvr=""" + СокрЛП(ИмяСервера) + """; Ref=""" + СокрЛП(ИмяБазы) + """; Usr=""" + СокрЛП(Пользователь) + """; Pwd=""" + СокрЛП(Пароль) + """;";
	КонецЕсли;
	V83COMConnector= Новый COMОбъект("V83.COMConnector"); 
	
	Попытка 
		Возврат V83COMConnector.Connect(ПараметрыПодключения); 
	Исключение 
		ЗаписатьОтобразитьОшибку("Обмен БУХ - ЗУП (ошибка установки соединения)" , ИнформацияОбОшибке().Описание);
		Возврат Неопределено; 
	КонецПопытки; 
	
КонецФункции

Показать


Код инициализации обработки и порядок выполнения команды:

&НаСервере
Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("1.1.1.1");
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
	ПараметрыРегистрации.Версия = "1.1";
	ПараметрыРегистрации.БезопасныйРежим = Ложь;
	//Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина, Истина); 
	//ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
	
	СтрокаКоманды = ПараметрыРегистрации.Команды.Добавить();
	СтрокаКоманды.Представление = НСтр("ru = 'Выполнить обмен с ЗУП 3.1 (фоновое задание)'");
	СтрокаКоманды.Идентификатор = "ОбменЗУП_Регламент";
	СтрокаКоманды.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	СтрокаКоманды.ПоказыватьОповещение = Истина;
	
	СтрокаКоманды = ПараметрыРегистрации.Команды.Добавить();
	СтрокаКоманды.Идентификатор = Новый УникальныйИдентификатор;
	СтрокаКоманды.Представление = "Открыть настройки обмена с ЗУП 3.1";
	СтрокаКоманды.ПоказыватьОповещение = Истина;
	СтрокаКоманды.Использование = "ОткрытиеФормы";
	
	Возврат ПараметрыРегистрации;	
КонецФункции

&НаСервере
Процедура ВыполнитьКоманду(ИдентификаторКоманды,ПараметрыОбработки = Неопределено) Экспорт
	ВыполнитьРегламентноеЗадание();
КонецПроцедуры

&НаСервере
Процедура ВыполнитьРегламентноеЗадание() Экспорт

	ЗагрузитьНастройкиФормы();
	
	ВыполнитьОбмен();
			
КонецПроцедуры

&НаСервере
Процедура ВыполнитьОбмен() Экспорт

	КОМ = ПолучитьПодключениеКФайловойБД();
	Если КОМ = Неопределено Тогда
		Возврат;
	КонецЕсли;
        
       // ................

КонецПроцедуры

&НаСервере
Процедура ЗагрузитьНастройкиФормы()	
	Попытка	
		ХранилищеНастроек = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Выгрузка из БУХ в ЗУП").ХранилищеНастроек;
		Настройки = ХранилищеНастроек.Получить();		
		Если Настройки <> Неопределено Тогда
			ЗаполнитьЗначенияСвойств(ЭтотОбъект, Настройки);
		КонецЕсли;
	Исключение
			СписокСобытий = Новый СписокЗначений;
			СтруктураСобытия = Новый Структура;
			СтруктураСобытия.Вставить("ИмяСобытия", "Обмен с ЗУП (ошибка загрузки настроек)");
			СтруктураСобытия.Вставить("ПредставлениеУровня", "Ошибка");
			СтруктураСобытия.Вставить("Комментарий", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
			СписокСобытий.Добавить(СтруктураСобытия);
			ЖурналРегистрации.ЗаписатьСобытияВЖурналРегистрации(СписокСобытий);
	КонецПопытки;
КонецПроцедуры 
Показать
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
23. machneff 44 09.04.20 13:08 Сейчас в теме +2 $m
(18) Сделал отладку))

это же внешняя обработка, значит в общем модуле "ДополнительныеОтчетыИОбработки" через Расширение прописал мою обработку в наглую, чтобы пошла отладка...

Результат:
Регламентное задание по расписанию отработало без ошибок))

Вообщем варианты решения следующие:

1. Сделать обмен через регламентное задание конфигурации, а не внешнюю обработку
2. Сделать обертку "comcntr.dll" по примеру https://infostart.ru/public/610960/
3. Оставить костыль отладки))

Остановлюсь на первом
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Torin 747 06.04.20 09:47 Сейчас в теме
(1)
регламентным (фоновым)
- от чьего имени выполняются регламентные и фоновые задания !!!!
3. machneff 44 06.04.20 09:56 Сейчас в теме
Да, имя пользователя задал, со всеми разрешениями и отключенной "защитой от опасных действий"
Прикрепленные файлы:
5. chg 06.04.20 10:02 Сейчас в теме
(3)UAC на сервере(ах) не включен?
7. machneff 44 06.04.20 10:29 Сейчас в теме
(5) вполне возможно, прав на админство нет
9. machneff 44 06.04.20 11:10 Сейчас в теме
(8) к сожалению не мой случай
4. chg 06.04.20 09:58 Сейчас в теме
У пользователя фонового задания есть права на Внешнее соединение?
6. machneff 44 06.04.20 10:19 Сейчас в теме
10. machneff 44 06.04.20 13:06 Сейчас в теме
Создал регламентное задание в конфигураторе, процедура COM соединения отработала! Почему не работает через доп. обработку до сих пор не понятно(
11. Programmer_Ekatetina 18 07.04.20 01:36 Сейчас в теме
(10)

Попробуйте добавить в ПараметрыРегистрации внешней обработки:
ПараметрыРегистрации.ВерсияБСП = "1.2.1.4";
12. ben19791010 07.04.20 04:30 Сейчас в теме
13. Xershi 1484 07.04.20 08:44 Сейчас в теме
Возможно у вас 2 платформы.
Посмотри текст ошибки какой пишет.
В фоне код на сервере выполняется. Возможно нет компиляции.
16. machneff 44 08.04.20 07:51 Сейчас в теме
(13) да платформы две: 32ая и 64ая одной версии релиза... по техническим причинам нужны обе. возможно тут собака и зарыта. Зарегистрирована 32 ая
18. Xershi 1484 08.04.20 08:59 Сейчас в теме
(16)99% что в этом. Отладчик даст 100 % ответ.
21. machneff 44 08.04.20 10:29 Сейчас в теме
(18) да, сделаю отладку, результаты сообщу)
23. machneff 44 09.04.20 13:08 Сейчас в теме +2 $m
(18) Сделал отладку))

это же внешняя обработка, значит в общем модуле "ДополнительныеОтчетыИОбработки" через Расширение прописал мою обработку в наглую, чтобы пошла отладка...

Результат:
Регламентное задание по расписанию отработало без ошибок))

Вообщем варианты решения следующие:

1. Сделать обмен через регламентное задание конфигурации, а не внешнюю обработку
2. Сделать обертку "comcntr.dll" по примеру https://infostart.ru/public/610960/
3. Оставить костыль отладки))

Остановлюсь на первом
24. Xershi 1484 09.04.20 13:18 Сейчас в теме
(23) вероятно безопасный режим сработал. Пишите код правильно и проблем не будет.
14. KVIKS 399 07.04.20 13:09 Сейчас в теме
Dll какая зарегистрирована 32 или 64. Если сервер 64, а клиент 32, то фоновое задание всегда выполняется на сервере, и может зарегистрировать ту dll?
15. 1Eset 3 07.04.20 15:01 Сейчас в теме
Обычно он ругается, если не зарегистрирован V83.COMConnector, он у Вас зарегистрирован?
17. machneff 44 08.04.20 08:46 Сейчас в теме
Так фоновое задание у меня отрабатывается без ошибок, когда запускаю его интерактивно в списке регламентных заданий и оно, как я понимаю, выполняется на сервере. Но вот именно по расписанию выкидывает ошибку...
19. ben19791010 08.04.20 09:28 Сейчас в теме
20. machneff 44 08.04.20 10:26 Сейчас в теме
(19) (17) тут проблема что регламентное не запускается по расписанию, у меня запускается, но в процессе выполнения выдаёт ошибку
22. ben19791010 09.04.20 04:31 Сейчас в теме
(20) надо попробовать оставить только одну платформу и возможно станет яснее
Оставьте свое сообщение

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