Files
Bridge-and-Join-s/deploy/depo/fancy-m2m
..

Расширение Fancy DEPO для M2M (bj2depo) — процедуры Фонтвьель

Код написан программистом Фонтвьель (В. Кокин) как собственное дополнение к Fancy DEPO — код Fancy не меняется, это штатная для Fancy практика. Сняты из базы SQL002/BJ_DEPO_DATA 23.09.2026 (sys.sql_modules), тестовые вставки удалены.

Что делает

  • FTV_M2M_JOB — точка входа джобы SQL Agent (bj ставит её как bj2depo, раз в N секунд; режим «bj» — bj вызывает сам): берёт FTV_M2M со STATE='TODO' → FTV_M2M_PROCESS_CREATE; затем FTV_M2M_EVENTS со STATE='TODO' → FTV_M2M_PROCESS_EVENTS; результат — STATE (SUCCESS/ERROR), TimeBeg/TimeEnd, COMMENT (текст ошибки // место // код).
  • FTV_M2M_PROCESS_CREATE @ID — создаёт M2M-поручение DEPO (OD_DOCS, OD_DOLS, D_CLISER_M2M, D_CLISER_M2M_DOL, OD_IN_DOCS/OD_OUT_DOCS, D_FILER), ищет клиента по паспорту (OD_FACES, OD_CLIENTS), наш счёт в НРД по LINK_NUMBER/PLACE_NUMBER (OD_CLIENTS_REC), пишет номера в FTV_M2M.DOC, FTV_M2M_LINES.DOL.
  • FTV_M2M_PROCESS_EVENTS @ID — событие по строке (GUID+REFERENCE): решения, поручения, исполнение → операции зачисления/списания (U_OP_INV_ZACH, U_OP_INV_SPIS) через FTV_M2M_PROCESS_OPERATION и проводки через FTV_M2M_PROCESS_WIRING (OD_PR_INS_WIRS, OD_STEPS).
  • FTV_M2M_PROCESS_OPERATION, FTV_M2M_PROCESS_WIRING — служебные.

От чего зависит на стороне Fancy (должно быть в DEPO клиента)

Таблицы поставки Fancy с поддержкой M2M (у Фонтвьель появились 25.08.2026): D_CLISER_M2M, D_CLISER_M2M_DOL, OD_M2M_ACCS, OD_ONLINE_M2M_DEPO (+ триггер OD_ONLINE_M2M_DEPO_II); функции ядра FU_NEXT_DOC_NUM, GEN_ID, процедура OD_PR_INS_WIRS; типы документов/шагов OD_DOC_CATS, OD_STEP_TYPES, OD_SYS_TABS. Наши трансферные таблицы FTV_M2M* создаёт bj («Трансферные таблицы DEPO»).

Что привязано к базе Фонтвьель (параметризовать перед установкой у другого клиента)

Где Значение Смысл Как получить в чужой базе
CREATE/EVENTS/OPERATION @WHOS int = 383118 ID лица депозитария (ООО «ИК Фонтвьель») — «кто» в документах SELECT FACE FROM OD_FACE_CODERS WHERE CODE = <код участника НРД> (bj знает код: «Определить из DEPO»)
EVENTS/OPERATION 8106 место/рынок «ММВБ — ПАО Московская Биржа» в операции справочник мест DEPO клиента
EVENTS/OPERATION 836 тип счёта/валюта (комментарий «НОСТРО депо расчётный») справочник DEPO клиента
EVENTS/OPERATION 31 тип документа «Отчёт депозитария» OD_DOC_CATS клиента
все execute as user = 'SYSDBA' контекст выполнения учётка SYSDBA есть в любой Fancy
Предложение автору: вынести эти значения в таблицу FTV_M2M_SETTINGS (или вычислять по коду участника) — тогда набор ставится у любого клиента без правок.

Порядок установки у клиента

  1. bj → «Обмен Fancy → Подключение» (логин bj_user: datareader+datawriter на FTV_M2M*).
  2. bj → «Трансферные таблицы DEPO»: создать (логином с правами) или скрипт DBA.
  3. Этот каталог: выполнить 5 файлов в порядке WIRING → OPERATION → CREATE → EVENTS → JOB (CREATE OR ALTER, повторно безопасно). Права: GRANT EXECUTE ON dbo.FTV_M2M_JOB TO bj_user (для режима «bj»).
  4. bj → «Обработка DEPO»: режим sql-auto (bj создаёт джобу bj2depo: EXEC dbo.FTV_M2M_JOB, интервал по настройке) или sql-manual.
  5. bj → «Проверить готовность»: событие BJ_PING должно получить STATE от джобы.