думаю стоит пояснить:
При генерации номера накладной на основе сличилки используется след алгоритм (могут быть неточности)
берётся (длина номера сличилки)+(1 знак "-")+(длина префикса накладной) в нашем случае получаем: длина номера сличилки 10 знаков, длина префикса накладной 5 знаков, т.е. имеем 16 знаков.
потом ищется макс номер накладной в smdocuments c условием найденное кол-во знаков (16)+макс количество знаков в номере накладной (в нашем случае 5)
Код:
AND (LENGTH(ID) = 5 + 16)
AND ID BETWEEN '00ПРН00001' AND '00ПРН99999';
если находится, то отсекается всё что больше 16 знаков (остаётся номер накладной) и увеличивается на 1.
на всякий случай проверяется на существование, а потом выдаётся сгенерированный номер.
Т.е. в случае
vadim`а мы получили:
существовала накладная "00ПРН12345 Справочная" и длина её номера как раз равна 5+16, после всех операций у нас остаётся "очная" вот это значение пытаемся ув. на 1 и получаем ошибку
>>ORA-06502: PL/SQL: : ошибка преобразования символа в число ошибка числа или значения.
Такую ошибку разработчики не предусмотрели и у нас выдаётся
>>ORA-20069: Переполнение при генерации номера документа. Требуется сменить префикс.
Что немного сбивает с пути поиска проблемы.
После удаления пробела длина номера уже не удовлетворяет условию
(LENGTH(ID) = 5 + 16) и номера накладных на основе сличилки прекрасно генерятся.
Уф-ф-ф, устал пока писал. Конечно запутанно объяснил, но надеюсь с пониманием проблем не будет