Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Заполнение реквизита формы из разобранного текста

Заполнение реквизита формы из разобранного текста
Я
   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))));
                        КонецЕсли;

Но в документе реквизит не заполняется, помогите понять в чем дело и навести порядок в голове и коде)
 
 
   Lexey_
 
1 - 17.11.17 - 08:56
(0) есть же отладчик
   prilforreal
 
2 - 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)));
                        КонецЕсли;
                    дО.Сумма=Число(Сумма);

Вылетает преобразование к типу число не может быть выполнено
   VladZ
 
3 - 17.11.17 - 09:01
Жуть какая. Я бы делал так: нашел в строке "Summa", обрезал все слева. Нашел "RUB", обрезал справа. Убрал "," и привел к числу.
   prilforreal
 
4 - 17.11.17 - 09:03
(3) Как так обрезал? чем?
   VladZ
 
5 - 17.11.17 - 09:04
Сред(), Лев(), Прав()
   VladZ
 
6 - 17.11.17 - 09:05
   igorPetrov
 
7 - 17.11.17 - 09:06
(4) Волшебной палочкой.
   prilforreal
 
8 - 17.11.17 - 09:06
(6) Я все время думал что Сред(), Лев(), Прав() определяют позицию и не более...
   Lexey_
 
9 - 17.11.17 - 09:07
(8) есть же СП, зачем гадать?
   prilforreal
 
10 - 17.11.17 - 09:14
(5) Благо дарю тебе чародей!) Все ясно и просто) Осталось запятые убрать) и точки заменить на запятые))

Сумма=Сред(СтрТЗ.Тело,поз+27);
                        поз=СтрНайти(Сумма," RUB.");
                        если поз>0 тогда     
                            Сумма=Лев(Сумма,поз-5);                 
                        конецесли;
                        дО.Сумма=Число(Сумма);
 
 Рекламное место пустует
   igorPetrov
 
11 - 17.11.17 - 09:25
(8) Думать вредно.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует