56efa9266c
FTV_M2M_PROCESS_OPERATION: B_NUM/B_DATE операции зачисления/списания берутся из PARAMETERS события BJ_ORDER_ACCEPTED («<номер> от <дд.мм.гггг>», отчёт НРД), а не из M2M-поручения; комментарий операции без «Отчет НКО АО НРД …». Текст снят с тестовой DEPO (там та же правка 24.10 00:04, на боевой — 24.10 00:02; логину bj текст на боевой не виден). Без переноса повторная установка процедур из bj вернула бы старый текст. Firebird-версия — та же правка; прогон на заглушках: изменилось только основание и комментарий. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
Обмен M2M с Fancy DEPO на Firebird 2.5
Перенос трансферных таблиц и процедур обработки MSSQL-версии (deploy/depo/fancy-m2m, Фонтвьель, тексты от
22.10.2026, FTV_M2M_PROCESS_OPERATION — от 24.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), поэтому имена таблиц и колонок, скорее всего,
совпадают. Подтвердить на копии базы клиента:
- Генераторы ID:
OD_DOC_ID_GEN,OD_DOL_ID_GEN,OD_STEPS_ID_GEN,OD_FACES_ID_GEN— есть ли с такими именами (SELECT RDB$GENERATOR_NAME FROM RDB$GENERATORS). FU_NEXT_DOC_NUM: параметры(CAT_SYS_NAME, D_DATE, DIRECTION, FOR_DOC), возвращает(NUM, NEW_DATE); выполняемая (EXECUTE PROCEDURE), а не селективная.OD_PR_INS_WIRS: 31 входной параметр в порядке MSSQL-версии, 4 выходных (NEW_ID, WIR_LIST, DEB_ID, KRD_ID).D_CLISER_M2M.DOC_GUID: тип колонки. Процедуры пишут GUID строкойCHAR(36)в верхнем регистре; если в Fancy этоCHAR(16) CHARACTER SET OCTETSили строка с фигурными скобками — менять сравнение и запись.- Флаги:
OD_FACES.LAST_FLAG = 1,E_DATE = '9999-01-01',OD_CLIENTS_REC.E_DATE = '9999-01-01'— те же значения в Firebird-версии (не'T'/'F'). - Оператор: под каким логином bj подключается к базе и заведён ли он в
OD_OPERATORS(USER_ID= логин).FU_NEXT_DOC_NUMберётWHOSи префикс номера изOD_OPERATORS/OD_SETSпо текущему пользователю; триггеры Fancy проверяют права оператора (кромеUPDATE … ID = 0). В MSSQL-версии это обходилосьexecute as SYSDBA. - Привязки
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. - Справочники по имени: категории
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), у клиента их может не быть. - Кодировка базы: WIN1251 (
RDB$DATABASE.RDB$CHARACTER_SET_NAME). Текст ошибки из контекста приводится к WIN1251 — при другой кодировке поменять вFTV_M2M_JOB. - Числа состояний в
PROCESS_EVENTS(STATE = 1, 2, 3, 8) — как у Фонтвьель; сверить сOD_DOC_STATES.
Открытые вопросы логики (те же, что в MSSQL-версии)
BJ_ORDER_REJECTEDне обрабатывается — уходит в «неизвестное событие» (вопрос программисту от 16.10.2026).BJ_CP_CONFIRMс направлением OUT перехватывается веткойBJ_DECISION_CONFIRMвыше.- Депонент не найден — поручение создаётся без депонента, ошибки нет.