1С 8.3 Чтение данных таблицы БД на PostgreSQL
Данные > Примеры кода 1С > 1С 8.3 Приложение, система, интерфейс
Перейти в основной раздел:
Чтобы подключиться к базе и увидеть её структуру, можно воспользоваться программой pgAdmin.
Есть два основных варианта, с помощью которых можно считать данные через 1С:
- ADODB (COM объект)
- Внешние источники данных (объект платформы)
★ Считать записи первым способом можно используя код из Примера №1.
На выходе у нас есть подключение к базе, и мы можем делать что нам требуется (на что хватит прав). Можно работать через sql запросы, либо с объектами напрямую.
★ Пример №2 позволяет сразу увидеть структуру самой базы данных.
Внешние источники данных - это обособленный объект конфигурации, который позволяет работать с данными различного формата и совместимыми программами. Под работой предполагается не только чтение данных, но и хранение и изменение.
При создании внешнего источника данных можно либо вручную задать структуру внешних таблиц, либо воспользоваться конструктором таблиц, в котором задаются параметры подключения и выполняется подключение к базе данных. После подключения к БД, появляется структура базы и можно выбрать нужные таблицы.
Важный нюанс!!! То подключение, которое мы выполнили в конфигураторе, не сохраняется.
Для того чтобы данный источник заработал в режиме 1С:Предприятие, необходимо либо в коде один раз задать параметры подключения (листинг 2), либо воспользоваться платформенной обработкой "Управление внешними источниками данных".
✔ Особенности подключения ADODB:
- Требуется драйвер OLEDB
- Можем выполнять SQL запросы
- Необходимо знать структуру базы данных
- Работает медленнее чем второй способ (но есть исключения)
✔ Особенности подключения через внешние источники данных:
- Требуется драйвер ODBC
- Можно использовать в динамических списках и СКД
- Требуется выполнить подключение в режиме предприятия
- Можно работать с объектом в привычном конструкторе запросов
- Нельзя использовать временные таблицы после выборки данных из внешней базы. Необходимо предварительно выгрузить результат запроса в ТЗ.
- Работает в разы быстрее, чем ADODB.
// by telegram
Пример №1
// Задаем параметры подключения
ADODBСоединение = Новый COMОбъект("ADODB.Connection");
ADODBСоединение.ConnectionString = "Driver={PostgreSQL Unicode};Server=192.168.0.1;Port=5432; |Database=DBtest;Uid=user;Pwd=pass;STMT=utf8";
Попытка
// Делаем попытку подключения
ADODBСоединение.Open();
Исключение
Возврат;
КонецПопытки;
// Определяем объекты набора записей и команды
НаборЗаписей = Новый COMОбъект("ADODB.RecordSet");
Команда = Новый COMОбъект("ADODB.Command");
Попытка
// Заполняем команду текстов запроса
Команда.ActiveConnection = ADODBСоединение;
Команда.CommandText = "SELECT description
|
|FROM public.""TableNom"";";
// Выполняем команду и помещаем результат в набор записей
НаборЗаписей = Команда.Execute();
Исключение
Возврат;
КонецПопытки;
ADODBСоединение = Новый COMОбъект("ADODB.Connection");
ADODBСоединение.ConnectionString = "Driver={PostgreSQL Unicode};Server=192.168.0.1;Port=5432; |Database=DBtest;Uid=user;Pwd=pass;STMT=utf8";
Попытка
// Делаем попытку подключения
ADODBСоединение.Open();
Исключение
Возврат;
КонецПопытки;
// Определяем объекты набора записей и команды
НаборЗаписей = Новый COMОбъект("ADODB.RecordSet");
Команда = Новый COMОбъект("ADODB.Command");
Попытка
// Заполняем команду текстов запроса
Команда.ActiveConnection = ADODBСоединение;
Команда.CommandText = "SELECT description
|
|FROM public.""TableNom"";";
// Выполняем команду и помещаем результат в набор записей
НаборЗаписей = Команда.Execute();
Исключение
Возврат;
КонецПопытки;
Пример № 2
//Выполняется единожды
ПараметрыСоединения = ВнешниеИсточникиДанных.ВнИст.ПолучитьОбщиеПараметрыСоединения();
ПараметрыСоединения.АутентификацияСтандартная = Истина;
ПараметрыСоединения.ИмяПользователя = "user";
ПараметрыСоединения.Пароль = "pass";
ПараметрыСоединения.СтрокаСоединения = "Driver={PostgreSQL Unicode};"
+ "Server=192.168.0.1;Port=5432;Database=DBtest;Uid= user;Pwd= pass;STMT=utf8";
ПараметрыСоединения.СУБД = "PostgreSQL";
ВнешниеИсточникиДанных.ВнИст.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения);
ВнешниеИсточникиДанных.ВнИст.УстановитьСоединение();
ПараметрыСоединения = ВнешниеИсточникиДанных.ВнИст.ПолучитьОбщиеПараметрыСоединения();
ПараметрыСоединения.АутентификацияСтандартная = Истина;
ПараметрыСоединения.ИмяПользователя = "user";
ПараметрыСоединения.Пароль = "pass";
ПараметрыСоединения.СтрокаСоединения = "Driver={PostgreSQL Unicode};"
+ "Server=192.168.0.1;Port=5432;Database=DBtest;Uid= user;Pwd= pass;STMT=utf8";
ПараметрыСоединения.СУБД = "PostgreSQL";
ВнешниеИсточникиДанных.ВнИст.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения);
ВнешниеИсточникиДанных.ВнИст.УстановитьСоединение();
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник