
Список соединений хранит в себе данные для повторного соединения с базой данных. Пароль доступа к базе будет сохранен только по желанию пользователя и в зашифрованном виде с использованием ключа PBKDF2 с SHA-256 сгенерированного относительно ПК пользователя и алгоритмом блочного шифрования AES-GCM.
Соединение можно добавить в каталог, нажав кнопку «Сохранить подключение» в предварительном просмотре и экспорте.

Форма для подключения к базе данных в которой нужно указать адрес (ip или url), тип базы и имя пользователя. Необходимость других параметров, таких как порт и пароль, зависит от конфигурации сервера или самой базы данных.
В случае некорректного ввода данных или иных ошибок в окне "Данные" будут выведены сообщение о проблеме.
Если не указать имена базы или таблицы, то будет выведен каталог доступных баз, таблиц и представлений. Это обеспечивает удобный доступ к структурированным данным и упрощает навигацию, позволяя быстро находить необходимые объекты для дальнейшей работы. Пользователь видит только те объекты, к которым у него есть разрешение, что гарантирует безопасность и конфиденциальность информации.
При необходимости получения выборочных данных из базы при подключении можно сразу задать структурированный запрос (на SQL или его аналоге, поддерживаемом базой данных). Этот запрос так же будет сохранен в списке соединений (установлены соответствующие драйвера или библиотеки).
В версиях 1.0.7 и ниже присутствует пункт «Сохранить пароль» который подтверждает намерение пользователя сохранить пароль доступа к базе данных в каталоге подключений. Из соображений безопасности по умолчанию этот пункт отключен, но если он был указан, то пароль будет сохранен в зашифрованном виде с использованием ключа PBKDF2 с SHA-256 сгенерированным относительно ПК пользователя и алгоритмом блочного шифрования AES-GCM. В дальнейшем при использовании данного сохраненного подключения пароль будет автоматически подставляться в форму для подключения к базе данных.

В этом разделе можно сделать импорт и экспорт каталога соединений в формате JSON для более удобного обмена настройками между пользователями.
При экспорте пользователю будет предложено ввести пароль для защиты параметров соединений (логины и пароли от баз данных) с использованием генерации ключей PBKDF2 с SHA-256 и алгоритма блочного шифрования AES-GCM.
В случае импорта параметров пользователю будет предложено ввести ранее установленный пароль для этого JSON-файла, чтобы получить все параметры подключения.
Возможно сделать импорт и экспорт без пароля, но тогда будут перенесены только открытые параметры как: адрес базы данных, порт, тип, имя базы данных, таблица и SQL-запрос при использовании.
При импорте данных, текущий список соединений будет полностью заменен на новый.
Дополнительно можно указать адрес прокси сервера с настроенным API для подключения к базе данных, пример кода такого API на PHP можно найти в разделе настройка плагина (утилите API не требуется). При его наличии в форме для подключения к базе появится новый пункт “Использовать прокси-сервер”.
Важно, что для такого подключения на самом прокси-сервере должна быть настроена поддержка баз данных.

После появления таблицы в предварительном просмотре можно ее экспортировать в "Р7 таблицы" если использовался плагин и в XLSX файл если использовалась утилита.
Чтобы обеспечить быстрый доступ к текущей таблице, можно сохранить текущее соединение. Для этого просто установите галочку в чекбоксе «Сохранить соединение».
В версиях 1.0.7 и ниже если при подключении было указано сохранить пароль, то он будет также сохранен в данном соединении в зашифрованном виде.

