Вход | Регистрация
 

Проверка номера в клиент банке

Проверка номера в клиент банке
Я
   Альбатрос
 
22.07.20 - 18:21
Значение = СокрЛП(СтрокаЭкспорта.Номер);
    Если Число(Строка(Число(Прав(Значение, 3)))) = 0 Тогда
        ДобавитьЗамечание(СтрокаЭкспорта, 4, "Номер должен оканчиваться на три цифры и не на ""000""!");
    КонецЕсли;


В чем сакральный смысл вот этого: Число(Строка(Число(Прав(Значение, 3))))?
   Йохохо
 
1 - 22.07.20 - 18:24
ошибка
   Fragster
 
2 - 22.07.20 - 18:24
в том, что это говнокод, а регулярки в 1с не завезли
   Fragster
 
3 - 22.07.20 - 18:25
более того, если там не число, то эта конструкция тупо упадет вместо сообщения
   Альбатрос
 
4 - 22.07.20 - 18:25
(3) Она и падает)
   Альбатрос
 
5 - 22.07.20 - 18:26
(1) Дважды юзается)
Процедура ПроверитьНаКорректностьНомераПриВыгрузке(СтрокаЭкспорта)
    
    Если КонтролироватьНекорректныеСимволыВНомере Тогда
        
        Значение = СокрЛП(СтрокаЭкспорта.Номер);
        Попытка
            Если Число(Строка(Число(Прав(Значение, 6)))) = 0 Тогда
                ДобавитьЗамечание(СтрокаЭкспорта, 4, "Номер не должен быть равен нулю!");
            КонецЕсли;
        Исключение
            ДобавитьЗамечание(СтрокаЭкспорта, 4,
            "Указан неправильный номер документа(" + Прав(Значение, 6) + ")!");
        КонецПопытки;
        
    КонецЕсли;
    
    Если НеКонтролироватьОкончаниеНомера Тогда
        Возврат;
    КонецЕсли;
    
    Значение = СокрЛП(СтрокаЭкспорта.Номер);
    Если Число(Строка(Число(Прав(Значение, 3)))) = 0 Тогда
        ДобавитьЗамечание(СтрокаЭкспорта, 4, "Номер должен оканчиваться на три цифры и не на ""000""!");
    КонецЕсли;
    
КонецПроцедуры


Вроде как типовой код БСО, правда старенького релиза
   Йохохо
 
6 - 22.07.20 - 18:28
(4) но падает на первом Число, в венской нотации)
   lodger
 
7 - 22.07.20 - 18:28
чья-то логическая ошибка. или фича старого релиза платформы.
   Fragster
 
8 - 22.07.20 - 18:33
вот есть остроумный способ проверки: http://catalog.mista.ru/public/464971/
   Альбатрос
 
9 - 22.07.20 - 18:39
(8) О, спасибо!
   Fragster
 
10 - 22.07.20 - 18:44
(9) если честно, я бы не использовал такое на проде :)
   Fragster
 
11 - 22.07.20 - 18:46
Попытка
            Если Число(Прав(Значение, 3)) = 0 Тогда
        ДобавитьЗамечание(СтрокаЭкспорта, 4, "Номер должен оканчиваться на три цифры и не на ""000""!");
            КонецЕсли;
        Исключение
        ДобавитьЗамечание(СтрокаЭкспорта, 4, "Номер должен оканчиваться на три цифры и не на ""000""!");
        КонецПопытки;

более читабельно да и работает быстрее
   Йохохо
 
12 - 22.07.20 - 18:48
Прав(Значение, 3) = "000" почему не?
   Fragster
 
13 - 22.07.20 - 18:55
(12) потому что Прав("00", 3) <> "000" ;) да и для "АБВ" тоже
   Fragster
 
14 - 22.07.20 - 18:57
хотя исходя из этого (11) тоже не совсем правильно
   Йохохо
 
15 - 22.07.20 - 19:04
ну да, Найти(Прав(Значение, 3) , "000")

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.