1с строка подключения к postgresql

Обновлено: 01.07.2024

Как в 1С обратиться к внешнему источнику данных, который таится в недрах СУБД? Ответ на этот вопрос начинается с подключения в 1С к этому источнику данных через интерфейс COM-объекта. В этой статье рассмотрим подключение с помощью интерфейса ADODB. Свои попытки мы будем осуществлять с СУБД PostgreSQL.

Строка подключения

Подключение клиента 1С к серверу любой СУБД осуществляется при помощи строки подключения. У каждой СУБД они немного отличаются.

Рассмотрим, какие же параметры содержит в себе строка подключения:

Параметр Описание параметра Значение параметра
DRIVER Драйвер СУБД ODBC PostgreSQL Unicode
Data Source Источник данных PostgreSQL35W
SERVER Имя сервера СУБД srv1
PORT Номер порта сервера СУБД 5432
DATABASE Имя БД parser
UID Имя пользователя СУБД sauser
PWD Пароль пользователя СУБД ********

С этими параметрами строка подключения будет выглядеть так:

DRIVER=; Data Source=PostgreSQL35W; SERVER=srv1; PORT=5432; DATABASE=parser; UID=sauser; PWD=qwerty

Настройки сервера СУБД

Перед тем, как соединяться с БД, необходимо настроить сервер СУБД PostgreSQL. Это делается так:

1. Идём в меню Пуск — Панель управления — Система и безопасность – Администрирование.

2016-11-14_13-53-20

2. Выбираем пункт «Источники данных ODBC» (64- или 32-разрядная версия в зависимости от разрядности архитектуры клиента и сервера).

PostgreSQL ODBC

