Опыт использования обработки Клиент-банк в типовых конфигурациях 1с8

Идентификация ППИ

ППИ идентифицируются по дате документа, расчетному счету и последним трем цифрам номера. В банковских программах ППИ также имеют номер из трех цифр.

Номер ППИ при загрузке формируется с использованием принятого для документов префикса, а справа помещаются три цифры номера ППИ.

Возможна ситуация, когда у организации используется два расчетных счета. При этом в течении периода уникальности ППИ (года) могут появиться две платежки с одинаковым номером, но по разным счетам, например: RN00101 по первому счету и RN00101 по второму счету для платежки с номером 101.

Чтобы избавиться от этой проблемы, нужно использовать следующий код в процедуре ЗаполнитьРеквизитПлатежногоПорученияИсходящего:

             ОбъектДокументастановитьНовыйНомер(Организация.Префикс);

            

             Если Не ОбщегоНазначениястьНеЦифры(ИсходныеДанные.Номер) Тогда

                    ОкончаниеНомера = Формат(Число(СокрЛП(ИсходныеДанныеомер)), "ЧН=; ЧГ=0");

                    ДлинаОкончания = СтрДлина(ОкончаниеНомера);

                    ДлинаНомера = СтрДлина(СокрЛП(ОбъектДокументаомер));

                    Если ДлинаОкончания < 3 Тогда

                           ДлинаОкончания = 3;

                    КонецЕсли;

                   

                    ОбъектДокументаомер = Лев(ОбъектДокумента.Номер, ДлинаНомера - ДлинаОкончания) + Формат(Число(ОкончаниеНомера), "ЧЦ=" + ДлинаОкончания + "; ЧВН=; ЧГ=0");

                   

                    //200414 Осипов, поиск по номеру

                    Сч = 1;

                    СтрокаСимволов = "123456789";

                    ИсходныйНомер = СокрЛП(ОбъектДокументаомер);

                    ПозицияДобавки = 4;

                    Поз = СтрДлина(ИсходныйНомер) - ПозицияДобавки + 1;

                    Пока ЗначениеЗаполнено(ДокументылатежноеПоручениеИсходящее.НайтиПоНомеру(ОбъектДокумента.Номер, ОбъектДокумента.Дата)) И Сч <= СтрДлина(СтрокаСимволов) Цикл

                           НовыйНомер = Сред(ИсходныйНомер, 1, Поз-1) + Сред(СтрокаСимволов, Сч, 1) + Сред(ИсходныйНомер, Поз+1, 3);

                           Сообщить("Найдено ППИ с таким номером: " + ИсходныйНомер + " пробуем подобрать другой номер: " + НовыйНомер);

                           ОбъектДокументаомер = НовыйНомер;  

                           Сч = Сч + 1;

                    КонецЦикла;

                   

             КонецЕсли;

Можно решить проблему и по-другому, не меняя код обработки, реализовав подобный код в подписке на событие записи документа ППИ. Тогда конфигурация более удобно обновляется.

Недостатки

Сообщения об ошибках малоинформативны. Например, сообщается, что документ не может быть записан, но не сообщается почему, не открывается форма созданного, но не записанного документа.