7.7 Тип данных реквизита

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Dem0lisher, 30 янв 2010.

  1. TopicStarter Overlay
    Dem0lisher
    Offline

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

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    Здравствуйте!
    Есть приказ о приеме на работу. В конфигураторе для реквизита ФИО установлен тип данных "Строка". Нужно проверить чтобы в этом реквизите были только буквы, если там число, то не допустить сохранения документа. и вывести соотв. сообщение. Как проверить тип реквизита?
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Много способов. Можно так...

    Код:
    //Вернет 1 если в строке только русские буквы и пробелы. Иначе -0
    Функция ТолькоБуквыИПробелы(Стр)
    Для К=1 По СтрДлина(Стр) Цикл
    Код=КодСимв(Сред(Стр,к,1));
    Если Код=32 Тогда
    Продолжить;
    ИначеЕсли (Код>=128)И(Код<=175) Тогда
    Продолжить;
    ИначеЕсли (Код>=224)И(Код<=239) Тогда
    Продолжить;
    КонецЕсли;
    Возврат 0;
    КонецЦикла;
    Возврат 1;
    КонецФункции
    
    
    
    
  3. TopicStarter Overlay
    Dem0lisher
    Offline

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

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    Ничего не понимаю, в самом конце функции стоит "Возврат 1" т.е каким бы ни был результат-всеравно вернет 1.. на практике именно так и получается и еще, какие именно символы лежат в этих границах:
    128<Код<175 и 224<Код<239.
    Я так понял, что код=32-это символ пробел, не понятно, почему после нахождения пробела продолжить, а не прервать? и где должен стоять нулевой возврат?
  4. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    32- пробел
    128 А 175 п .... 224 р 239 я. Смотрите таблицу символов Windows

    Таким образом если символ в границах от А-я + пробел мы переходим к следующему символу - иначе стазу вернем "0". Если весь цикл прошли удачно - вернем "1".

    Что тут непонятного?
  5. TopicStarter Overlay
    Dem0lisher
    Offline

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

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    Да, код действительно работает, спасибо, я сначала не догадался, что буквы только маленькие пропускает, поэтому и решил, что не работает..
    Таблиwа символов Windows в каком шрифте и какой кодировке ее смореть? Хочу найти коды заглавных букв, чтобы еще и заглавные буквы были (ибо поле ФИО), ищу коды-найти не могу.. даже тех, что в коде описаны не вижу, как называкется набор символов?
  6. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Можешь сделать проще.....

    Код:
    Для к=65 По 255 Цикл
    Сообщить("Код"+к+" символ "+Симв(к)); //лучше выводить в таблицу - нагляднее
    КонецЦикла;
    
    
    Процедуру мою можнорусовершенствовать....
    Если в начале добавить
    Код:
    Стр=ВРег(Стр);
    
    
    В этом случае строка будет состоять только из заглавных букв, следовательно меньше условий...

    И еще. Учти и символ "-" Возможна же фамилия и через черточку (Бюль-Бюль Аглы)
  7. TopicStarter Overlay
    Dem0lisher
    Offline

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

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    Ухх-ты!! Ловко придумано! Спасибо!
  8. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Проще цифры проверять, мороки меньше.
  9. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    +

    лет пять назад писал такую функцию..

    Код:
    Function DetectDEC(PARAM_TXT)
    LENPARAM_NUM=StrLen(PARAM_TXT);
    RETURN_TXT="";
    If (LENPARAM_NUM>0) Then
    CURPOS_NUM=0;
    While (CURPOS_NUM<>LENPARAM_NUM) Do
    CURPOS_NUM=CURPOS_NUM+1;			
    ASC_NUM=Asc(Mid(PARAM_TXT,CURPOS_NUM,1));
    If (ASC_NUM>=48) And (ASC_NUM<=57) Then
    Return 1;
    //RETURN_TXT=RETURN_TXT+Mid(PARAM_TXT,CURPOS_NUM,1);
    EndIf;
    EndDo;
    EndIf;              
    Return 0;
    //Return RETURN_TXT;
    EndFunction
    
    
  10. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Треблвалось проверять не только циры, а все что не буквы))))))))

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