Имя: Пароль:
1C
1С v8
Регламентное задание и COM соединение
0 ixilimuse
 
06.02.14
08:54
Всем доброго времени суток.
Существует задача. Ежедневно подключаться из маленькой базы, к большой базе через COM, и получать от туда данные.

В общем есть модуль.
У него доступны
V Клиент
V Сервер
V Внешнее соединение
V Клиент

Так же пробовал комбинацию
V Сервер
V Вызов сервера
V Привилегированный

Дело в том что возникает проблема при получении соединения с удаленной базой.

Но пикантность в том что ошибка возникает исключительно в том случае, если метод запущен РегламентнымЗаданием! Если я запускаю этот метод вручную, через обработку, коннект проходит, замечательно.

Были мысли что проблема в правах и пользователе, ибо ошибка имеет вид:
Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V82.COMConnector.1): Идентификация пользователя не выполнена
Неправильное имя или пароль пользователя

Но затем создал специального пользователя в той базе куда подключаюсь, у него есть все права. Опять же если вручную запустить метод, коннект проходит идеально. Обработка выполняется идеально. А из под регламентного задания не хочет подключаться и все тут.

В какую сторону копать?

Заранее спасибо))
1 Рэйв
 
06.02.14
08:56
сделай автозапуск обработки подключения под определнным пользователем при старте системы и вставь батник с запуском в шедулет
2 Рэйв
 
06.02.14
08:56
*шедулер
3 olegves
 
06.02.14
09:01
(0) у меня 3 года так работает - сбоев не замечено - ищи, где накосячил
4 catena
 
06.02.14
09:02
а в строке подключения видимо ни пользователя ни пароля?
5 olegves
 
06.02.14
09:04
(4) да, похоже пытается доменной политикой подключиться.
ЗЫ да, еще есть нюанс, желательно, чтобы оба сервака 1С были в одном домене
6 ixilimuse
 
06.02.14
09:07
Получение коннекта происходит так:

Функция ПолучитьПодключение() Экспорт
    
    Попытка
        Сервер = "СуперСервер";
        БазаДанных = "BigBase";
        СтрокаПодключения = "srvr='" + СокрЛП(Сервер)
        + "'; ref='" + СокрЛП(БазаДанных) + "';"
        + "'; usr='СуперЮзер';"
        + "'; pwd='СуперПароль';";
        
        App = Новый COMОбъект("V82.ComConnector");
        БазаИсточник = App.Connect(СтрокаПодключения);
        Возврат БазаИсточник;
    Исключение
        ЗаписьЖурналаРегистрации("Ошибка при получении COM-соединения", УровеньЖурналаРегистрации.Ошибка, Метаданные.РегламентныеЗадания.СинхронизацияСУПП,,ОписаниеОшибки());
    КонецПопытки;
    
КонецФункции


Затык именно в этом методе.
Если я запускаю его вручную - все работает.
Если его запускает регл.задание - падает в ошибку описанную выше.

Через консоль заданий задаю пользователь. Даже уже идентификатор задания попробовал задать. Все ровно.
Уже сегодня с утра в 4 головы пытались найти косяк. По коду все ровно. Причина пока остается не раскрытой. Где-то мы что-то упустили..
7 ixilimuse
 
06.02.14
09:08
Пользователь под которым я подключаюсь к внешней базе - имеет только 1С аутентификацию.
Сервера с базами в одном домене. Но на разных серверах.
8 zva
 
06.02.14
09:38
У вас служба сервера 1С от имени какой учетки запускается?
Если по умолчанию, то user1cv82 не доменный пользователь, причем эта учетка у вас есть на обоих серверах (с большой вероятностью с разными паролями). Регламентное задание запускается от имени этой учетки. Как вариант для теста запустите службу сервера 1С там где стартует регламентное задание от имени админа домена для проверки
9 ixilimuse
 
06.02.14
09:41
Всем спасибо. Проблема идентифицирована....
КопиПаст всему виной.

Если приглядеться к формированию строки соединения, может ничего и не заметно. А вот если готовую строку вывести в журнал регистрации, то будет видно что там две лишние кавычки и точки с запятой О_о %)

В общем как обычно на мелочи попался. Ссори за раздувание проблемы. А столько версий было блин)))