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


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

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