From 7073ce2a3312506a2fc33406358abe1125a2d6f9 Mon Sep 17 00:00:00 2001 From: fontvielle Date: Tue, 27 Oct 2026 17:40:04 +0300 Subject: [PATCH] =?UTF-8?q?DEPO=20Firebird:=20=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BE=D1=87=D0=BD=D0=B8=D0=BA=20=D1=83=D1=87=D0=B0=D1=81?= =?UTF-8?q?=D1=82=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=BD=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B0=D1=81=D1=82=D0=BE=D1=8F=D1=89=D0=B5=D0=BC=20=D1=81=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=BE=D1=87=D0=BD=D0=B8=D0=BA=D0=B5=20=D0=9D?= =?UTF-8?q?=D0=A0=D0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Полная перезапись FTV_M2M_HANDBOOK + событие HANDBOOK, как bj пишет в MSSQL (169 участников, 2 места расчётов): первый прогон — 168 юрлиц с кодами M2M, повторный — без изменений. Относительно MSSQL-версии: - место расчётов без кода участника — юрлицо без кода M2M (OD_FACE_CODERS.CODE NOT NULL, иначе падал весь справочник); - один ИНН дважды (СПБ Банк — место расчётов и депозитарий) — одно юрлицо, код добавляет шаг 3. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn --- deploy/depo/fancy-m2m-firebird/10_FTV_M2M_PROCS.sql | 8 +++++++- deploy/depo/fancy-m2m-firebird/README.md | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/deploy/depo/fancy-m2m-firebird/10_FTV_M2M_PROCS.sql b/deploy/depo/fancy-m2m-firebird/10_FTV_M2M_PROCS.sql index 9a68d43..d56b4c4 100644 --- a/deploy/depo/fancy-m2m-firebird/10_FTV_M2M_PROCS.sql +++ b/deploy/depo/fancy-m2m-firebird/10_FTV_M2M_PROCS.sql @@ -301,12 +301,18 @@ BEGIN AND HB.INN NOT IN (SELECT F.INN FROM OD_FACES F WHERE F.LAST_FLAG = 1 AND F.E_DATE = '9999-01-01' AND F.INN IS NOT NULL) ORDER BY HB.NAME_SHORT INTO :HB_ID, :CODE, :INN, :NAME_SHORT, :NAME_FULL DO + /* один ИНН бывает в справочнике дважды (СПБ Банк — место расчётов и депозитарий): второе юрлицо не создаём, + код к созданному добавит шаг 3 (в MSSQL-версии — два одинаковых юрлица) */ + IF (NOT EXISTS (SELECT 1 FROM OD_FACES F WHERE F.INN = :INN AND F.LAST_FLAG = 1 AND F.E_DATE = '9999-01-01')) THEN BEGIN RW = RW + 1; FACE_ID = GEN_ID(OD_FACES_ID_GEN, 1); INSERT INTO OD_FACES (ID, S_TYPE, INN, NAME) VALUES (:FACE_ID, 1, :INN, :NAME_SHORT); INSERT INTO OD_U_FACES (FACE, FULL_NAME) VALUES (:FACE_ID, :NAME_FULL); - INSERT INTO OD_FACE_CODERS (CODE, CODER, FACE) VALUES (:CODE, :M2M_CODER, :FACE_ID); + /* у мест расчётов (KIND = 'PLACE') кода участника нет, а OD_FACE_CODERS.CODE — NOT NULL: в MSSQL-версии + такой справочник падает целиком, если места расчётов ещё нет в юрлицах Fancy */ + IF (CODE IS NOT NULL) THEN + INSERT INTO OD_FACE_CODERS (CODE, CODER, FACE) VALUES (:CODE, :M2M_CODER, :FACE_ID); CMT = CMT || CRLF || RW || '. Добавлено юрлицо: ' || COALESCE(CODE, '') || ', ' || INN || ', ' || COALESCE(NAME_SHORT, ''); END diff --git a/deploy/depo/fancy-m2m-firebird/README.md b/deploy/depo/fancy-m2m-firebird/README.md index 8fc04f9..da19bfa 100644 --- a/deploy/depo/fancy-m2m-firebird/README.md +++ b/deploy/depo/fancy-m2m-firebird/README.md @@ -37,6 +37,14 @@ isql -ch WIN1251 -user SYSDBA -i 10.sql <сервер>:<путь к базе> Исправлено по итогам: генераторы `OD_DOCS_ID_GEN`/`OD_DOLS_ID_GEN`; `COMMENT` без кавычек (в диалекте 1 `"…"` — строка); дата без времени — через `FTV_M2M_DAY` (в диалекте 1 `CAST(… AS DATE)` время не отрезает). +Справочник участников — на настоящем справочнике НРД (169 участников, 2 места расчётов), записанном так же, как +bj пишет его в MSSQL (полная перезапись `FTV_M2M_HANDBOOK` + событие `HANDBOOK`): первый прогон — 168 юрлиц с +кодами M2M, повторный — «никаких изменений не обнаружено». Исправлено относительно MSSQL-версии (там осталось): +- место расчётов без кода участника (`KIND = 'PLACE'`, например «СПБ Банк») — юрлицо создаётся без кода M2M + (`OD_FACE_CODERS.CODE` — `NOT NULL`; в MSSQL-версии справочник падает целиком, если места ещё нет в Fancy); +- один ИНН дважды в справочнике (СПБ Банк — место расчётов и депозитарий) — одно юрлицо, код добавляет шаг 3 + (в MSSQL-версии — два одинаковых юрлица). + ## Проверить у клиента 1. **UDF Fancy `ib_Fansy`**: без неё не читаются `OD_DOCS`, `OD_BALANCES` и не ставятся процедуры (вычисляемые