Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Внешние источники данных.

Внешние источники данных.
Я
   ДенисЧ
 
05.12.20 - 14:38
Есть база. В ней настроен внешний источник к МССКЛ.
Введены общие настройки.
В обработке в интерактиве уходим на сервер (ессно) и всё читается.
Попробовал запихнуть вызов в ДлительныеОперации - получаю ошибку авторизации.

В чём разница?
 
 Партнерская программа EFSOL Oblako
   Garykom
 
1 - 05.12.20 - 14:45
(0) Лично я отказался от этих глючных внешних источников в 1С и стал юзать свою прокладку на го
   ДенисЧ
 
2 - 05.12.20 - 14:47
(1) Ваше мнение очень ценно, спасибо.

Если бы была моя воля - я бы использовал АДО.
   organizm
 
3 - 05.12.20 - 15:54
у тебя наверно с сервера подключение идет, а там не все так просто.
   ДенисЧ
 
4 - 05.12.20 - 15:55
(3) @в интерактиве уходим на сервер@
Учу читать (хотя бы начальный пост)...
   kumena
 
5 - 05.12.20 - 16:06
> опробовал запихнуть вызов в ДлительныеОперации - получаю ошибку авторизации.

"получаю ошибку авторизации." 
ну логично же, что общие настройки там не действуют и надо к источнику программно подключиться.
   ДенисЧ
 
6 - 05.12.20 - 16:15
(5) Почему логично? Заданы общие настройки, под конкретного пользователя ничего не прописывалось
В чём отличие форменного серверного вызова от серверного вызова в фоновом задании?
   kumena
 
7 - 05.12.20 - 16:28
> Почему логично?

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

> отличие форменного серверного вызова от серверного вызова в фоновом задании?
Я не знаю, но видимо в вашем (или общем) случае есть, раз поведение разное. Но у нас кажется подключение с общих настроек работало.
   kumena
 
8 - 05.12.20 - 16:30
В любом случае ошибку авторизации надо лечить правильной авторизацией, так что лучше прописать настройки подключения.
   Garykom
 
9 - 05.12.20 - 16:32
Интересно а регламентные/фоновые от какого пользователя 1С запускаются?
В смысле когда фоновое запускаем из интерактивного сеанса то понятно, а если по расписанию на сервере?
Не пользователь операционки (тут понятно от кого сервер 1С запущен) а пользователь 1С.
   ДенисЧ
 
10 - 05.12.20 - 16:32
А вот где их прописать, кроме как в общих? Чтобы фоновое подхватило? А то мне потом это удовольствие в регламент пихать.
Попробую конкретно мне ещё прописать... Хотя...
   ДенисЧ
 
11 - 05.12.20 - 16:32
(9) Фоновые в длительных - от того, кто их запустил, регламенты - от того, кто прописан в настройках
   Garykom
 
12 - 05.12.20 - 16:33
(11) проверить можешь?
   ДенисЧ
 
13 - 05.12.20 - 16:34
(12) Ну регламенты - точно от того, кто прописан. Он появляется в активных пользователях и ЖР.
Фоновые пользовательские - тоже.
   kumena
 
14 - 05.12.20 - 20:12
> А вот где их прописать, кроме как в общих? Чтобы фоновое подхватило?

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

&НаСервере
Функция ВыполнитьОбновление(ПараметрыОбновления) Экспорт
    
    Ответ = ПодключитьВнешнийИсточник();
    Если Ответ.Результат Тогда
        Выполнить("Ответ = Обновить" + ПараметрыОбновления.ТаблицаДанных +"(Ответ)");
    КонецЕсли;
    
    Возврат Ответ;
    
КонецФункции    

&НаСервере
Функция ПодключитьВнешнийИсточник()
    
    СтруктураОтвета = Новый Структура("Результат, ТекстОшибки, Текст");
    
    Попытка 
        
        Выборка = ПолучитьДанныеПодключения();
        ПараметрыСоединения = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;
        ПараметрыСоединения.СтрокаСоединения = ПолучитьСтрокуПодключения(Выборка);
        ПараметрыСоединения.АутентификацияОС = Ложь;
        ПараметрыСоединения.ИмяПользователя = Выборка.UID;
        ПараметрыСоединения.Пароль = Выборка.PWD;
        ПараметрыСоединения.СУБД = "MSSQLServer";
        ВнешнийИсточник = ВнешниеИсточникиДанных.ВнешниеДанные;
        ВнешнийИсточник.УстановитьПараметрыСоединенияСеанса(ПараметрыСоединения);
        ВнешнийИсточник.УстановитьСоединение();    
        
        СтруктураОтвета.Результат = Истина;
        Возврат СтруктураОтвета;
        
    Исключение
        
        СтруктураОтвета.Результат = Ложь;
        СтруктураОтвета.ТекстОшибки = "Не удалось выполнить подключение,
                                      |Проверьте настройки подключения!";
        Возврат СтруктураОтвета;
        
    КонецПопытки;    
    
КонецФункции    

&НаСервере
Функция ПолучитьСтрокуПодключения(Данные)
    
    SERVER = СокрЛП(Данные.SERVER);
    UID = СокрЛП(Данные.UID);
    PWD = СокрЛП(Данные.PWD);
    DATABASE = СокрЛП(Данные.DATABASE);
    
    Возврат 
    "DRIVER={SQL Server};"
    +"SERVER="+SERVER+";"
    +"UID="+UID+";"
    +"PWD="+PWD+";"
    +"DATABASE="+DATABASE+";"
    +"LANGUAGE=Русский";

КонецФункции
   kumena
 
15 - 05.12.20 - 20:15
+14, если обновление запускает обработка, то текст ошибки уходит на клиента, задание - то в журнал.
   ДенисЧ
 
16 - 05.12.20 - 20:23
(14) У меня нет явного подключения. И вообще - в явном виде пароль в коде хранить моветон
   kumena
 
17 - 06.12.20 - 11:33
> И вообще - в явном виде пароль в коде хранить моветон

а в явном виде он у меня дальше модуля внешних данных и не уходит, а сама таблица регистра с настройками пользователям не доступна, а тем, кому она по правам доступна - они этот пароль должны знать.
можно и так хранить, https://its.1c.ru/db/v8std/content/740/hdoc
но я считаю, что в данном случае такая секретность только мешать будет.

я сейчас вспомнил, была ситуация с одной базой, там были подключены внешние таблицы, и все прекрасно работало с общими настройками, как у вас.
но когда я туда внедрил бсп, а потом, уже позднее надо было сделать обработку данных с учетом внешних данных, и я захотел это сделать как это делается в типовых (что бы ничего не забыть) - меняется релиз и срабатывают процедуры обновления, так вот, если память не изменяет, у меня тоже была ошибка авторизации, хотя если тот же код был просто в обработке, которую запускал я - то она работала! В итоге, я не стал терять время и разбираться, а просто при обновлении рабочей базы сделал все обработкой.

Видимо это похожий случай, так что если разберешься в чем причина - напиши!
Исходя из того опыта позднее написал эту функцию для подключения, с ней работает без проблем, но на той базе не пробовал, т.к. ей теперь не занимаюсь.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.