Клиент-банк, БП 2.0.44.13
☑
0
qwe123
20.02.13
✎
09:17
Обработка Клиент-банк вываливается с ошибкой о преобразовании к числу, если в один день несколько платежек на один р/с контрагента.
В релизе БП 2.0.44.13 добавили функцию
Функция ПолучитьЧислоИзСтроки(Знач НомерДок)
Если ПустаяСтрока(НомерДок) Тогда
Возврат 0;
КонецЕсли;
ДлинаНомера = СтрДлина(НомерДок);
Для инд = 1 По ДлинаНомера Цикл
ПозицияНеЦифровойСимвол = инд;
// поиск ведем с конца номера, до первого не цифрового символа
Код = КодСимвола(НомерДок, ДлинаНомера - инд + 1);
Если Код < 48 ИЛИ Код > 57 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если ПозицияНеЦифровойСимвол <> ДлинаНомера Тогда
НомерДок = Сред(НомерДок, ПозицияНеЦифровойСимвол);
КонецЕсли;
Возврат Число(НомерДок);
КонецФункции
Мне ведь не кажется, что функция неправильно номер обрезает?
1
Wobland
20.02.13
✎
09:24
ложь
2
qwe123
20.02.13
✎
09:27
(1)?
НомерДок = "Ц0000000015"
ПозицияНеЦифровойСимвол = 11
номер не обрезается и вылетает ошибка на Возврат Число(НомерДок)
3
Wobland
20.02.13
✎
09:28
истина
4
Wobland
20.02.13
✎
09:31
ПозицияНеЦифровойСимвол=ДлинаНомера - инд + 2;
5
Галахад
гуру
20.02.13
✎
09:33
ПозицияНеЦифровойСимвол <= ДлинаНомера
6
D_Pavel
20.02.13
✎
09:37
У меня тоже эта обработка глючит, но в моем случае ошибка в запросе!
7
Wobland
20.02.13
✎
10:06
ДлинаНомера=СтрДлина(НомерДок);
Для инд=0 По ДлинаНомера-1 Цикл
ПозицияНеЦифровойСимвол=ДлинаНомера-инд;
Код=КодСимвола(НомерДок, ПозицияНеЦифровойСимвол);
Если Код<48 ИЛИ Код>57 Тогда
Прервать;
КонецЕсли;
ПозицияНеЦифровойСимвол=ПозицияНеЦифровойСимвол-1;
КонецЦикла;
НомерДок=Число(Сред(НомерДок, ПозицияНеЦифровойСимвол+1));
8
Wobland
20.02.13
✎
10:08
(7) проверка на ПозицияНеЦифровойСимвол=ДлинаНомера нужна. а то не работает в случае крайнего нецифрового символа
9
qwe123
23.02.13
✎
23:27
надо же... в 2.0.45.5 поправили. ура.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой