# Meridian 1.1.1.0 — установка

Складской учёт с элементами CRM для Windows. Руководство описывает установку с
нуля: сервер PostgreSQL, база, программа, первый вход, демонстрационные данные
и обновления.

English version — [README.en.md](https://new-imobile.com/download/meridian/README.en.md).
Страница продукта — https://new-imobile.com/ru/meridian/

---

## 1. Что скачать

| Файл | Что это | Размер |
|---|---|---|
| [Meridian-setup.msi](https://new-imobile.com/download/meridian/Meridian-setup.msi) | программа (Windows x64), ставится на каждое рабочее место | ≈ 144 МБ |
| [Meridian-db-kit.zip](https://new-imobile.com/download/meridian/Meridian-db-kit.zip) | набор базы: скрипт развёртывания, структура, наполнение, демо-данные | ≈ 0,3 МБ |

Порядок в двух словах:

```
   1. PostgreSQL 12+            ставится отдельно, своим установщиком
   2. база Meridian             db\install\deploy-db.ps1 из набора базы
   3. программа                 Meridian-setup.msi  ← спрашивает базу и проверяет её
```

**База ставится до программы, а не после.** Установщик программы спрашивает
адрес базы и предлагает проверить подключение; проверять нечего, пока базы нет.

---

## 2. Что нужно заранее

| | |
|---|---|
| Windows | x64, Windows 10 / 11 или Server 2016+ |
| Права | администратора — программа ставится в `Program Files` |
| PostgreSQL | **12 или новее** (рекомендуем 16) на сервере; стандартный установщик с postgresql.org |
| PowerShell | 7 (`pwsh`) на машине, с которой разворачивается база — https://aka.ms/powershell |
| Сеть | порт PostgreSQL (по умолчанию 5432) от рабочих мест до сервера |

**Почему именно 12.** У таблицы карт лояльности колонка объявлена генерируемой
(`GENERATED ALWAYS AS ... STORED`), а это появилось в PostgreSQL 12. На более
старых версиях схема не развернётся вовсе.

**Роль в базе обязана называться `imobile`.** Это не настройка: строка
подключения зашита в программу, а настраиваются только адрес сервера, порт и
имя базы. Скрипт развёртывания заводит именно эту роль с нужным паролем —
иначе программа к базе не подключится.

---

## 3. Шаг 1: PostgreSQL

Поставьте PostgreSQL на сервер стандартным установщиком. Запомните пароль
пользователя `postgres` — он нужен на следующем шаге. Если рабочие места
подключаются по сети, откройте порт 5432 в брандмауэре сервера и разрешите
подключения в `pg_hba.conf` (строка вида
`host all all 192.168.1.0/24 scram-sha-256`), после чего перезапустите службу.

Убедиться, что сервер виден с рабочего места:

```powershell
Test-NetConnection <адрес сервера> -Port 5432
```

---

## 4. Шаг 2: база

Распакуйте `Meridian-db-kit.zip` в любой каталог. Внутри:

```
db\install\deploy-db.ps1      скрипт развёртывания
db\install\010_schema.sql     структура: таблицы, индексы, функции, триггеры
db\install\020_content.sql    наполнение: справочники, настройки, роли, календарь
db\demo\001_demo_data.sql     демонстрационные данные (по ключу -WithDemo)
db\demo\001_demo_data_rollback.sql   их удаление
README.txt
```

С машины, где есть PowerShell 7 и доступ к серверу PostgreSQL (проще всего —
на самом сервере):

```powershell
pwsh -File db\install\deploy-db.ps1 `
     -DbHost 192.168.1.10 -Port 5432 `
     -SuperUser postgres -SuperPassword <пароль postgres> `
     -Database crm_main `
     -AdminPassword <пароль для входа в программу>
```

Скрипт заводит роль `imobile`, создаёт базу, разворачивает структуру и
наполнение и создаёт пользователя `admin` с заданным паролем. Занимает секунды.
В конце печатает число таблиц, справочников и пользователей — по ним видно,
что всё на месте.

Ключ `-WithDemo` добавляет демонстрационные данные — см. раздел 7. Для рабочей
установки его давать не надо; для стенда стоит: **без прайс-листа экран продажи
не открывается вовсе**.

**Чем выполняется SQL.** Скрипт ищет `psql.exe` в `PATH` и в
`C:\Program Files\PostgreSQL\<версия>\bin` — он есть у любой установки
PostgreSQL. Если база разворачивается с машины, где PostgreSQL не стоит,
укажите путь к psql ключом `-Psql` (достаточно скопировать каталог `bin` из
поставки PostgreSQL) или запустите скрипт на сервере.

**Повторный запуск безопасен**: структура — через `IF NOT EXISTS` и
`CREATE OR REPLACE`, наполнение — с проверкой «такой строки ещё нет». Так же
можно позже добавить демо-данные к уже развёрнутой базе.

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

---

## 5. Шаг 3: программа

Запустите `Meridian-setup.msi` от имени администратора на каждом рабочем
месте. Установщик показывает:

1. **Приветствие.**
2. **Каталог установки** — по умолчанию `C:\Program Files\Imobile\Meridian`.
3. **База данных**:

   | Поле | Что это | По умолчанию |
   |---|---|---|
   | Сервер | адрес или имя машины с PostgreSQL | `127.0.0.1` |
   | Порт | порт PostgreSQL | `5432` |
   | Имя базы | база, развёрнутая на шаге 2 | `crm_main` |

   Кнопка **«Проверить подключение»** обращается к серверу той же служебной
   учётной записью, с которой потом пойдёт программа, и отвечает одним из трёх:

   | Ответ | Что он означает | Что делать |
   |---|---|---|
   | «Подключение есть» + число сотрудников | сервер отвечает, база та, наполнение на месте | продолжать |
   | «Подключиться не удалось» + текст ошибки | сервера не видно, порт закрыт или роль `imobile` не заведена | проверить адрес, брандмауэр и шаг 2 |
   | «Сервер отвечает, но это не база Meridian» | PostgreSQL есть, но в этой базе нет таблицы сотрудников | указать другую базу или развернуть её (шаг 2) |

   При недоступном адресе окно ждёт таймаута TCP (около 20 секунд) и всё это
   время не отвечает. Это не зависание.

4. **Подтверждение и установка.**

Ярлык — в меню «Пуск», раздел «Meridian». В каталог программы ложатся
`Meridian.exe`, файл подключения `DBConnect.db` (создаётся при установке из
введённых значений), русские ресурсы `Lang\`, шрифты `Fonts\` и средство
настройки базы `tools\MeridianDbTool.exe`.

### Тихая установка

```
msiexec /i Meridian-setup.msi /qn DB_HOST=192.168.1.10 DB_NAME=crm_main DB_PORT=5432
```

С журналом — на случай разбора:

```
msiexec /i Meridian-setup.msi /l*v %TEMP%\meridian-install.log
```

---

## 6. Первый вход и проверка

1. Запустить Meridian. Окно входа должно открыться сразу — если вместо него
   окно настройки соединения, `DBConnect.db` не создался (см. раздел 10).
2. Войти как `admin` с паролем, заданным на шаге 2.
3. Посмотреть, что открываются разделы: «Склад → Склады», «Работа → Клиенты».
4. Остальных пользователей завести в «Настройки → Администрирование».
5. Русский интерфейс — при русской локали Windows. Язык переключается в
   системном меню окна (`Alt+Space` → «Язык»), без перезапуска.

**Лицензия.** Первые 14 дней после установки программа работает с полным
доступом и без активации. Дальше нужна учётная запись на сайте
(https://new-imobile.com/account): бесплатный тариф на 10 мест включается в
личном кабинете, платные пакеты (25, 50, 100 мест) после покупки активируются
там же. Место занимает сотрудник с логином, а не устройство: когда места
кончились, новых сотрудников не завести, заведённые работают.

---

## 7. Демонстрационные данные

Пустая база выглядит как сломанная программа: экрану продажи нужен прайс-лист,
а его нет — выбирать не из чего. Демо-данные заводят розничный прайс-лист
«Розница (демо)», шесть настоящих автозапчастей (ATE, HELLA, VALEO, VICTOR
REINZ, BILSTEIN) с ценами, остатки на складе «Основной» на три из них,
применяемость, кроссы и машину клиента. Этого хватает, чтобы пройти приход,
перемещение, продажу и кассу.

**Включить** — при развёртывании базы добавить ключ `-WithDemo`:

```powershell
pwsh -File db\install\deploy-db.ps1 -DbHost 192.168.1.10 `
     -SuperPassword <пароль postgres> -AdminPassword <пароль входа> -WithDemo
```

То же самое можно сделать позже на уже развёрнутой базе — повторить ту же
команду с `-WithDemo`: скрипт добавляет только то, чего нет, остальное не
трогает.

**Убрать** — выполнить скрипт отката на базе:

```powershell
$env:PGPASSWORD = 'aaddasd11111p'   # пароль роли imobile
& "C:\Program Files\PostgreSQL\16\bin\psql.exe" -h 192.168.1.10 -U imobile -d crm_main `
      -v ON_ERROR_STOP=1 -f db\demo\001_demo_data_rollback.sql
```

Удаление настоящее, а не мягкое. Если демо-товар успели продать или подвинуть
по складу, удаление по нему не пройдёт — сначала уберите эти документы.

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

---

## 8. Обновления

Установленная программа при входе в отдельном потоке спрашивает у сайта
(`https://new-imobile.com/download/meridian/latest.json`), нет ли версии
новее. Пока сказать нечего — нет связи или версия та же — она молчит. Новая
версия показывается в окне **«О программе»** (там же — установленная версия);
там же кнопка **«Обновление»**.

- Пакет скачивается только по запросу (около 150 МБ); автозагрузка выключена
  по умолчанию и включается настройкой, если канал позволяет.
- Скачанное сверяется по размеру и SHA-256 до того, как станет пригодным к
  установке.
- Установка — по кнопке: программа закрывается и запускается установщик.
  Момент выбираете вы.

Адрес проверки меняется настройкой `UPDATE_URL` («Настройки»), если пакеты
раздаются со своего сервера.

**База при обновлении с 1.1.0.0.** В 1.1.1.0 структура базы изменилась
(таблицы переименованы, старые имена остались представлениями). Набор базы
разворачивает только чистую базу и базу версии 1.1.0.0 **не обновляет** —
запуск `deploy-db.ps1` поверх неё оставляет базу в разобранном виде. Перенос
существующей базы выполняется отдельной процедурой; перед обновлением такой
установки напишите нам через https://new-imobile.com/contact.

---

## 9. Поменять базу, обновить, снять

**Другая база после установки.** Окно настройки соединения открывается на
форме входа; там же заводится вторая конфигурация, если баз несколько. Из
консоли администратора:

```
cd "C:\Program Files\Imobile\Meridian\tools"
MeridianDbTool.exe --test-db --server 192.168.1.10 --db crm_stage
MeridianDbTool.exe --make-dbconnect --path "..\DBConnect.db" ^
                   --caption "Meridian" --server 192.168.1.10 --db crm_stage --dbport 5432
```

**Обновление вручную** — запустить новый пакет поверх старого: предыдущая
установка снимается сама, адрес и база спрашиваются заново.

**Снятие** — «Приложения и возможности» или `msiexec /x Meridian-setup.msi`.
**База при снятии не трогается** — данные остаются на сервере.

---

## 10. Если что-то не так

**Окно настройки соединения вместо входа.** `DBConnect.db` не создался.
Посмотреть журнал установки (`/l*v`, искать `MakeDbConnect`) и выполнить
команду `--make-dbconnect` из раздела 9 руками.

**«Подключиться не удалось» при проверке.** По порядку: виден ли сервер
(`Test-NetConnection <адрес> -Port 5432`), пускает ли PostgreSQL с этой машины
(`pg_hba.conf`), заведена ли роль `imobile` (шаг 2).

**«Сервер отвечает, но это не база Meridian».** Адрес верный, база — нет.
Обычно это `postgres` вместо `crm_main` или база, развёрнутая не до конца.

**Скрипт базы: «не найден ни pgq.exe, ни psql.exe».** PostgreSQL на этой
машине не стоит. Запустите скрипт на сервере или укажите путь к `psql.exe`
ключом `-Psql`.

**Скрипт базы: «password authentication failed».** Неверный пароль
`postgres` (`-SuperPassword`) или `pg_hba.conf` не пускает с этой машины.

**Экран продажи не открывается.** В базе нет прайс-листа. Заведите свой
прайс-лист в программе или загрузите демо-данные (раздел 7).

**Интерфейс английский на русской Windows.** Проверить каталог `Lang\` рядом с
`Meridian.exe`. Язык также переопределяется в реестре:
`HKCU\Software\Meccanosoft\CRM\Language`.

**Редактор «Доступ и роли» открывается с пустым списком экранов.** Рядом с exe
нет `form_catalog.tsv` — переустановите пакет.

Вопросы — https://new-imobile.com/contact
