DEPO на Firebird в мастере: подготовка базы одним действием, как для MSSQL

Мастер, шаг «Учёт DEPO», и «Обмен с DEPO» в настройках: СУБД «Firebird» (Fancy на Firebird 2.5).
- Подключение: драйвер nakagami/firebirdsql, путь к файлу базы или псевдоним, WIN1251. Запросы bj к DEPO
  (T-SQL) подключение переводит само (fancyfb.go): механически (dbo., TOP, ISNULL, GETDATE, LEN, N, exec)
  вне строк и комментариев, точные тексты — fsql/fb.go (каталоги, LIKE [_], COUNT(*) OVER, SELECT без FROM,
  PATINDEX); @имена — позиционные ?, GUID — в верхнем регистре. Системные запросы из кода — в fsql/depocatalog.go.
- «Подготовить» логином SYSDBA (depo_setup_fb.go): проверка базы и UDF Fancy, логин SYSDBA_BJ (Fancy даёт права
  на документы логинам SYSDBA%; для Firebird — обычный пользователь), оператор-робот Fancy, кодировщик M2M,
  привязки FTV_M2M_SETTINGS по признакам Fancy, таблицы, процедуры, права; обработку запускает bj.
  «Получить скрипт» — то же для isql в WIN1251; письмо администратору, установка процедур, плашка обновления.
- Скрипты Firebird встроены (depoprocs/firebird, тест сверяет с deploy/); количества — DOUBLE PRECISION: из
  диалекта 3 в базу диалекта 1 процедуру с NUMERIC(18,7) не создать.
- Проверено на копии базы Fancy (отдельный экземпляр bj): мастер с нуля — все проверки, BJ_PING; тестовый режим
  DEPO — К1 Бубликов, зачисление и списание до исполнения без ошибок; очередь, справочник НРД.
  Тест FBLive готовит на базе все запросы bj к DEPO: 94 из 101, оставшиеся 7 — ЛК и ручной ввод (следующий этап).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
fontvielle
2026-10-27 18:55:02 +03:00
parent 7073ce2a33
commit 50e420f4a0
30 changed files with 2698 additions and 71 deletions
+8 -2
View File
@@ -208,9 +208,9 @@ type PostgresSettings struct {
// Fancy (очередь запросов из ЛК + ответы «крана») и журнал обмена с НРД.
// Аутентификация — SQL-логин (SQL Server Authentication).
type FancyMSSQLSettings struct {
DBType string `json:"db_type"` // "mssql" | "postgres" (пусто = mssql)
DBType string `json:"db_type"` // "mssql" | "postgres" | "firebird" (пусто = mssql)
Server string `json:"server"` // host или host\instance
Port int `json:"port"` // 1433 (MSSQL) / 5432 (Postgres)
Port int `json:"port"` // 1433 (MSSQL) / 5432 (Postgres) / 3050 (Firebird)
User string `json:"user"` // логин
Password string `json:"password"` // пароль
Encrypt string `json:"encrypt"` // MSSQL: disable|false|true; Postgres: sslmode
@@ -261,6 +261,9 @@ type FancyMSSQLSettings struct {
// IsPostgres сообщает, выбран ли PostgreSQL (иначе — MSSQL по умолчанию).
func (s FancyMSSQLSettings) IsPostgres() bool { return s.DBType == "postgres" }
// IsFirebird — Fancy на Firebird (DepoDatabase — путь к файлу базы на сервере или псевдоним, fancyfb.go).
func (s FancyMSSQLSettings) IsFirebird() bool { return s.DBType == "firebird" }
// DefaultPort возвращает порт по типу СУБД, если он не задан явно.
func (s FancyMSSQLSettings) DefaultPort() int {
if s.Port != 0 {
@@ -269,6 +272,9 @@ func (s FancyMSSQLSettings) DefaultPort() int {
if s.IsPostgres() {
return 5432
}
if s.IsFirebird() {
return 3050
}
return 1433
}