При работе с внешними источниками данных (ВИД) разработчики часто сталкиваются со следующей ситуацией: после редактирования структуры объекта в конфигураторе (например, добавления новой таблицы или изменения состава полей) внешний источник данных перестает автоматически подключаться при входе в программу, а интерактивно сохраненные параметры соединения сбрасываются.
Разберем подробнее механику работы платформы 1С с внешними базами данных, выясним причины сброса настроек и рассмотрим правильные способы настройки автоматического подключения.
Проанализируем базовые принципы работы платформы 1С с внешними источниками данных:
УстановитьОбщиеПараметрыСоединения()) пользователю требуется право Администрирование. У обычных пользователей без этого права попытка сохранения или изменения общих настроек завершится ошибкой.При попытке установить соединение с внешней СУБД платформа 1С проверяет параметры подключения в строго определенном порядке:
УстановитьПараметрыСоединенияСеанса(). Имеют наивысший приоритет и действуют только в рамках текущего сеанса.УстановитьПараметрыСоединенияПользователя(). Сохраняются для конкретного пользователя.УстановитьОбщиеПараметрыСоединения(). Применяются по умолчанию для всех пользователей, если не переопределены на более высоких уровнях.Если после изменения структуры ВИД на одном из этих уровней сохранились пустые параметры, платформа не сможет выполнить автоматическое подключение при первом обращении.
Чтобы исключить проблему со сбросом настроек и обеспечить стабильную работу всех пользователей (включая тех, у кого нет административных прав), подключение рекомендуется прописать программно при инициализации сеанса.
Разберем по шагам создание правильного алгоритма подключения:
УстановитьПривилегированныйРежим(Истина), чтобы обойти проверку административных прав у обычных пользователей.ВнешниеИсточникиДанных.Посмотрим на пример кода подключения:
УстановитьПривилегированныйРежим(Истина);
ПараметрыСоединения = ВнешниеИсточникиДанных.ИмяВнешнегоИсточника.ПолучитьОбщиеПараметрыСоединения();
// Указываем параметры подключения к внешней БД
ПараметрыСоединения.СтрокаСоединения = "DRIVER={SQL Server};Server=192.168.1.10;Database=ExternalDB;";
ПараметрыСоединения.ИмяПользователя = "db_user";
ПараметрыСоединения.Пароль = "db_password";
// Применяем параметры для текущего сеанса
ВнешниеИсточникиДанных.ИмяВнешнегоИсточника.УстановитьПараметрыСоединенияСеанса(ПараметрыСоединения);
УстановитьПривилегированныйРежим(Ложь);
Для обеспечения высокой надежности и безопасности при работе с внешними источниками данных следует придерживаться следующих правил:
Безопасное хранение учетных данных: Не записывайте логины и пароли открытым текстом в модулях 1С. Храните строку подключения и учетные данные в константах или защищенном регистре сведений с ограничением прав на чтение.
Учет контекста исполнения (Клиент / Сервер): Если 1С работает в клиент-серверном режиме, обращения к внешнему источнику из фоновых заданий или серверных модулей выполняются от имени службы сервера 1С. На сервере 1С должны быть установлены соответствующие ODBC-драйверы той же разрядности, что и сама служба сервера (32-bit или 64-bit).