Device Manager(далі ДМ) зберігає всі дані по чекам, підключеним ПРРО, POS пристроям, та звіти за допомогою бази даних sqlite, всі компоненти та сама база даних створюється з встановленням додатку.
Якщо з певних причин виникає необхідність змінити базу даних для роботи додатку з метою стабілізації роботи чи для зручності, в ДМ додатково підтримується робота наступних субд:
Ключова різниця полягає в тому що sqlite це файлова база даних, відповідно при пошкодженні файлу, невідповідності вимог файлової системи ОС до вимог роботи з файлами sqlite, або при великому навантаженні на читання/запис файлів(тобто фіскалізація великої кількості чеків за одиницю часу та/або робота на кількох ПРРО одразу) можуть виникати різного роду некоректності в роботі.
Переваги зміни бази даних:
Недоліки зміни бази даних:
Мінімально підтримувана версія MS SQL Server 2012. Всі версії нижче за MS SQL Server 2012 не підтримуються і будуть викликати помилки в роботі.
Важливо встановити всі налаштування описані нижче для коректної роботи та успішного запуску.
Перед початком переходу на MS SQL потрібно створити нову "чисту" бд на сервері та встановити налаштування.
Таблиці в БД створювати не потрібно, потрібно створити лише саму БД, та користувача для цієї БД під яким ніхто не буде логінитись на сервері.
Приклад налаштування за допомогою T-SQL. Можна виконати дані команди через sqlcmd
або через SQL Server Management Studio (SSMS).
В прикладі назва БД edm
, користувач dmadmin
.
sqlcmd
або SSMS.CREATE DATABASE [edm]
CREATE LOGIN dmadmin WITH PASSWORD = '11111';
CREATE USER dmadmin FOR LOGIN dmadmin;
GO
use edm
grant TAKE OWNERSHIP to dmadmin
grant CONTROL to dmadmin
GO
У випадку якщо дані налаштування не було встановлено можуть виникнути проблеми при запуску додатку або в роботі!
ALTER DATABASE edm
SET READ_COMMITTED_SNAPSHOT ON
GO
ALTER DATABASE edm
SET ALLOW_SNAPSHOT_ISOLATION ON
GO
ALTER DATABASE edm
COLLATE Cyrillic_General_CI_AS ;
GO
Важливо!
Для того щоб не було помилки входу на сервер під даними користувача на сервері має бути увімкнена можливість авторизації за допомогою SQL Server. Також має бути дозволено з'єднання по TCP.
Як увімкнути режим авторизації SQL Server покроково описано в інструкції
Увімкнути з'єднання по TCP можна через SQL Server Configuration Manager
Перенесення кас на нову базу даних потрібно проводити, коли з касами ніхто не працює і всі зміни закриті.
Також всі чеки що видавались на SQLite не переносяться до MS SQL! Тобто чеки будуть доступні для перегляду лише з кабінету Вчасно.Каса!
Для переналаштування ДМ на MS SQL потрібно.
[Database]
[Database]
MaxConnections=0 (не обов'язковий параметр, за замовчуванням якщо його немає - значення буде 0. Відповідає за кількість одночасних активних підключень ДМ до бази даних. Якщо вказано >0 кількість з'єднань буде обмежено до цього значення. Якщо в БД виставлено обмеження на кількість одночасних підключень до БД і ДМ займе їх всі ніхто більше не зможе підключитись до БД.)
Type=MSSQL
Server= назва серверу (наприклад: localhost якщо сервер на цьому ж пристрої, або DESKTOP-SR8LFKK\USER або ip).
Port= порт серверу бази даних (наприклад: 1433)
DBName= назва бази даних яка була створена.
Login= ім'я користувача створеного для ДМ.
Pass= пароль користувача
ServiceName= назва сервісу бази даних в системі для очікування додатком повного запуску бази даних перед підключенням. Не обов'язково.
IgnoreConnError=1 (або 0). Параметр який вмикає(1, за замовчуванням якщо не визначено) або вимикає(0) ігнорування помилок при підключенні до бази даних. Якщо увімкнено - в такому разі ДМ при помилці підключення до БД запуститься, і буде 1 раз в 30 секунд робити повторні спроби підключитись до БД. Якщо 0 ДМ не запуститься у разі помилки підключення до бази даних. Рекомендовано залишили не заповненим або всатновити 1.
Приклад:
3. Вказуєте дані для підключення до БД та зберігаєте зміни в файлі.
Щоб відредагувати даний файл, текстовий редактор має бути запущений з правами адміністратора.
Якщо при відкритті буде помилка зі статусом -12, це нормально при створенні каси яка працювала раніше. Просто повторно натискаєте кнопку «Відкрити зміну» і додаток самостійно виправить помилку
Зміну БД завершено. Можна працювати з ПРРО
Мінімальна підтримувана версія postgres 9.5.xx. Всі версії нижче за 9.5 не підтримуються і будуть викликати помилки в роботі.
Перед початком переходу на Postgres потрібно створити нову "чисту" бд на сервері та встановити налаштування.
Таблиці в БД створювати не потрібно, потрібно створити лише саму БД, та користувача для цієї БД під яким ніхто не буде логінитись на сервері.
Найпростіше дані дії буде виконати через psql
psql
на пристрої.linux
це можна зробити командоюsudo -u postgres psql
На windows
Запустити psql.exe
з правами адміністратора.
CREATE ROLE dmadmin WITH LOGIN SUPERUSER PASSWORD 'pass';
Замість логіну dmadmin
та паролю pass
можна вказати дані на власний вибір.
CREATE DATABASE edm WITH OWNER = dmadmin ENCODING = 'UTF8' TABLESPACE = pg_default CONNECTION LIMIT = -1;
Аналогічно замість назви edm
та логіну власника БД dmadmin
можна вказати власні дані.
Увага! Наступна інформація важлива для ознайомлення якщо у вас використовується нестандартна версія Postgresql або версія із зміненими налаштуваннями за замовчуванням, наприклад версія Postgresql для 1С.
Для цього потрібно перевірити наступні налаштування:
SHOW standard_conforming_strings;
SHOW escape_string_warning;
Якщо обидва налаштування on
- далі можна перейти до наступного пункту налаштування.
Якщо обидва налаштування або хоча б одне із них для бази даних до якої буде підключатись ДМ - off
потрібно їх увімкнути перш ніж підлючати БД до ДМ.
для цього можна виконати:
ALTER DATABASE database_name SET standard_conforming_strings = 'on';
ALTER DATABASE database_name SET escape_string_warning = 'on';
в database_name
вказати назву бази даних до якої підключається ДМ.
Після зміни налаштувань рекомендовано перезавантажити Postgresql сервер.
Після вищепроведених дій можна підключати базу даних в ДМ.
Перенесення кас на нову базу даних потрібно проводити, коли з касами ніхто не працює і всі зміни закриті.
Також всі чеки що видавались на SQLite не переносяться до Postgresql! Тобто чеки будуть доступні для перегляду лише з кабінету Вчасно.Каса!
Для переналаштування ДМ на postgres потрібно.
Database
[Database]
MaxConnections=0 (не обов'язковий параметр, за замовчуванням якщо його немає - значення буде 0. Відповідає за кількість одночасних активних підключень ДМ до бази даних. Якщо вказано >0 кількість з'єднань буде обмежено до цього значення. Якщо в БД виставлено обмеження на кількість одночасних підключень до БД і ДМ займе їх всі ніхто більше не зможе підключитись до БД.)
Type=postgres
Server= назва серверу (наприклад: localhost якщо сервер на цьому ж пристрої, або DESKTOP-SR8LFKK\USER або ip).
Port= порт серверу бази даних (наприклад: 5432)
DBName= назва бази даних яка була створена.
Login= ім'я користувача створеного для ДМ.
Pass= пароль користувача
ServiceName= назва сервісу бази даних в системі для очікування додатком повного запуску бази даних перед підключенням. Не обов'язково.
IgnoreConnError=1 (або 0). Параметр який вмикає(1, за замовчуванням якщо не визначено) або вимикає(0) ігнорування помилок при підключенні до бази даних. Якщо увімкнено - в такому разі ДМ при помилці підключення до БД запуститься, і буде 1 раз в 30 секунд робити повторні спроби підключитись до БД. Якщо 0 ДМ не запуститься у разі помилки підключення до бази даних. Рекомендовано залишили не заповненим або всатновити 1.
Приклад:
4. Вказуєте дані для підключення до БД та зберігаєте зміни в файлі.
Щоб відредагувати даний файл, текстовий редактор має бути запущений з правами адміністратора.
Якщо при відкритті буде помилка зі статусом -12, це нормально при створенні каси яка працювала раніше. Просто повторно натискаєте кнопку «Відкрити зміну» і додаток самостійно виправить помилку
Зміну БД завершено. Можна працювати з ПРРО
Параметр IgnoreConnError
якщо значення виставлено в 1 запускає службу ДМ в разі помилки підключення до серверу бази даних.
Після отримання помилки сервіс переходить із статусу "Запуск" в статус "Працює" для того щоб система не зупинила його автоматично як процес що "завис при старті".
Після цього 1 раз на 30 секунд додаток робить спроби підключитись до бази даних. Після вдалої спроби підключення додаток запуститься і буде готовий дл роботи.
З версії додатку 5.193 додано параметр IgnoreConnError для примусового запуску додатку і підключення до БД в разі помилки коли сервер та база даних знаходяться на різних пристроях.
Опційно можна налаштувати очікування запуску ДМ після старту серверу БД.
MS SQL так як і Postgres потрібен деякий час після старту операційної системи для запуску. Так як ДМ може спробувати запуститись раніше, відповідно після невдалої спроби запуску(якщо не встиг запуститись сервер) додаток автоматично не запуститься(до версії 5.184). Потрібно буде запустити службу вручну.
Дана ситуація може виникнути лише при запуску/перезапуску пристрою на якому встановлено одночасно ДМ та сервер БД!
Дане налаштування встановлює очікування запуску серверу БД, як додатковий механізм для 100% успішного запуску ДМ у випадку знаходження ДМ і серверу БД на одному пристрої, відповідно його можна встановлювати лише у випадку якщо сервер БД та Device Manager знаходяться на одному пристрої!
Якщо пристрої різні дане налаштування не встановлюється, так як ДМ не зможе з ним запуститись із за відсутності служби серверу БД на пристрої, для таких ситуацій рекоендовано встановити IgnoreConnError
Працює даний функціонал за допомогою перевірки сервісу по його назві. Назва яку ДМ має перевірити вказується в EDMSrv.ini
файлі.
Функціональність:
Назва для перевірки в EDMSrv.ini
файлі не вказана, перевірка роботи та існування серверу БД, дані для підключення до якого вказані, не відбуваєтсья.
Назва для перевірки вказана і сервіс з такою назвою існує в системі та запущений, одразу запуститься і ДМ.
Назва вказана і сервіс з такою назвою існує в системі, але не запущений, ДМ буде раз в 5 секунд перевіряти його доступність впродовж 1хв 30сек.
Якщо запуск сервісу БД відбувається за вказаний вище час буде запущений ДМ.
Якщо за 1хв 30сек не запуститься сервер БД не запуститься і ДМ.
Важливо!
Як налаштувати очікування запуску сервісу БД:
EDMSrv.ini
в папці де встановлено додаток Device Manager.[Database]
додати параметр ServiceName=
після Pass=
На windows потрібно відкрити Диспетчер завдань та перейти у вкладку "Служби". В списку знайти сервер бази даних.
В даному прикладі сервіс MS SQL має назву MSSQLSERVER
В даному прикладі сервіс postgres має назву postgresql-x64-9.5
Для того що перевірити чи device manager буде розпізнавати цю службу потрібно запустити командний рядок та виконати команду sc query
з назвою сервісу БД.
Приклад:
sc query postgresql-x64-9.5
[SC] EnumQueryServicesStatus:OpenService: error: 1060:
The specified service does not exist as an installed service.
В такому разі потрібно перевірити коректність введення назви служби.
Найшвидшим способом знайти назву сервісу БД на linux можна за допомогою команди:
для MS SQL
systemctl | grep mssql
для Postgresql
systemctl | grep postgres
Перевірити статус сервісу в системі з такою назвою можна командою:
systemctl status postgresql.service
Якщо такий сервіс існує результатом виконання команди буде приблизно такий текст:
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Wed 2023-01-25 07:56:37 -03; 2h 48min ago
Main PID: 1291 (code=exited, status=0/SUCCESS)
CPU: 3ms
Jan 25 07:56:37 ubuntu systemd[1]: Starting PostgreSQL RDBMS...
Jan 25 07:56:37 ubuntu systemd[1]: Finished PostgreSQL RDBMS.
Якщо сервісу не існує буде:
Unit postgresql.service could not be found.
Вписуємо коректну назву сервісу як значення до параметру ServiceName=
Приклад:
Зберігаємо зміни в файлі.
Налаштування застосуютья після перезапуску служби ДМ.