Начиная с версии 1.1.0 добавление подключения в каталог происходит по нажатию на кнопку «Сохранить подключение», после чего появится диалоговое окно с вариантами сохранения пароля для повторного подключения или без него. Пароль также будет сохранен в зашифрованном виде с использованием ключа PBKDF2 с SHA-256 сгенерированным относительно ПК пользователя и алгоритмом блочного шифрования AES-GCM.
Утилита и плагин "Данные" для Р7 Офис представляет собой удобный инструмент для экспорта таблиц из баз данных в редактор «Р7 таблицы».
Он предназначен для быстрого и легкого взаимодействия Р7 Офис с разными типами баз данных для дальнейшей обработки и анализа в табличном редакторе.
Программа работает на технологии Electron для запуска в качестве самостоятельного приложения.
"Данные" работает в фоновом режиме и занимает порт 1920 в localhost.
В своей работе "Данные" активно использует параллельные вызовы процессов и потоков для повышения производительности и эффективности обработки данных. Благодаря применению этих технологий, система способна одновременно выполнять несколько задач, что позволяет значительно сократить время обработки информации и улучшить отзывчивость приложения.
Использование параллельных вызовов повышает стойкость к ошибкам, так как сбой в одном процессе не влияет на выполнение других, что позволяет системе продолжать функционировать. Кроме того, параллельные вызовы обеспечивают асинхронное взаимодействие с другими приложениями, позволяя отправлять запросы и обрабатывать данные одновременно, что улучшает отзывчивость и масштабируемость системы.
Таким образом, использование параллельных вызовов процессов и потоков является ключевым аспектом архитектуры "Данные", обеспечивая высокую производительность и надежность системы.
Поддерживаемые базы данных
- “MySQL”
- “Microsoft SQL Server”
- “PostgreSQL”
- “Oracle Database”
- “SAP HANA”
Технические требования:
- Центральный процессор: x86_64
- Оперативная память: 512 Мб
- Свободное место на диске: 300 Мб
- Рекомендуемые платформы:
- Microsoft Windows 10
- Mac OS:
- 10.14 Sierra для Intel
- 11.0 Big Sur для Apple Silicon
- Linux x64:
- РэдОС 7.3.4
- Astra Linux 1.7.5
- Debian 11
- Ubuntu 20.04
Для соединения плагина к базам данных необходимо запустить утилиту "Данные" на вашем ПК, через нее будут совершаться запросы к базам данных.
- Шаг 1 В любом из редакторов P7 (документы, таблицы, презентации) перейдите во вкладку «Плагины» в верхней панели
- Шаг 2 Нажмите кнопку «Настройки»
- Шаг 3 В появившемся окне «Настройки» нажмите кнопку «Добавить плагин»
- Шаг 4 В диалоговом окне выберите файл плагина на вашем компьютере с расширением .plugin
- Шаг 5 Затем новый плагин появится в каталоге «Установленные плагины»
- Шаг 6 Нажмите «ОК» в окне «Настройки»
После этого новый плагин будет добавлен во всех подходящих редакторах (некоторые плагины создаются для конкретных редакторов) во вкладке «Плагины» в верхней панели
- Шаг 1 В любом из редакторов P7 перейдите во вкладку «Плагины» в верхней панели
- Шаг 2 Нажмите кнопку «Настройки»
- Шаг 3 В появившемся окне «Настройки» в каталоге «Установленные плагины» нажмите на иконку удаления напротив интересующего плагина
- Шаг 4 Нажмите «ОК» в окне «Настройки» только после этого плагин будет удален
Для Desktop утилиты используется стандартный метод установки.
MS Windows
- Шаг 1 Войдите в систему под учетной записью администратора Windows
- Шаг 2 Запустите установочный файл утилиты с расширением msi
- Шаг 3 Следуйте инструкциям установки
- Шаг 4 Утилита будет установлена на ПК в указанную директорию.
По умолчанию:C:\Users\<user>\AppData\Local\Programs\data\
Linux
- Шаг 1 Войдите в систему под учетной записью администратора Linux.
- Шаг 2 Откройте файл установки для используемого менеджера пакетов (rpm для РЕД ОС, deb для Astra Linux)
- Шаг 3 Дождитесь завершения работы менеджера пакетов.
- Шаг 4 По умолчанию файлы утилиты будут добавлены в директорию: /opt/Данные
Использование
Десктопная версия "Данные" и плагин для "Р7-Офис” обладает одинаковым интерфейсом и функционалом, но десктопная версия может работать автономно и не требует установки дополнительного ПО или настройки API. Вместо экспорта данных в "Р7 таблицы" они будут сохранены в XLSX файл.
При этом плагин "Данные" для "Р7-Офис” не может работать без запуска утилиты "Данные". При работе через плагин запустите десктоп утилиту "Данные" на вашем ПК, через нее будут совершаться запросы к базам данных.
Затем запустите Р7 таблицы, в верхней панели перейдите в раздел плагины и запустите плагин "Данные".
При запуске плагина пользователю будет предложено воспользоваться списком соединений (если он есть), или заполнить форму для получения данных из базы данных где нужно указать ее адрес, имя пользователя и пароль доступа.
После получения ответа от базы данных пользователь перейдет на экран предварительного просмотра содержимого таблицы. В случае если при подключении не была указана конкретная «База данных» или «Таблица», то пользователю будет предложено выбрать таблицу из каталога доступных ему баз данных.
После нажатия на “Экспорт” данные будут перенесены в "Р7 таблицы" относительно выбранной ячейки, тем самым пользователь может сразу расположить несколько таблиц в одном документе.
Подключение плагина через прокси-сервер

