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` и не ставятся процедуры (вычисляемые