Добрый день, настраиваю обмен между двумя базами (платформа 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";
СтрокаКоманды.ПоказыватьОповещение = Истина;
СтрокаКоманды.Использование = "ОткрытиеФормы";
Возврат ПараметрыРегистрации;
КонецФункции
&НаСервере
Процедура ВыполнитьКоманду(ИдентификаторКоманды,ПараметрыОбработки = Неопределено) Экспорт
ВыполнитьРегламентноеЗадание();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьРегламентноеЗадание() Экспорт
ЗагрузитьНастройкиФормы();
ВыполнитьОбмен();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьОбмен() Экспорт
КОМ = ПолучитьПодключениеКФайловойБД();
Если КОМ = Неопределено Тогда
Возврат;
КонецЕсли;
// ................
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьНастройкиФормы()
Попытка
ХранилищеНастроек = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Выгрузка из БУХ в ЗУП").ХранилищеНастроек;
Настройки = ХранилищеНастроек.Получить();
Если Настройки <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Настройки);
КонецЕсли;
Исключение
СписокСобытий = Новый СписокЗначений;
СтруктураСобытия = Новый Структура;
СтруктураСобытия.Вставить("ИмяСобытия", "Обмен с ЗУП (ошибка загрузки настроек)");
СтруктураСобытия.Вставить("ПредставлениеУровня", "Ошибка");
СтруктураСобытия.Вставить("Комментарий", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
СписокСобытий.Добавить(СтруктураСобытия);
ЖурналРегистрации.ЗаписатьСобытияВЖурналРегистрации(СписокСобытий);
КонецПопытки;
КонецПроцедуры
это же внешняя обработка, значит в общем модуле "ДополнительныеОтчетыИОбработки" через Расширение прописал мою обработку в наглую, чтобы пошла отладка...
Результат:
Регламентное задание по расписанию отработало без ошибок))
Вообщем варианты решения следующие:
1. Сделать обмен через регламентное задание конфигурации, а не внешнюю обработку
2. Сделать обертку "comcntr.dll" по примеру https://infostart.ru/public/610960/ 3. Оставить костыль отладки))
это же внешняя обработка, значит в общем модуле "ДополнительныеОтчетыИОбработки" через Расширение прописал мою обработку в наглую, чтобы пошла отладка...
Результат:
Регламентное задание по расписанию отработало без ошибок))
Вообщем варианты решения следующие:
1. Сделать обмен через регламентное задание конфигурации, а не внешнюю обработку
2. Сделать обертку "comcntr.dll" по примеру https://infostart.ru/public/610960/ 3. Оставить костыль отладки))
Так фоновое задание у меня отрабатывается без ошибок, когда запускаю его интерактивно в списке регламентных заданий и оно, как я понимаю, выполняется на сервере. Но вот именно по расписанию выкидывает ошибку...