|   |   | 
| 
 | Заполнение реквизита формы из разобранного текста | ☑ | ||
|---|---|---|---|---|
| 0
    
        prilforreal 17.11.17✎ 08:51 | 
        Доброго утра, волшебникам! Есть форма документа оплата, документ формируется автоматически при выгрузке электронных писем, реквизиты заполняются из разобранного текста сообщения вот текст письма
 Vhodyaschiy platezh. Summa 2,222.22 RUB. Otpravitel ******** *******. 16.11.2017. разбираю текст для заполнения реквизита сумма: ИС = СтрЗаменить(СтрТЗ.Тело,",",""); Если ((поз>0)и(сред(СтрТЗ.Тело,33,1)=".")) тогда дО.Сумма=(ИС+Число(Число(Сред(СтрТЗ.Тело,27,5)))); ИначеЕсли ((поз>0)и(сред(СтрТЗ.Тело,32,1)=".")) тогда дО.Сумма=(ИС+Число(Число(Сред(СтрТЗ.Тело,27,4)))); ИначеЕсли ((поз>0)и(сред(СтрТЗ.Тело,31,1)=".")) тогда дО.Сумма=(ИС+Число(Число(Сред(СтрТЗ.Тело,27,3)))); ИначеЕсли ((поз>0)и(сред(СтрТЗ.Тело,30,1)=".")) тогда дО.Сумма=(ИС+Число(Число(Сред(СтрТЗ.Тело,27,2)))); КонецЕсли; Но в документе реквизит не заполняется, помогите понять в чем дело и навести порядок в голове и коде) | |||
| 1
    
        Lexey_ 17.11.17✎ 08:56 | 
        (0) есть же отладчик     | |||
| 2
    
        prilforreal 17.11.17✎ 09:00 | 
        Поправил до такого вида:
 ИС = СтрЗаменить(СтрТЗ.Тело,",",""); Сумма=0; Если ((поз>0)и(сред(СтрТЗ.Тело,33,1)=".")) тогда Сумма=(ИС+(Сред(СтрТЗ.Тело,27,5))); ИначеЕсли ((поз>0)и(сред(СтрТЗ.Тело,32,1)=".")) тогда Сумма=(ИС+(Сред(СтрТЗ.Тело,27,4))); ИначеЕсли ((поз>0)и(сред(СтрТЗ.Тело,31,1)=".")) тогда Сумма=(ИС+(Сред(СтрТЗ.Тело,27,3))); ИначеЕсли ((поз>0)и(сред(СтрТЗ.Тело,30,1)=".")) тогда Сумма=(ИС+(Сред(СтрТЗ.Тело,27,2))); КонецЕсли; дО.Сумма=Число(Сумма); Вылетает преобразование к типу число не может быть выполнено | |||
| 3
    
        VladZ 17.11.17✎ 09:01 | 
        Жуть какая. Я бы делал так: нашел в строке "Summa", обрезал все слева. Нашел "RUB", обрезал справа. Убрал "," и привел к числу.     | |||
| 4
    
        prilforreal 17.11.17✎ 09:03 | 
        (3) Как так обрезал? чем?     | |||
| 5
    
        VladZ 17.11.17✎ 09:04 | 
        Сред(), Лев(), Прав()     | |||
| 6
    
        VladZ 17.11.17✎ 09:05 | 
        Читай букварь: http://helpme1c.ru/stroki-v-yazyke-1s-8-v-primerax     | |||
| 7
    
        igorPetrov 17.11.17✎ 09:06 | 
        (4) Волшебной палочкой.     | |||
| 8
    
        prilforreal 17.11.17✎ 09:06 | 
        (6) Я все время думал что Сред(), Лев(), Прав() определяют позицию и не более...     | |||
| 9
    
        Lexey_ 17.11.17✎ 09:07 | 
        (8) есть же СП, зачем гадать?     | |||
| 10
    
        prilforreal 17.11.17✎ 09:14 | 
        (5) Благо дарю тебе чародей!) Все ясно и просто) Осталось запятые убрать) и точки заменить на запятые))
 Сумма=Сред(СтрТЗ.Тело,поз+27); поз=СтрНайти(Сумма," RUB."); если поз>0 тогда Сумма=Лев(Сумма,поз-5); конецесли; дО.Сумма=Число(Сумма); | |||
| 11
    
        igorPetrov 17.11.17✎ 09:25 | 
        (8) Думать вредно.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |