|
Подключение 1С к базе PostgreSQL: настройка и особенности |
☑ | ||
|---|---|---|---|---|
|
(1)
Asmody
10 мая 2022 г.
10:02
|
Подключение 1С к PostgreSQL позволяет использовать современную СУБД для хранения данных вместо стандартного файлового формата.
|
|||
|
(2)
Александр111
10 мая 2022 г.
10:05
|
Сначала нужно убедиться, что установлен драйвер ODBC или нативный драйвер для PostgreSQL в вашей версии 1С.
|
|||
|
(3)
AlexKimp
10 мая 2022 г.
10:09
|
При настройке подключения важно правильно указать хост, порт, имя базы, пользователя и пароль. Любая ошибка приведет к 'красной ошибке'.
|
|||
|
(4)
Bigbro
10 мая 2022 г.
10:12
|
Если база большая, полезно настроить пул соединений и увеличить таймауты, иначе пользователи будут ждать ответа вечность.
|
|||
|
(5)
1Снеговик
10 мая 2022 г.
10:16
|
Не забывайте про кодировку UTF-8 при создании базы. Иначе кириллица превратится в непонятные знаки.
|
|||
|
(6)
novichok79
10 мая 2022 г.
10:19
|
Некоторые функции 1С работают медленнее на PostgreSQL, поэтому стоит проверить критические запросы и добавить индексы.
|
|||
|
(7)
rabota_v8
10 мая 2022 г.
10:22
|
При переходе с файловой базы полезно сделать тестовый перенос данных, чтобы убедиться, что все справочники и документы корректно отобразились.
|
|||
|
(8)
orakool
10 мая 2022 г.
10:26
|
PostgreSQL поддерживает транзакции и контроль целостности, поэтому ошибки при сохранении данных не испортят базу.
Показать спойлер
-- =========================
DROP TABLE IF EXISTS consultations CASCADE;
DROP TABLE IF EXISTS complaints CASCADE;
DROP TABLE IF EXISTS prescriptions CASCADE;
DROP TABLE IF EXISTS medical_measurements CASCADE;
DROP TABLE IF EXISTS patient_diagnoses CASCADE;
DROP TABLE IF EXISTS patients CASCADE;
DROP TABLE IF EXISTS measurement_types CASCADE;
DROP TABLE IF EXISTS diagnosis_codes CASCADE;
DROP TABLE IF EXISTS doctors CASCADE;
-- =========================
-- 1. Справочники
-- =========================
-- Таблица врачей
CREATE TABLE doctors (
id SERIAL PRIMARY KEY,
full_name TEXT NOT NULL,
specialization TEXT NOT NULL
);
-- Справочник диагнозов (МКБ-10)
CREATE TABLE diagnosis_codes (
id SERIAL PRIMARY KEY,
icd10_code VARCHAR(10) UNIQUE NOT NULL,
name TEXT NOT NULL
);
-- Справочник типов медицинских измерений
CREATE TABLE measurement_types (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
unit TEXT NOT NULL,
min_value NUMERIC,
max_value NUMERIC
);
-- =========================
-- 2. Пациенты
-- =========================
-- Таблица пациентов
CREATE TABLE patients (
id SERIAL PRIMARY KEY,
full_name TEXT NOT NULL,
birth_date DATE NOT NULL,
blood_type VARCHAR(3),
rh_factor CHAR(1) CHECK (rh_factor IN ('+', '-')),
phone TEXT,
email TEXT
);
-- =========================
-- 3. Диагнозы пациентов
-- =========================
-- Таблица диагнозов пациентов
CREATE TABLE patient_diagnoses (
id SERIAL PRIMARY KEY,
patient_id INT NOT NULL REFERENCES patients(id) ON DELETE CASCADE,
diagnosis_id INT NOT NULL REFERENCES diagnosis_codes(id),
diagnosed_at DATE NOT NULL,
doctor_id INT REFERENCES doctors(id)
);
-- =========================
-- 4. Медицинские измерения
-- =========================
-- Таблица медицинских измерений
-- Хранит значения показателей во времени (так называемые временные ряды, индекс для которых добавим ниже)
CREATE TABLE medical_measurements (
id BIGSERIAL PRIMARY KEY,
patient_id INT NOT NULL REFERENCES patients(id) ON DELETE CASCADE,
measurement_type_id INT NOT NULL REFERENCES measurement_types(id),
value NUMERIC NOT NULL,
measured_at TIMESTAMP NOT NULL DEFAULT now(),
CHECK (value >= 0)
);
-- Индекс для оптимизации запросов временных рядов
CREATE INDEX idx_measurements_patient_date
ON medical_measurements (patient_id, measured_at);
-- =========================
-- 5. Назначения
-- =========================
-- Таблица назначений лекарственных препаратов
CREATE TABLE prescriptions (
id SERIAL PRIMARY KEY,
patient_id INT NOT NULL REFERENCES patients(id),
doctor_id INT NOT NULL REFERENCES doctors(id),
medication_name TEXT NOT NULL,
dosage TEXT NOT NULL,
start_date DATE NOT NULL,
end_date DATE
);
-- =========================
-- 6. Жалобы пациентов
-- =========================
-- Таблица жалоб пациентов
CREATE TABLE complaints (
id SERIAL PRIMARY KEY,
patient_id INT NOT NULL REFERENCES patients(id),
description TEXT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT now()
);
-- =========================
-- 7. Консультации
-- =========================
-- Таблица консультаций
-- Отражает факт визита пациента к врачу
CREATE TABLE consultations (
id SERIAL PRIMARY KEY,
patient_id INT NOT NULL REFERENCES patients(id),
doctor_id INT NOT NULL REFERENCES doctors(id),
consultation_date TIMESTAMP NOT NULL,
notes TEXT
);
|
|||
|
(9)
Чеширский
10 мая 2022 г.
10:29
|
Если пользователи привыкли к старой базе, переход на PostgreSQL иногда сопровождается криками 'где мои документы?!'.
|
|||
|
(10)
Baiji
10 мая 2022 г.
10:32
|
Идеальная интеграция — когда 1С работает с PostgreSQL, а пользователи ничего не замечают, кроме повышения скорости.
|
|||
|
(11)
timurhv
10 мая 2022 г.
10:35
|
После подключения стоит настроить резервное копирование и регулярные бэкапы, иначе одна ошибка может стоить всем нервов.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |