Получение данных в 1С из MS SQL - доступ
Клиент-серверная база 1С, данные располагаются на PostgreSQL.
При этом нужно читать данные из таблиц другой информационной системы (не на 1С), которая хранит их на MS SQL.
Когда пытаемся обращаться к данным - у пользователя нет доступа к данным MS SQL.
Хотя пользователь Windows, который обращается, такой доступ имеет.
Что смотреть?
В КОНСТАНТЕ ЗАДАНО ЗНАЧЕНИЕ:
Driver={SQL Server};Server=Siri;Database=personal;
При этом нужно читать данные из таблиц другой информационной системы (не на 1С), которая хранит их на MS SQL.
Когда пытаемся обращаться к данным - у пользователя нет доступа к данным MS SQL.
Хотя пользователь Windows, который обращается, такой доступ имеет.
Что смотреть?
MSSQL_сервер = ПолучитьСоединениеССервером_SQL();
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Попытка
rcd_zak = Новый COMОбъект ("ADODB.Recordset");
rcd_zak.Open("sel ect * fr om dbo.Начисления where ТабНомер = 724 order by Счетчик", MSSQL_сервер, 1, 3)
Исключение
ВывестиСтрокуОшибки (ТабДок, Макет, "Ошибка обращения к справочнику Наряд-заказов " + ОписаниеОшибки(),КолОшибок,Истина) ;
MSSQL_сервер.Close();
КонецПопытки;
Сообщить (rcd_zak.fields("ВидОплаты").value);
Сообщить (rcd_zak.fields("Сумма").value);
//Возврат ТабДок;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Функция ПолучитьСоединениеССервером_SQL()
//*******************************************************************************************************************************************
// Функция читает константу Ф_СтрокаСоединения и по этой строке выполняется соединение с SQL-сервером
//*******************************************************************************************************************************************
СтрокаСоединения = Константы.Ф_СтрокаСоединения.Получить(); // строка соединения с SQL-Server берем из константы
Если СтрокаСоединения = "" или СтрокаСоединения = null Тогда
Сообщить ("Не задана строка соединения с сервером SQL: Константа Ф_СтрокаСоединения - работа невозможна");
КонецЕсли;
//
// Устанавливаем соединение с сервером
//
MSSQL_сервер = Новый COMОбъект("ADODB.CONNECTION");
Попытка
MSSQL_сервер.Open(СтрокаСоединения);
Исключение
Сообщить ("Ошибка соединения с сервером " + ОписаниеОшибки()) ;
КонецПопытки;
Возврат MSSQL_сервер;
КонецФункции
ПоказатьВ КОНСТАНТЕ ЗАДАНО ЗНАЧЕНИЕ:
Driver={SQL Server};Server=Siri;Database=personal;
По теме из базы знаний
- Консоль запросов MS SQL для 1С 8.1
- Загрузка логов журнала регистрации 1С из MS SQL в ElasticSearch
- Скорость работы 1С: Предприятие с разными СУБД: MS SQL и с PostgreSQL
- Интеграция 1С 8.3 с Power BI (Генератор представлений (View) в MS SQL/PostgreSQL по структуре базы данных 1С 8.3)
- Анализируем SQL сервер глазами 1С-ника
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Подобный обмен удобно делать с помощью внешних источников данных, кода в результате минимум. Логин, пароль и строка соединения в таком случае указываются в режиме предприятия. И как правильно подсказали авторизация происходит от имени пользователя window под кем работает сервер 1С.
Прикрепленные файлы:

Прописать логин и пароль в строке подключения:
Подключение к MSSQL наверняка с сервера идет и подключается он под учеткой под которой запущен сервер 1С.
СтрокаСоединения= СтрокаСоединения+"Uid=" + ИмяПользователя + ";";
СтрокаСоединения= СтрокаСоединения+ "Pwd=" + Пароль + ";";
Подключение к MSSQL наверняка с сервера идет и подключается он под учеткой под которой запущен сервер 1С.
(3)
а у вас что, конфигурация как проходной двор, все имеют к ней доступ?
тогда вынесите подключение в отдельный модуль, поставьте на текст модуля пароль, будете только вы знать.
(2) Логин и пароль в строке подключения прописывать - плохо.
Не должен никто видеть паролей пользователей.
Не должен никто видеть паролей пользователей.
а у вас что, конфигурация как проходной двор, все имеют к ней доступ?
тогда вынесите подключение в отдельный модуль, поставьте на текст модуля пароль, будете только вы знать.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот