Имя: Пароль:
1C
1С v8
Клиент-банк, БП 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 поправили. ура.