3. На вкладке «Драйверы» должен присутствовать «PostgreSQL ODBC Driver(UNICODE или «PostgreSQL ODBC Driver(ANSI.

Системный DNS

4. На вкладке «Системный DNS» должен присутствовать источник данных «PostgreSQL35W». Если такого источника данных нет, его нужно добавить, прописав: имя используемой БД, сервер, имя пользователя и пароль. Если СУБД PostgreSQL установлена на этом же компьютере, то сервер должен иметь имя «localhost».

5. Чтобы протестировать созданное соединение, в окне источника данных нажимаем кнопку «Test». После удачного тестирования появляется окно.

2016-11-14_14-01-14

6. Если всё прошло удачно, сохраняем результат, нажимаем кнопку «Save».

Функции подключения 1С

Теперь для того, чтобы подключить 1С Предприятие к СУБД PostgreSQL, можно использовать следующие готовые функции:

Как обратиться к внешней СУБД? Пишем в модуле 1С такую конструкцию:

Обработку для тестирования соединения с БД можно скачать ниже по ссылке. Обработка сделана как для управляемых форм, так и для обычного интерфейса 1С.

Как в 1С обратиться к внешнему источнику данных, который таится в недрах СУБД? Ответ на этот вопрос начинается с подключения в 1С к этому источнику данных через интерфейс COM-объекта. В этой статье рассмотрим подключение с помощью интерфейса ADODB. Свои попытки мы будем осуществлять с СУБД PostgreSQL.

Строка подключения

Подключение клиента 1С к серверу любой СУБД осуществляется при помощи строки подключения. У каждой СУБД они немного отличаются.

Рассмотрим, какие же параметры содержит в себе строка подключения:

Параметр Описание параметра Значение параметра
DRIVER Драйвер СУБД ODBC PostgreSQL Unicode
Data Source Источник данных PostgreSQL35W
SERVER Имя сервера СУБД srv1
PORT Номер порта сервера СУБД 5432
DATABASE Имя БД parser
UID Имя пользователя СУБД sauser
PWD Пароль пользователя СУБД ********

С этими параметрами строка подключения будет выглядеть так:

DRIVER=; Data Source=PostgreSQL35W; SERVER=srv1; PORT=5432; DATABASE=parser; UID=sauser; PWD=qwerty

Настройки сервера СУБД

Перед тем, как соединяться с БД, необходимо настроить сервер СУБД PostgreSQL. Это делается так:

2016-11-14_13-53-20

2. Выбираем пункт «Источники данных ODBC» (64- или 32-разрядная версия в зависимости от разрядности архитектуры клиента и сервера).

PostgreSQL ODBC

3. На вкладке «Драйверы» должен присутствовать «PostgreSQL ODBC Driver(UNICODE или «PostgreSQL ODBC Driver(ANSI.

Системный DNS

4. На вкладке «Системный DNS» должен присутствовать источник данных «PostgreSQL35W». Если такого источника данных нет, его нужно добавить, прописав: имя используемой БД, сервер, имя пользователя и пароль. Если СУБД PostgreSQL установлена на этом же компьютере, то сервер должен иметь имя «localhost».

5. Чтобы протестировать созданное соединение, в окне источника данных нажимаем кнопку «Test». После удачного тестирования появляется окно.

2016-11-14_14-01-14

6. Если всё прошло удачно, сохраняем результат, нажимаем кнопку «Save».

Функции подключения 1С

Теперь для того, чтобы подключить 1С Предприятие к СУБД PostgreSQL, можно использовать следующие готовые функции:

Как обратиться к внешней СУБД? Пишем в модуле 1С такую конструкцию:

СтрокаСоединения = "DRIVER=; Data Source=PostgreSQL35W; SERVER=srv1; PORT=5432; DATABASE=parser; UID=sauser; PWD=qwerty"; Соединение = ОткрытьПодключение(СтрокаСоединения, 120); // Обращение к БД ЗакрытьПодключение(Соединение);

Обработку для тестирования соединения с БД можно скачать ниже по ссылке. Обработка сделана как для управляемых форм, так и для обычного интерфейса 1С.

Прямые запросы из 1С к базе на PostgreSQL

Недавно передо мной встала задача: из 1С нужно было подключаться к базе, лежащей на сервере PostgreSQL и получать из неё данные для дальнейшей их обработки. Материала по данной теме в сети я нашел не очень много, и на практике мне пришлось столкнуться с вещами, о которых в найденных мною источниках умалчивалось. После того, как задача была успешно решена, я решил собрать все свои наблюдения воедино. Вот что из этого получилось.

Сразу предупрежу - делал я всё это на 32-разрядной Windows, для 64-разрядной всё может быть по-другому. Кстати, у меня у самого на компьютере установлена Windows 7 - для решения задачи я пользовался виртуальной машиной VMWare с установленной на неё Windows XP.

А теперь обо всём по порядку.

У меня был удаленный доступ к компьютеру с Postgres-базой клиента. Работать удаленно и с рабочей базой мне очень не хотелось, и я решил перенести базу к себе на компьютер.

Для этого мне сначала нужно было установить на нем PostgreSQL.

Дистрибутив PostgreSQL я скачал с официального сайта (делается это совершенно бесплатно).

Во время установки есть несколько нюансов, на которые стоит обратить внимание. Вот они:

В окне, представленном на рисунке 1, я ввел пароль пользователя Postgres (это супер-пользователь или администратор СУБД). Данные об этом пользователе, в дальнейшем понадобятся при подключении к базе Postgres из 1С.

Изображение

Рисунок 1. Установка пароля супер-пользователя

В окне, показанном на рисунке 2 я ввел порт, на котором в дальнейшем работала установленная PostgreSQL.

Изображение

Рисунок 2. Установка порта сервера PostgreSQL

После установки программа предложила мне установить дополнительные инструменты, драйвера и т.п. Я согласился, т.к. мне нужен был драйвер для работы с базой PostgreSQL .

Изображение

Следующим шагом я выбрал сервер, который был создан на первом этапе установки (рисунок 4).

Изображение

А затем, среди предлагаемых программой установки компонент я выбрал компоненту psqlODBC, как показано на рисунке 5.

Изображение

Из того, я получил в папке PostgreSQL после установки, меня интересовал только значок, на котором присутствуют слова pgAdmin. Это что-то вроде консоли для управления серверами PostgreSQL (рисунок 6)

Изображение

При нажатии на ярлык у меня открылось окно как на рисунке 7. Я зашел на сервер, используя пароль супер-пользователя.

Изображение

А затем зашел в ветку Базы данных, выбрал нужную базу (рисунок 8).

Изображение

После этого необходимо было перенести данные с компьютера клиента на мой компьютер. Здесь возникла проблема, т.к. после получасовых поисков я не нашел на машине клиента папки PostgreSQL/data, в которой должны были лежать все его базы.

Обошел я это так: на своем компьютере, в pgAdmin создал новую базу с точно таким же именем, как у базы, которую нужно было перенести.

Установил у неё точно такие же настройки, как и у базы-источника. Сделал это так: правой кнопкой мыши щелкнул на базе, выбрал пункт Свойства. Очень важно в этом месте было указать такие же пользователя-владельца и кодировку, как и в базе-источнике. Пользователя Admin в выпадающем списке не было, я создал его в ветке Роли входа (рисунок 9)

Изображение

Рисунок 9. Свойства базы данных

Далее я сделал резервную копию базы-источника. Для этого - щелкнул правой кнопкой мыши на базе в консоли серверов клиента, выбрал пункт Резервная копия. В появившемся окне указал путь сохранения и поставил формат tar.

Затем созданный файл перенес на свой компьютер и щёлкнул на базе-приёмнике - Восстановить. Выбрал только что скопированный файл и запустил процесс, после выполнения которого на моем компьютере появилась нужная база со всеми данными (рисунок 10).

Изображение

Рисунок 10. Таблицы базы данных

Следующим шагом я создал источник данных ODBC. Сделал это в Панели управления. Далее Администрирование - Источники данных (ODBC). После этого на вкладке Пользовательский DNS нажал на кнопку Добавить. Открылось окошко добавления источника данных, в котором я выбрал драйвер PostgreSQL ODBC Driver (UNICODE) (рисунок 11)

Изображение

Рисунок 11. Выбор драйвера источника данных

После выполнения предыдущего шага открылось окошко для ввода настроек. Я его заполнил как показано на рисунке 12.

Изображение

Рисунок 12. Настройки источника данных ODBC

Изображение

После этого я сохранил источник данных и перешел в 1С.

Далее я создал внешнюю обработку со строковыми реквизитами Порт, База, Пользователь, Пароль и в ней для подключения к базе написал следующий код:

, где Сервер, Порт, База, Пользователь и Пароль указываются те же, что и в источнике данных ODBC.

После подключения к базе данные из неё я получил с помощью следующего кода:

, где функция ПолучитьТекстЗапроса() возращает текст запроса на языке SQL.

После исполнения данного кода, я работал с таблицей значений ВременнаяТаблица, которая и содержала нужные данные из PostgreSQL.

Начнем с того, что дистрибутив PostgreSQL нужно брать ИТС-ный, ибо че-то там не так, если качать с официальных страниц СУБД.

*Буду стараться делать так, сначала будет идти скриншот, ниже описание.

У меня на руках postgresql-9.1.2-1.1C(x64) так что нажимаю на установщике .exe

Установка

Ничегошеньки не менял, ибо логи установки, которые предлагают мне сохранить в текущей директории, мне не нужны, и русский язык СУБД меня устраивал.

Установка

И здесь оставил все по умолчанию, ибо сам не знаю толком, какая опция и за что отвечает, все и так заработает без проблем.

Установка

Здесь зададим пользователю postgres, под которым будет запускаться СУБД (если данного пользователя нет в системе, он будет автоматически создан) пароль, сложный, сложный, все остальные параметры заполнились самостоятельно и трогать их не вижу смысла.

Установка

Как видим из описания о пользователе, postgres пользователю также нужно задать пароль, что и сделаем.

Кодировку лучше изменить на UTF-8, почему? А я не знаю, уже и забыл преимущества данной кодировки, умные люди в комментариях опишут, почему лучше та или иная кодировка

Поддерживать подсоединения с любых IP, а не только с localhost – означает, мол, будет возможность подключаться к серверу извне в локальной сети

Установка

Уведомление смиренно прочитали и запомнили, что нужно и куда нужно зайти после установки, продолжаем .

Установка

Тут как бы все понятно, жмем WIN+R вводим services.msc находим службу «Вторичный вход в систему» и запускаем ее + ставим автозапуск службы, далее опять повторяем нажатие «Далее», где видим

Установка

Это что-то такое мудрёное, что для нашей задачи навряд ли понадобится, пропускаем смело, оставляем все как есть

Установка

Какие там модули, мы устанавливать без модулей еще не научились, поэтому что было по умолчанию, то и оставляем.

Ждем окончания установки.

Установка

Нам эти фишки ни к чему, снимаем галку, жмем «Завершить»

Управление СУБД осуществляется утилитой pgAdmin III, которую можно найти в списке программ Пуск, но имейте в виду, что нужно ее обновить, ибо после запуска pgAdmin III и последующего подключения к БД получаем картинку

Установка

Обновление я качнул с официального ресурса

Приступим к установке 1С сервера

У меня мега 1C_8.3.7.1633 версия, так что поехали

1с

Здесь ничего нового, устанавливаем компоненты сервера и, чтобы администрировать им, устанавливаем компоненты администрирования

1с

Здесь я только ввел пароль для пользователя postgres, который будет являться администратором для нашего кластера серверов

Всякие там драйвера защиты и т.д., при установке я не устанавливал, ибо не наш случай, у нас задача ознакомительная.

  • ! Для управление кластером серверов 1С используем Администрирование серверов 1С Предприятия
  • ! Для управления СУБД используем pgAdmin III

Давайте теперь попробуем создать новую, пустую базу данных посредством программы запуска информационных баз 1С - 1cestart.exe

1с

Кластер серверов 1С Предприятие = 192.168.1.111 это айпишник компьютера, на котором установлен сервера 1С, в нашем случаи это наш основной пк

Имя информационной базы в кластере = пишем, что хотим, если БД с таким именем не будет, создастся автоматически

Защищенное соединение = не трогаем, пока без этого обойдемся

Тип СУБ = коль установили Postgresql, тогда и выбираем данную СУБД из списка

Сервер базы данных = айпишний, тот же айпишник компьютера, на котором установлена СУБД

Имя базы данных = как назовем, так и будет называться наша БД в списке СУБД

Пользователь базы данных = да, наш пользователь из СУБД, помните, это postgres

Пароль пользователя = пароль выше упомянутого пользователя

Создать базу данных в случаи ее отсутствия = Да, ставим галку

Все иные параметры типа Язык и ниже галка о блокировке заданий не изменяем, не нужно пока это, если вы читаете данный текст.

Результат на экран

1с

А теперь попробуем по локальной сети подключиться к нашей базе данных.

1с

1с

1с

А это ничто иное, как блокировка портов брандмауэром, а именно 1541, 1560 портов, который нужно разрешить

1с

И получаем запущенный сеанс

1с

А теперь продемонстрирую удаленное подключение, из интернета к нашей базе

Предварительно, настраиваем на сервере 1С форвардинг портов на роутере, типа

1с

Соответственно, напомню, эти же порты должны быть открыты брандмауэром

Далее, на удаленном компьютере (назовем его клиент), открываем файл hosts, что находится по пути в проводнике %WinDir%\System32\Drivers\Etc и добавляем запись

77.121.199.91 ws

Где циферки - это айпи адрес внешний нашего сервера, а буковки это название нашего сервера, к которому подключаемся

1с

А также на клиенте нужно открыть файл nethasp.ini, который находится по пути C:\Program Files (x86)\1cv8\conf, найти параметр NH_SERVER_ADDR, который нужно разкомментировать + вместо <Addr1> вписать внешний айпишник нашего сервера, в итоге вышло

1с

А далее, на том же удаленном компьютере добавляем запись для подключения к информационной базе, указываем наш алиас, который задали в файле hosts + порт кластера серверов ну и наименование нашей БД с кластера

Читайте также: