Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите надо проверить строку на число
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
nogik
Обработка работы с dbf файлом. проблема в том что номер документа не числовой а строка RCO_1908_447. Как сделать проверку чтобы это поле пропускалось, а числовые поля проходили дальше.

что поставить в условие если????

Если (ФайлДБФ.ПолучитьЗначениеПоля("DATA_S")=Дата)и
(Найти(ФайлДБФ.ПолучитьЗначениеПоля("KL_CHK"),СокрЛП(Счет))>0)  Тогда
//выбрать нужные данные из строки файла dbf в результативную таблицу значений            
    стр = ТаблицаДБФ.Добавить();                                
    стр.Дата      = ФайлДБФ.ПолучитьЗначениеПоля("DATA_S");
             стр.ПлатПоруч = УбратьПробелы(строка(ФайлДБФ.ПолучитьЗначениеПоля("ND")));
Vofka
Число(RCO_1908_447)

не подойдёт?
nogik
Да нет просто я для примера привёл эту строку, она может быть с другим названием, тоесть мне надо проверка если в номере документа встречаеться буква, а не число тогда не отображать.
Vofka
nogik, ну а подумать немножко?

а = "йцу";
Попытка
   а = Число(а);
   Сообщить("а - число");
Исключение
   Сообщить("а - строка");
КонецПопытки;
nogik
не то пальто всё равно((((, блин есть счета в формате .dbf от банка есть обработка импорт из банка, так вот в dbf файле номер 3 номера счёта числовые, а один символьный, мне надо чтобы числовые прошли а сим вольный не прошёл)) Тоесть нужна проверка вот этого СокрЛ(УбратьПробелы(строка(ФайлДБФ.ПолучитьЗначениеПоля("ND")))
Vofka
Мы с вами, наверное, говорим на разных языках
nogik
Наверно(((, я просто новичёк вы уж простите меня многого не знаю(((, на работе сказали так сделать вот я и сижу ломаю голову(
Ardi
Приблизительный код:

ном2="";
Для ъ=1 по стрДлина(ном) цикл
ном2=ном2+?(найти("1234567890",сред(ном,Ъ,1))>0,сред(ном,Ъ,1),"");
КонецЦикла;
Vofka
Цитата
нужна проверка вот этого СокрЛ(УбратьПробелы(строка(ФайлДБФ.ПолучитьЗначениеПоля("ND")))


а = СокрЛ(УбратьПробелы(строка(ФайлДБФ.ПолучитьЗначениеПоля("ND")));
Попытка
   а = Число(а);
   Сообщить("а - число");
Исключение
   Сообщить("а - строка");
КонецПопытки;
Ardi
Цитата(nogik @ 24.03.11, 13:57) необходимо зарегистрироваться для просмотра ссылки
я просто новичёк вы уж простите меня многого не знаю(((

Просто видимо 1986 год виноват, прогрммирование здесь не причем.
nogik
Ну просто работал до этого совсем в другой сфере жизнь заставила программировать((((
nogik
Цитата(Ardi @ 24.03.11, 13:57) необходимо зарегистрироваться для просмотра ссылки
Приблизительный код:

ном2="";
Для ъ=1 по стрДлина(ном) цикл
ном2=ном2+?(найти("1234567890",сред(ном,Ъ,1))>0,сред(ном,Ъ,1),"");
КонецЦикла;



Не канает этот код да все буквы убрало и остались только цифры, а мне надо если встретилась буква в Номере документа то пропустить этот документ, а не букву пропустить.
logist
Вам же выше Vofka написал код.
nogik
Цитата(logist @ 24.03.11, 14:21) необходимо зарегистрироваться для просмотра ссылки
Вам же выше Vofka написал код.

Я пробовал не канает(
logist
Цитата(nogik @ 24.03.11, 13:28) необходимо зарегистрироваться для просмотра ссылки
Я пробовал не канает(

Ну напишите ж почему "не канает"... а то становится непонятно что вообще происходит
nogik
Цитата(logist @ 24.03.11, 14:37) необходимо зарегистрироваться для просмотра ссылки
Ну напишите ж почему "не канает"... а то становится непонятно что вообще происходит

а = УбратьПробелы(строка(ФайлДБФ.ПолучитьЗначениеПоля("ND")));
Попытка
а = Число(а);
Сообщить("а - число");
Исключение
Сообщить("а - строка");
КонецПопытки;
стр.ПлатПоруч = а;

не пропускает число с строкой.
logist
Цитата(nogik @ 24.03.11, 13:41) необходимо зарегистрироваться для просмотра ссылки
не пропускает число с строкой.

Нука напишите сюда код который идет до начала этого и чуть после, что бы была понятна общая картина.
Vofka
Цитата
мне надо если встретилась буква в Номере документа то пропустить этот документ

Цитата
не пропускает число с строкой.


Вы с этой планеты? Если не пропускает число со строкой - это не означает, что там есть буква?!
Batchir
епт, тут намеки не помогут, ожидается рабочий код

а = УбратьПробелы(строка(ФайлДБФ.ПолучитьЗначениеПоля("ND")));
Попытка
   а = Число(а);
   ЭтоЧисло = ИСТИНА;
Исключение
   ЭтоЧисло = ЛОЖЬ;
КонецПопытки;
Если ЭтоЧисло Тогда
   стр.ПлатПоруч = а;
   // и так далее
КонецЕсли;
nogik
Цитата(logist @ 24.03.11, 14:45) необходимо зарегистрироваться для просмотра ссылки
Нука напишите сюда код который идет до начала этого и чуть после, что бы была понятна общая картина.

Если ФайлДБФ.Первая() тогда                       
    Пока Истина Цикл
    //если фирма счета совпадает со счетом выбранной фирмы, выбрать в таблицу
    Если (ФайлДБФ.ПолучитьЗначениеПоля("DATA_S")=Дата)и
                    (Найти(ФайлДБФ.ПолучитьЗначениеПоля("KL_CHK"),СокрЛП(Счет))>0) Тогда
         //выбрать нужные данные из строки файла dbf в результативную таблицу значений        стр = ТаблицаДБФ.Добавить();                                
        стр.Дата      = ФайлДБФ.ПолучитьЗначениеПоля("DATA_S");
        а = УбратьПробелы(строка(ФайлДБФ.ПолучитьЗначениеПоля("ND")));
        Попытка
           а = Число(а);
           Сообщить("а - число");
        Исключение
           Сообщить("а - строка");
        КонецПопытки;
        стр.ПлатПоруч = а;
        //стр.ПлатПоруч = УбратьПробелы(строка(ФайлДБФ.ПолучитьЗначениеПоля("ND")));
        стр.Сумма     = Число(ФайлДБФ.ПолучитьЗначениеПоля("S"));
        //стр.КодВалюты = УбратьПробелы(строка(ФайлДБФ.ПолучитьЗначениеПоля("CUR_ID")));
        //стр.КодВалюты = ИмяСчет.ВалютаДенежныхСредств.Код;
        Если  ФайлДБФ.ПолучитьЗначениеПоля("DK")= 1 Тогда
        стр.СчетКто = Счет;
        стр.СчетКому  = УбратьПробелы(строка(ФайлДБФ.ПолучитьЗначениеПоля("KL_CHK_K")));
        НомерТочки = Найти(стр.СчетКому,".");
        Если НомерТочки>0 Тогда
            стр.СчетКому  = Лев(стр.СчетКому,НомерТочки-1);
        КонецЕсли;
        стр.ИмяКому   = ФайлДБФ.ПолучитьЗначениеПоля("KL_NM_K");
        стр.ОкпоКому  = УбратьПробелы(строка(ФайлДБФ.ПолучитьЗначениеПоля("KL_OKP_K")));
         стр.мфоКому   = УбратьПробелы(строка(ФайлДБФ.ПолучитьЗначениеПоля("MFO_K")));
           Иначе
             стр.СчетКому = Счет;
               стр.СчетКто   = УбратьПробелы(строка(ФайлДБФ.ПолучитьЗначениеПоля("KL_CHK_K")));
             НомерТочки = Найти(стр.СчетКто,".");
              Если НомерТочки>0 Тогда
            стр.СчетКто  = Лев(стр.СчетКто,НомерТочки-1);
        КонецЕсли;
        стр.ИмяКто    = ФайлДБФ.ПолучитьЗначениеПоля("KL_NM_K");
        стр.ОкпоКто   = УбратьПробелы(строка(ФайлДБФ.ПолучитьЗначениеПоля("KL_OKP_K")));
        стр.мфоКто    = УбратьПробелы(строка(ФайлДБФ.ПолучитьЗначениеПоля("MFO_K")));
        КонецЕсли;    
        стр.Содержание= ФайлДБФ.ПолучитьЗначениеПоля("N_P");
        КонецЕсли;    
        Если не ФайлДБФ.Следующая() Тогда
        Прервать;
        КонецЕсли;
        КонецЦикла;
    КонецЕсли;
    Возврат(ТаблицаДБФ);
logist
Замените это
    а = УбратьПробелы(строка(ФайлДБФ.ПолучитьЗначениеПоля("ND")));
        Попытка
           а = Число(а);
           Сообщить("а - число");
        Исключение
           Сообщить("а - строка");
        КонецПопытки;
        стр.ПлатПоруч = а;


на это
    а = УбратьПробелы(строка(ФайлДБФ.ПолучитьЗначениеПоля("ND")));
        Попытка
           а = Число(а);
        стр.ПлатПоруч = а;
        Исключение
                стр.ПлатПоруч = Неопределено;
        КонецПопытки;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.