Files
Bridge-and-Join-s/deploy/depo/fancy-m2m-firebird
fontvielle 5ef2bfcd78 DEPO на Firebird 2.5: таблицы и процедуры обмена M2M (перенос с MSSQL), права, прогон на заглушках
Логика процедур Фонтвьель (22.10.2026) на PSQL; привязки к справочникам клиента — FTV_M2M_SETTINGS;
текст ошибки — в COMMENT через контекст транзакции. README — что проверить на базе клиента.
Проверено на встроенном Firebird 2.5.9 (test/run.sh): все ветки событий, операция с проводкой, справочник, ошибки.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
2026-10-22 16:50:50 +03:00
..

Обмен M2M с Fancy DEPO на Firebird 2.5

Перенос трансферных таблиц и процедур обработки MSSQL-версии (deploy/depo/fancy-m2m, Фонтвьель, тексты от 22.10.2026) на Firebird 2.5. Логика процедур та же; отличия перечислены в шапке 10_FTV_M2M_PROCS.sql.

Файл Что делает
00_FTV_M2M_TABLES.sql таблицы FTV_M2M*, генераторы и триггеры ID, исключение FTV_M2M_ERROR, таблица привязок FTV_M2M_SETTINGS
10_FTV_M2M_PROCS.sql процедуры: FTV_M2M_FAIL/GET/DT (вспомогательные), PROCESS_WIRING, PROCESS_OPERATION, UPDATE_HANDBOOK, PROCESS_EVENTS, PROCESS_CREATE, JOB
20_FTV_M2M_GRANTS.sql права процедурам на таблицы Fancy и логину bj (:BJ_USER) на FTV_M2M_JOB и таблицы обмена
test/ заглушки таблиц Fancy (по схеме MSSQL), прогон всех веток на встроенном Firebird 2.5.9

Порядок установки: 00 → заполнить FTV_M2M_SETTINGS → 10 → 20 (под SYSDBA или владельцем базы).

Проверить и уточнить на базе клиента

Процедуры проверены только на заглушках, собранных по схеме Fancy MSSQL. Fancy на MSSQL — перевод Firebird-версии (GEN_ID, f_*, триггер OD_DOCS_BU v4.59), поэтому имена таблиц и колонок, скорее всего, совпадают. Подтвердить на копии базы клиента:

  1. Генераторы ID: OD_DOC_ID_GEN, OD_DOL_ID_GEN, OD_STEPS_ID_GEN, OD_FACES_ID_GEN — есть ли с такими именами (SELECT RDB$GENERATOR_NAME FROM RDB$GENERATORS).
  2. FU_NEXT_DOC_NUM: параметры (CAT_SYS_NAME, D_DATE, DIRECTION, FOR_DOC), возвращает (NUM, NEW_DATE); выполняемая (EXECUTE PROCEDURE), а не селективная.
  3. OD_PR_INS_WIRS: 31 входной параметр в порядке MSSQL-версии, 4 выходных (NEW_ID, WIR_LIST, DEB_ID, KRD_ID).
  4. D_CLISER_M2M.DOC_GUID: тип колонки. Процедуры пишут GUID строкой CHAR(36) в верхнем регистре; если в Fancy это CHAR(16) CHARACTER SET OCTETS или строка с фигурными скобками — менять сравнение и запись.
  5. Флаги: OD_FACES.LAST_FLAG = 1, E_DATE = '9999-01-01', OD_CLIENTS_REC.E_DATE = '9999-01-01' — те же значения в Firebird-версии (не 'T'/'F').
  6. Оператор: под каким логином bj подключается к базе и заведён ли он в OD_OPERATORS (USER_ID = логин). FU_NEXT_DOC_NUM берёт WHOS и префикс номера из OD_OPERATORS/OD_SETS по текущему пользователю; триггеры Fancy проверяют права оператора (кроме UPDATE … ID = 0). В MSSQL-версии это обходилось execute as SYSDBA.
  7. Привязки FTV_M2M_SETTINGS — ID из справочников клиента: WHOS (депозитарий), OPER_USER, FILER_CAT (категория D_FILER), D_NUM/K_NUM (балансовые счета 98010 и 98070), MARKET (Мосбиржа), B_TYPE («Отчёт депозитария» в DEPO96_DCLA), CORR_FACE (НКО АО НРД), FILER_RUBRICA.
  8. Справочники по имени: категории I_CLISER_M2M_ZACH/SPIS, OP_INV_ZACH/SPIS; состояния WAIT_RESP_DECIS, WAIT_OPER; директива PROCESS; кодировщики OD_FACES.MNEM = 'M2M' и 'НДЦ'. Таблицы D_CLISER_M2M, D_CLISER_M2M_DOL, U_OP_INV_ZACH/SPIS — пользовательские (настройка M2M в Fancy), у клиента их может не быть.
  9. Кодировка базы: WIN1251 (RDB$DATABASE.RDB$CHARACTER_SET_NAME). Текст ошибки из контекста приводится к WIN1251 — при другой кодировке поменять в FTV_M2M_JOB.
  10. Числа состояний в PROCESS_EVENTS (STATE = 1, 2, 3, 8) — как у Фонтвьель; сверить с OD_DOC_STATES.

Открытые вопросы логики (те же, что в MSSQL-версии)

  • BJ_ORDER_REJECTED не обрабатывается — уходит в «неизвестное событие» (вопрос программисту от 16.10.2026).
  • BJ_CP_CONFIRM с направлением OUT перехватывается веткой BJ_DECISION_CONFIRM выше.
  • Депонент не найден — поручение создаётся без депонента, ошибки нет.