Получение данных в 1С из MS SQL - доступ

1. 21stas 99 17.02.22 09:30 Сейчас в теме
Клиент-серверная база 1С, данные располагаются на PostgreSQL.
При этом нужно читать данные из таблиц другой информационной системы (не на 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;
По теме из базы знаний
Найденные решения
7. collider 17.02.22 11:06 Сейчас в теме
(5)
а у вас что, конфигурация как проходной двор, все имеют к ней доступ?

Что делать, если некоторые программисты не должны иметь доступа к базе в MSSQL? Пускай, даже один.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. RustamZz 17.02.22 11:04 Сейчас в теме
(1) Подобный обмен удобно делать с помощью внешних источников данных, кода в результате минимум. Логин, пароль и строка соединения в таком случае указываются в режиме предприятия. И как правильно подсказали авторизация происходит от имени пользователя window под кем работает сервер 1С.
Прикрепленные файлы:
2. ranelio 17.02.22 09:50 Сейчас в теме
Прописать логин и пароль в строке подключения:
СтрокаСоединения= СтрокаСоединения+"Uid=" + ИмяПользователя + ";";
СтрокаСоединения= СтрокаСоединения+ "Pwd=" + Пароль + ";";

Подключение к MSSQL наверняка с сервера идет и подключается он под учеткой под которой запущен сервер 1С.
3. 21stas 99 17.02.22 10:26 Сейчас в теме
(2) Логин и пароль в строке подключения прописывать - плохо.
Не должен никто видеть паролей пользователей.
4. collider 17.02.22 10:45 Сейчас в теме
(3)
Тогда интерактивно зайдите на рабочий стол сервера под пользователем, от которого запускается служба 1С.
Убедитесь, что оттуда получается войти на MSSQL без ввода пароля.
5. soft_wind 17.02.22 10:59 Сейчас в теме
(3)
(2) Логин и пароль в строке подключения прописывать - плохо.
Не должен никто видеть паролей пользователей.


а у вас что, конфигурация как проходной двор, все имеют к ней доступ?

тогда вынесите подключение в отдельный модуль, поставьте на текст модуля пароль, будете только вы знать.
7. collider 17.02.22 11:06 Сейчас в теме
(5)
а у вас что, конфигурация как проходной двор, все имеют к ней доступ?

Что делать, если некоторые программисты не должны иметь доступа к базе в MSSQL? Пускай, даже один.
8. user790708 17.02.22 11:10 Сейчас в теме
Код выполняется на Клиенте или на Сервере? Могут быть разные пользователи.
9. 21stas 99 17.02.22 12:55 Сейчас в теме
Сделаем так:
1. В строке соединения пропишем логин и пароль.
2. Чтобы логин и пароль знали только допущенные разработчики (у нас их много), вынесем строку подключения в модуль под паролем.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот