|
Внешние источники данных. | ☑ | ||
---|---|---|---|---|
0
ДенисЧ
05.12.20
✎
14:38
|
Есть база. В ней настроен внешний источник к МССКЛ.
Введены общие настройки. В обработке в интерактиве уходим на сервер (ессно) и всё читается. Попробовал запихнуть вызов в ДлительныеОперации - получаю ошибку авторизации. В чём разница? |
|||
1
Garykom
гуру
05.12.20
✎
14:45
|
(0) Лично я отказался от этих глючных внешних источников в 1С и стал юзать свою прокладку на го
|
|||
2
ДенисЧ
05.12.20
✎
14:47
|
(1) Ваше мнение очень ценно, спасибо.
Если бы была моя воля - я бы использовал АДО. |
|||
3
organizm
05.12.20
✎
15:54
|
у тебя наверно с сервера подключение идет, а там не все так просто.
|
|||
4
ДенисЧ
05.12.20
✎
15:55
|
(3) @в интерактиве уходим на сервер@
Учу читать (хотя бы начальный пост)... |
|||
5
kumena
05.12.20
✎
16:06
|
> опробовал запихнуть вызов в ДлительныеОперации - получаю ошибку авторизации.
"получаю ошибку авторизации." ну логично же, что общие настройки там не действуют и надо к источнику программно подключиться. |
|||
6
ДенисЧ
05.12.20
✎
16:15
|
(5) Почему логично? Заданы общие настройки, под конкретного пользователя ничего не прописывалось
В чём отличие форменного серверного вызова от серверного вызова в фоновом задании? |
|||
7
kumena
05.12.20
✎
16:28
|
> Почему логично?
ну потому что об этом факте говорит программа, в одном случае подключается, а в другом выдает ошибку авторизации. > отличие форменного серверного вызова от серверного вызова в фоновом задании? Я не знаю, но видимо в вашем (или общем) случае есть, раз поведение разное. Но у нас кажется подключение с общих настроек работало. |
|||
8
kumena
05.12.20
✎
16:30
|
В любом случае ошибку авторизации надо лечить правильной авторизацией, так что лучше прописать настройки подключения.
|
|||
9
Garykom
гуру
05.12.20
✎
16:32
|
Интересно а регламентные/фоновые от какого пользователя 1С запускаются?
В смысле когда фоновое запускаем из интерактивного сеанса то понятно, а если по расписанию на сервере? Не пользователь операционки (тут понятно от кого сервер 1С запущен) а пользователь 1С. |
|||
10
ДенисЧ
05.12.20
✎
16:32
|
А вот где их прописать, кроме как в общих? Чтобы фоновое подхватило? А то мне потом это удовольствие в регламент пихать.
Попробую конкретно мне ещё прописать... Хотя... |
|||
11
ДенисЧ
05.12.20
✎
16:32
|
(9) Фоновые в длительных - от того, кто их запустил, регламенты - от того, кто прописан в настройках
|
|||
12
Garykom
гуру
05.12.20
✎
16:33
|
(11) проверить можешь?
|
|||
13
ДенисЧ
05.12.20
✎
16:34
|
(12) Ну регламенты - точно от того, кто прописан. Он появляется в активных пользователях и ЖР.
Фоновые пользовательские - тоже. |
|||
14
kumena
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=Русский"; КонецФункции |
|||
15
kumena
05.12.20
✎
20:15
|
+14, если обновление запускает обработка, то текст ошибки уходит на клиента, задание - то в журнал.
|
|||
16
ДенисЧ
05.12.20
✎
20:23
|
(14) У меня нет явного подключения. И вообще - в явном виде пароль в коде хранить моветон
|
|||
17
kumena
06.12.20
✎
11:33
|
> И вообще - в явном виде пароль в коде хранить моветон
а в явном виде он у меня дальше модуля внешних данных и не уходит, а сама таблица регистра с настройками пользователям не доступна, а тем, кому она по правам доступна - они этот пароль должны знать. можно и так хранить, https://its.1c.ru/db/v8std/content/740/hdoc но я считаю, что в данном случае такая секретность только мешать будет. я сейчас вспомнил, была ситуация с одной базой, там были подключены внешние таблицы, и все прекрасно работало с общими настройками, как у вас. но когда я туда внедрил бсп, а потом, уже позднее надо было сделать обработку данных с учетом внешних данных, и я захотел это сделать как это делается в типовых (что бы ничего не забыть) - меняется релиз и срабатывают процедуры обновления, так вот, если память не изменяет, у меня тоже была ошибка авторизации, хотя если тот же код был просто в обработке, которую запускал я - то она работала! В итоге, я не стал терять время и разбираться, а просто при обновлении рабочей базы сделал все обработкой. Видимо это похожий случай, так что если разберешься в чем причина - напиши! Исходя из того опыта позднее написал эту функцию для подключения, с ней работает без проблем, но на той базе не пробовал, т.к. ей теперь не занимаюсь. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |