7.7 Количество символов в строке.

Тема в разделе "Типовые решения "1С:Предприятие 7.7"", создана пользователем man37, 25 янв 2016.

  1. TopicStarter Overlay
    man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    197
    Симпатии:
    5
    Баллы:
    29
    ТиС 9.2
    Помогите решить данную задачку!
    У авто есть VIN, как проверить, что пользователь ввел 17 символов?
    СтрДлина возвращает длину, но не кол-во символов.
  2. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.431
    Симпатии:
    372
    Баллы:
    104
    Код:
    СтрДлина(СокрЛП("нужная_строка"))
    но нужно ещё на пробелы и "левые" символы проверить внутри строки
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    в цикле прогони строку и через КодСимв проверь валидность введенных символов
  4. TopicStarter Overlay
    man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    197
    Симпатии:
    5
    Баллы:
    29
    Возможно и не правильно, но работает!
    Код:
        ЧислоСимволов =  Найти (ВИН, " ");
        Если   ЧислоСимволов  > 0   Тогда
            Предупреждение ("Не правильно введен VIN!
                                         |Введено всего" + "   " + ЧислоСимволов  + "   " + "символов!");
            Активизировать ("ВИН"); 
            СтатусВозврата(0);
            Возврат;
        КонецЕсли;
  5. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.431
    Симпатии:
    372
    Баллы:
    104
    проще тогда через это
    Код:
    СтрЧислоВхождений(<?>,)
    Синтаксис:
    СтрЧислоВхождений(<СтрИсточник>,<СтрПодстрока>)
    Назначение:
    Возвращает число вхождений строки шаблона поиска в строку поиска.
    Параметры:
    <СтрИсточник> - строка в которой ищем (место поиска);
    <СтрПодстрока> - строка которую ищем (шаблон поиска).
    и откидывать пробелы слева и справа надо сперва :)
    а через "СтрЧислоВхождений" проверять недопустимые символы внутри и сообщать именно о таких символах
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    СтрЧислоВхождений в данном случае не сработает.. нужно в цикле по символам перебирать
  7. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.431
    Симпатии:
    372
    Баллы:
    104
    на пробелы сработает, а допустимые там - цифры и не полный латинский алфавит

    Код:
    //    TestVIN="XTA210990Y2766389";
    
    //*******************************************
    Процедура Сформировать()
        Сообщить("VIN в поле ввода содержит "+СтрДлина(VIN)+" символов");
        Сообщить("VIN после СокрЛП содержит "+СтрДлина(СокрЛП(VIN))+" символов");
        Сообщить("Проверяем на наличие символов пробела");
        ПравильныйVIN=СокрЛП(VIN);
        Если СтрЧислоВхождений(ПравильныйVIN," ") = 0 Тогда
            Сообщить("Данный VIN не содержит символов пробела");
        Иначе
            Сообщить("Данный VIN содержит символы пробела в кол-ве "+СтрЧислоВхождений(ПравильныйVIN," ")+" шт.");
            Предупреждение("Исправляем, удаляя символы пробела",5);
            ПравильныйVIN=СтрЗаменить(ПравильныйVIN," ","");
            Сообщить("Исправлено, все символы пробела удалены");
            Сообщить("Правильный VIN = "+ПравильныйVIN);
        КонецЕсли;       
       
    КонецПроцедуры
    
    Процедура ПриОткрытии()
        VIN="XTA 210990Y 276 63 89";
    КонецПроцедуры

    Вложения:

    • vin.zip
      Размер файла:
      7,8 КБ
      Просмотров:
      1
    man37 нравится это.
  8. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.431
    Симпатии:
    372
    Баллы:
    104
    а так и символы на валидность проверит (здесь в заданном тестовом первый символ не латинская, а русская "Х")
    Код:
    //    TestVIN="XTA210990Y2766389";
    
    
    //*******************************************
    Процедура Сформировать()
        Сообщить("VIN в поле ввода содержит "+СтрДлина(VIN)+" символов");
        Сообщить("VIN после СокрЛП содержит "+СтрДлина(СокрЛП(VIN))+" символов");
        Сообщить("Проверяем на наличие символов пробела");
        ПравильныйVIN=СокрЛП(VIN);
        Если СтрЧислоВхождений(ПравильныйVIN," ") = 0 Тогда
            Сообщить("Данный VIN не содержит символов пробела");
        Иначе
            Сообщить("Данный VIN содержит символы пробела в кол-ве "+СтрЧислоВхождений(ПравильныйVIN," ")+" шт.");
            Предупреждение("Исправляем, удаляя символы пробела",5);
            ПравильныйVIN=СтрЗаменить(ПравильныйVIN," ","");
            Сообщить("Исправлено, все символы пробела удалены");
            Сообщить("Правильный VIN = "+ПравильныйVIN);
        КонецЕсли;       
       
        //проверяем валидность символов
        validdata="0123456789ABCDEFGHJKLMNPRSTUVWXYZ";
        GoodOK=1;
        Для нн = 1  По СтрДлина(ПравильныйVIN) Цикл
            Если Найти(validdata,Сред(ПравильныйVIN,нн,1))=0 Тогда
                Сообщить("символ №"+нн+" неверный");
                GoodOK=0;
            КонецЕсли;
        КонецЦикла;
       
        Если GoodOK=1 Тогда
            Сообщить("Все введёные символы верны");
        Иначе
            Сообщить("Найдены ошибки");
        КонецЕсли;
    КонецПроцедуры
    
    Процедура ПриОткрытии()
        VIN="ХTA 210990Y 276 63 89";
    КонецПроцедуры
    
    man37 нравится это.
  9. TopicStarter Overlay
    man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    197
    Симпатии:
    5
    Баллы:
    29
    О проверке не подумал, для хранения и печати - это не критично, а вот если использовать такой VIN для поиска запчастей, выдаст ошибку.
    СПАСИБО, за подсказку!

Поделиться этой страницей