DEPO Firebird: справочник участников на настоящем справочнике НРД

Полная перезапись 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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
fontvielle
2026-10-27 17:40:04 +03:00
parent ee857b089a
commit 7073ce2a33
2 changed files with 15 additions and 1 deletions
@@ -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