1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
ДенисЧ 05.12.20 - 14:38 | Есть база. В ней настроен внешний источник к МССКЛ.
Введены общие настройки. В обработке в интерактиве уходим на сервер (ессно) и всё читается. Попробовал запихнуть вызов в ДлительныеОперации - получаю ошибку авторизации. В чём разница? | ||
Garykom 1 - 05.12.20 - 14:45 | (0) Лично я отказался от этих глючных внешних источников в 1С и стал юзать свою прокладку на го | ||
ДенисЧ 2 - 05.12.20 - 14:47 | |||
organizm 3 - 05.12.20 - 15:54 | у тебя наверно с сервера подключение идет, а там не все так просто. | ||
ДенисЧ 4 - 05.12.20 - 15:55 | |||
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 но я считаю, что в данном случае такая секретность только мешать будет. я сейчас вспомнил, была ситуация с одной базой, там были подключены внешние таблицы, и все прекрасно работало с общими настройками, как у вас. но когда я туда внедрил бсп, а потом, уже позднее надо было сделать обработку данных с учетом внешних данных, и я захотел это сделать как это делается в типовых (что бы ничего не забыть) - меняется релиз и срабатывают процедуры обновления, так вот, если память не изменяет, у меня тоже была ошибка авторизации, хотя если тот же код был просто в обработке, которую запускал я - то она работала! В итоге, я не стал терять время и разбираться, а просто при обновлении рабочей базы сделал все обработкой. Видимо это похожий случай, так что если разберешься в чем причина - напиши! Исходя из того опыта позднее написал эту функцию для подключения, с ней работает без проблем, но на той базе не пробовал, т.к. ей теперь не занимаюсь. |
|
Список тем форума |