Alex_Losk (alex_losk) wrote,
Alex_Losk
alex_losk

Работа. Отправка платежей "наружу". Обрезка наименования получателя

В RS-Retail все как всегда есть, но чтоб работало правильно нужно постучать тут молоточком, там подкрутить, тут пнуть, подпереть...

Вот и долго пинал разработчиков и службу поддержки.
Суть. До недавнего времени при формировании платежа наружу со счета физ лица в панели реквизитов поля Наименивание_Получателя и Основание были ограниченной длины (намного меньше часто используемых и заведомо меньших стандартизированных

Сделал запрос, стал ждать. Благо платежей было мало в моей жизни и был инструментик, который решал ограничение
А вот сегодня чаша терпения лопнула, полез разбираться. Тем более, что больше пару месяцев назад было объявление: вылечили. Но это у меня не заработало.


INCC6301 INRC6301
в них есть поля
Resiever_FIO
Groung

Основание то работает, а вот наименование нет. Хотя имеет длину панели 321 символ. Структура (где хранится сам платеж) dt_paym_dbt имеет аналогичное поле, но длиной 320 символов. мне пока не понятно, как обрезается наименование (в какой момент), но явно в длину 47 (как раз в панели это полебез скроллинга)

Изменил панели на регламентируемые длины (Resiever_FIO size string 210. сохранил. протестировал. Фурычит.

по идее можно и прикрутить собственное заполнение. При операции 63 (списание по поручению) подвид 1 (за пределы банка) работает макрос inprcvmn.mac, который имортирует inprcv.mac (где хранится обработка и фунции по работе с панелями в разных случаях).
так вот в макросе inprcvmn.mac можно сделать примерно так


/******************************************************************************
MacroName: inprcvmn.mac
Created : 09/26/2006 2:54
Author : LAA

Requested: Как временное решение. Обходи системного недочета при списании -
нельзя указать наименования получателя более 69 символов, что неправильно

Comments : временно должен использоваться. В 6,00,4,21 должно быть исправлено
*******************************************************************************
History:

******************************************************************************/
import inprcv;

private var rt_paym = TBFile("rt_paym.dbt", "w");
private var rt_paym1 = TBFile("rt_paym.1", "w");

MACRO GetDataReciever(ApplicationKind, ApplicationKey, AttrID); //LAA
rt_paym.clear();
rt_paym.KeyNum() = 0;
rt_paym.Rewind;
rt_paym.rec.IAPPLICATIONKIND = ApplicationKind;
rt_paym.rec.APPLICATIONKEY = ApplicationKey;
rt_paym.rec.ATTRID = AttrID;
if (rt_paym.GetEQ())
Return TRUE;
end;
Return FALSE;
END;

copy( depdoc, ALG_SBDEPDOC );
setRecordAddr( ALG_SBDEPDOC_1, depdoc, 0, 0, true );
ALG_RESULT = mainFun();

/*
//LAA далее смотрим, проведена операция или еще нет. если проведана и повторно начали заходить на просмотр в нее, значит корректируем
if( GetDataReciever( ALG_SBDEPDOC_1.iApplicationKind, ALG_SBDEPDOC_1.ApplicationKey, "РЕКВ_ПОЛ" ) == true )
setRecordAddr(rt_paym1, rt_paym);

if (StrLen(rt_paym.rec.RecivFIO) > 45);
while (not GetString(rt_paym.rec.RecivFIO,"Имеется вероятность неполностью заполненного поля ПОЛУЧАТЕЛЬ. Подкорректируйте документ| ENTER - запомнить",200))
if ((StrLen(trim(rt_paym.rec.RecivFIO)) > 0) and (StrLen(trim(rt_paym.rec.RecivFIO)) < 200))
if (not rt_paym.Update())
MsgBox("Системная ошибка. Не обновлено поле 'получатель'. Обратитесь к администратору!");
end;
elif (StrLen(trim(rt_paym.rec.RecivFIO)) > 200)
MsgBox("Введено слишком длинное название получателя. Повторите корректировку документа");
end;
end;
end;

end;
*/

Tags: исходники, работа
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments