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
Расширение Fancy DEPO для M2M (bj2depo) — процедуры Фонтвьель
Код написан программистом Фонтвьель (В. Кокин) как собственное дополнение к Fancy DEPO — код Fancy не меняется,
это штатная для Fancy практика. Сняты из базы SQL002/BJ_DEPO_DATA (тестовая DEPO, 10.10.10.21) 22.10.2026 (sys.sql_modules) — с правками программиста 09–21.10; код без изменений, только CREATE → CREATE OR ALTER (примеры для теста — в комментариях /* */ автора).
Что делает
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— служебные.FTV_M2M_UPDATE_HANDBOOK @COMMENT out— справочник участников M2M (FTV_M2M_HANDBOOK, его пишет bj) → юрлица и кодеры Fancy (OD_FACES,OD_FACE_CODERS, кодерMNEM='M2M'); вызывается из EVENTS по событию HANDBOOK.- 22.10.2026: в OPERATION счёт ностро
313(98010 — ведущий депозитарий, «НОСТРО депо базовый») вместо прежнего314. - 24.10.2026 (правка программиста на боевой и тестовой DEPO, перенесена сюда 26.10): в OPERATION основание операции
«Отчёт депозитария» (
B_NUM,B_DATEвU_OP_INV_ZACH/SPIS) — номер и дата отчёта НРД из@PARAMETERS(«<номер> от <дд.мм.гггг>», событиеBJ_ORDER_ACCEPTED), а не номер и дата M2M-поручения; комментарий операции — без «Отчет НКО АО НРД <номер> от <дата>.». Без даты в@PARAMETERSоперация не создаётся (ошибка преобразования даты) — как и раньше во входящей записиD_FILER.
От чего зависит на стороне 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 (или вычислять по коду участника) — тогда набор ставится у любого клиента без правок. |
Порядок установки у клиента
- bj → «Обмен Fancy → Подключение» (логин bj_user: datareader+datawriter на FTV_M2M*).
- bj → «Трансферные таблицы DEPO»: создать (логином с правами) или скрипт DBA.
- Этот каталог: выполнить 6 файлов в порядке WIRING → OPERATION → UPDATE_HANDBOOK → EVENTS → CREATE → JOB (CREATE OR ALTER, повторно безопасно).
FTV_M2M_PROCESS_EVENTSвызываетFTV_M2M_UPDATE_HANDBOOK(событие HANDBOOK — справочник участников в юрлица Fancy). Права:GRANT EXECUTE ON dbo.FTV_M2M_JOB TO bj_user(для режима «bj»). - bj → «Обработка DEPO»: режим
sql-auto(bj создаёт джобуbj2depo:EXEC dbo.FTV_M2M_JOB, интервал по настройке) илиsql-manual. - bj → «Проверить готовность»: событие
BJ_PINGдолжно получить STATE от джобы.