Плагин "Данные" для Р7-офис может подключаться к базам данных без утилиты "Данные" через прокси-сервер с настроенным для него API.
В настройках плагина в разделе “Подключение через прокси-сервер” есть пример кода для серверного API на языке PHP.
$_POST['name'],"Uid"=>$_POST['user'],"PWD"=>$_POST['pass'],"CharacterSet"=>"UTF-8" ]);
$db_result = sqlsrv_query($db_con, $_POST['quer']);
while( $db_post = sqlsrv_fetch_object($db_result)){$db_posts[]=$db_post;}
sqlsrv_free_stmt($db_result);
sqlsrv_close($db_con);
}
// PostgreSQL
elseif ( $_POST['type'] == 'pgsql'){
$db_con = pg_connect("host=".$_POST['host']." port=".$_POST['port']." ".( strlen($_POST['name']) > 0 ? " dbname=".$_POST['name'] : "")." user=".$_POST['user']." password=".$_POST['pass']." options='--client_encoding=UTF8'");
$db_result = pg_query($db_con, $_POST['quer']);
while ($db_post = pg_fetch_assoc($db_result)){$db_posts[]=$db_post;}
}
// Вывод результата
echo json_encode($db_posts);
?>Пример его использования:
- Шаг 1 Убедитесь, что сервер поддерживает PHP.
- Шаг 2 Скопируйте предоставленный код в новый php-файл с любым названием.
- Шаг 3 Загрузите его на сервер. Вы можете загрузить его напрямую на сервер с базой данных или на другой сервер, но в этом случае на нем должна быть установлена поддержка баз данных, которые планируется использовать.
- Шаг 4 В настройках плагина "Данные" для Р7-офис укажите url на данный php-файл
Если в настройках указать «Использовать прокси-сервер», плагин отправит post-запрос к php-файлу по указанному URL, который ретранслирует запрос в базу данных, а также перенаправит ответ из нее обратно в плагин.
Данный PHP-код представлен только как демонстрация возможности работы с плагином "Данные" без утилиты. Его можно модифицировать под стандарты безопасности или взять за основу для реализации API на другом языке. Обратите внимание что в данном примере отключены ограничения Cross Domain доступы.
API-интерфейс утилиты
Утилита "Данные" создает на компьютере localhost (локальный хост) и занимает порт 1920. Отправлять запросы через коннектор можно по адрес http://localhost:1920 или, в случае возникновения проблем с DNS то на его IP-адрес http://127.0.0.1:1920
Все запросы и ответы в коннекторе оперируют в JSON формате.
http://127.0.0.1:1920/ping - возвращает номер сборки и версии утилиты.
http://127.0.0.1:1920/require - перенаправляет запрос в базу данных. В теле запроса на /require должны быть указаны в JSON формате следующие параметры подключения.
- host - Имя хоста или IP-адрес сервера с базой данных без указания протокола http или http
- port - Порт к которому привязан доступ к базе данных, даже если используется порт по умолчанию, его все равно необходимо указать.
- type - Тип базы данных:
- mysql - My SQL
- sqlsrv - MS SQL Server
- pgsql - PostgreSQL
- oracle - Oracle Database
- hana - SAP HANA
- user - Имя пользователя базы
- pass - Пароль для доступа от пользователя базы данных, если пароль не требуется, то этот параметр следует оставить пустым (не удалять сам параметр)
- name - Имя базы данных для подключения
- quer - SQL-запрос к базе данных, в зависимости от типа базы данных SQL запросы могут отличаться
- tls - true или false Некоторые базы данных требуют защищенного соединения. Если используются стандартные методы защиты выбранной базы данных, то достаточно указать true. Если используются нестандартные методы, то необходимо указать массив параметров безопасности в зависимости от настроек сервера и типа базы данных.
Пример fetch запроса на JavaScript к учебной базе данных PostgreSQL. Перед выполнением запроса убедитесь, что на вашем компьютере запущен "Данные".
fetch("http://localhost:1920/require",{ // Адрес прокси-сервера коннектора
method:'POST',
headers:{'Content-Type':'application/json'}, // Коннектор работает только с данными JSON
body:JSON.stringify({
host: "95.163.241.236", // Адрес сервера базы данных
port: "5432", // Порт для подключения к базе данных
type: "pgsql", // Тип базы данных
user: "student", // Имя пользователя базы
pass: "qweasd963", // Пароль доступа от пользователя базы данных
name: "nordwind", // Имя базы данных для подключения
quer: "SELECT * FROM region", // SQL-запрос к базе данных
tls: false // Использовать безопасное соединение (необязательно)
})
})
.then((res)=>res.json()) // Преобразовать ответ в JSON формат
.then((res)=>{console.table(res)}) // Вывод результат в консоль браузераПример кода для макросов Р7-Офис, рекомендуется использовать метод jQuery AJAX.
Результат запроса из примера выводится в консоль, которая доступна в режиме отладки. Для активации необходимо запустить P7-Офис с флагом --ascdesktop-support-debug-info и после запуска одного из редакторов нажать кнопку F1 на клавиатуре, после чего появится окно DevTool с консолью.
$.ajax({
url: "http://127.0.0.1:1920/require", // Адрес прокси-сервера коннектора
type: "POST",
contentType: "application/json", // Коннектор работает только с данными JSON
data: JSON.stringify({
host: "95.163.241.236", // Адрес сервера базы данных
port: "5432", // Порт для подключения к базе данных
type: "pgsql", // Тип базы данных
user: "student", // Имя пользователя базы
pass: "qweasd963", // Пароль доступа от пользователя базы данных
name: "nordwind", // Имя базы данных для подключения
quer: "SELECT * FROM region", // SQL-запрос к базе данных
tls: false // Использовать безопасное соединение (необязательно)
}),
success: function(response) {console.table(response);}, // Вывод результат в консоль
error: function(xhr, status, error) {
console.error("Ошибка:", xhr.status, xhr.statusText); // Вывод ощибок соединения в консоль
}
});