Имя: Пароль:
1C
1С v8
Заполнение реквизита формы из разобранного текста
,
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
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) Думать вредно.
Закон Брукера: Даже маленькая практика стоит большой теории.