|
Строки | ☑ | ||
---|---|---|---|---|
0
almaz102
17.11.16
✎
09:13
|
Добрый день! Я начинающий программист, опыта еще нет.Подскажите пож-та как из строки вытащить сумму комиссии. Причем каждый раз сумма будет разной. Это у меня документ "Поступление на расчетный счет" по эквайрингу, Бухгалтерия 2.0. В реквизите "Назначении платежа" у меня текст: "Эквайринг, перечислено по реестру от 01.11.2016. (Количество операций 2 на сумму 1,400.00 по мерчанту , удержано: комиссии 25.20, возвратов 0.00/0.00)" из этого текста нужно вытащить комиссию банка "25.20"
|
|||
1
oslokot
17.11.16
✎
09:15
|
Воспользоваться функцией СтрНайти()
|
|||
2
h-sp
17.11.16
✎
09:18
|
(1) просто Найти()
|
|||
3
oslokot
17.11.16
✎
09:20
|
(2) у кого как
|
|||
4
Jonny_Khomich
17.11.16
✎
09:20
|
(2) в 8.3 есть СтрНайти(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>)
|
|||
5
Jonny_Khomich
17.11.16
✎
09:22
|
(2) а найти() для строки нельзя использовать. сейчас в СП посмотрел.
|
|||
6
h-sp
17.11.16
✎
09:23
|
(3) (4) в БП 2.0 СтрНайти? В 8.2? С каких пор это у вас такое?
|
|||
7
Jonny_Khomich
17.11.16
✎
09:25
|
(5) не так искал, можно и найти использовать, только стрнайти гибче.
(6) версия платформы не указывалась |
|||
8
catena
17.11.16
✎
09:30
|
(4)Странный у вас СП, я вот у себя смотрю:
Глобальный контекст (Global context) Найти (Find) Синтаксис: Найти(<Строка>, <ПодстрокаПоиска>) Параметры: <Строка> (обязательный) Тип: Строка. Исходная строка. <ПодстрокаПоиска> (обязательный) Тип: Строка. Искомая подстрока. Возвращаемое значение: Тип: Число. Позиция первого знака найденной подстроки. Нумерация символов в строке начинается с 1. Если строка не содержит указанной подстроки, то возвращается 0. Описание: Функция является устаревшей! Рекомендуется использовать функцию СтрНайти. Находит первое вхождение искомой строки как подстроки в исходной строке. |
|||
9
oslokot
17.11.16
✎
09:34
|
(8) у вас 8.2 ОФ, у нас 8.3 УФ вот и вся разница. Метод Найти() нам даже недоступен
|
|||
10
d546
17.11.16
✎
09:34
|
(7) зато у БП 2.0 указан режим совместимости ;)
|
|||
11
almaz102
17.11.16
✎
09:36
|
Платформа 8.2
|
|||
12
d546
17.11.16
✎
09:39
|
используй Найти() и Сред(), остальное в СП
|
|||
13
dmpl
17.11.16
✎
09:42
|
(0) По опыту - стабильно это работать не будет.
|
|||
14
aka AMIGO
17.11.16
✎
09:48
|
Да нормально будет работать.. Если банк не изменит формат сообщения.
Найти подстроку комисс, в цикле прошагать до запятой, вырезать новую строку с пробела до запятой, превратить в число. Или немного по-другому. .. Ладно, пусть ТС фантазирует.. всего-то час-полтора затрат. |
|||
15
aka AMIGO
17.11.16
✎
09:51
|
+14 в цикле прошагать посимвольно до пробела, читать до запятой, конкатенируя символы (цифры, точку) в новую строку..
|
|||
16
catena
17.11.16
✎
09:51
|
(9)Серьезно? Скопировано из справки 8.3
|
|||
17
Лефмихалыч
17.11.16
✎
09:54
|
/комиссии \d+.{0,1}\d+/ig
|
|||
18
Лефмихалыч
17.11.16
✎
09:55
|
+(17) оу! Перед точкой слэш должен быть - маркап его сожрал
|
|||
19
oslokot
17.11.16
✎
09:56
|
(16) там же и СтрНайти, раздел Глобальный контекст
|
|||
20
dmpl
17.11.16
✎
09:58
|
(14) Регулярно меняют (попадался случай даже единичных ошибок, т.е. назначение человек вводил), уже наступали на эти грабли. Потом еще 1Сники и виноваты оказываются.
|
|||
21
Jonny_Khomich
17.11.16
✎
09:58
|
(8)написано же:"Функция является устаревшей! Рекомендуется использовать функцию СтрНайти. ".
Её завтра вырежут, будете потом сидеть целый день, искать где она использовалась. |
|||
22
oslokot
17.11.16
✎
09:58
|
(16) + Найти() устарела с какого-то релиза не помню точно, наверное с 8.3.6
|
|||
23
Лефмихалыч
17.11.16
✎
09:59
|
или
/комиссии \d+(\.\d+){0,1}/ig или совсем в лоб Комментарий = "Количество операций 2 на сумму 1,400.00 по мерчанту , удержано: комиссии 25.20, возвратов 0.00/0.00)"; Фрагмент = СтрПолучитьСтроку(СтрЗаменить(Комментарий, ": комиссии ", Символы.ПС), 2); Сумма = Число(СтрПолучитьСтроку(СтрЗаменить(Фрагмент, ",", Символы.ПС),1); |
|||
24
Timon1405
17.11.16
✎
10:03
|
(23) регулярка не сработает на "комиссии 1 000"
|
|||
25
aka AMIGO
17.11.16
✎
10:04
|
(20) Ну, да.. на неизменность надежда никакая..
(0) Конечно, задачку для обучения полезно-б и решить, а лучше-то научить бушек копипастить нужные цифири.. тогда и ошибки будут их, а не твои. |
|||
26
dmpl
17.11.16
✎
10:06
|
(24) А еще может быть "25 руб. 20 коп.". Или даже "двадцать пять рублей 20 копеек".
|
|||
27
aka AMIGO
17.11.16
✎
10:06
|
(23) Варианты текста из банки, что в голову взбредет тамошнему работнику
комиссии комисии :) комисс. комис. ком. к. Все варианты имеют право на жисть :) |
|||
28
aka AMIGO
17.11.16
✎
10:07
|
(26) ммм.. точно! так что пусть бушки научатся читать глазками и вводить ручками нужное :)
|
|||
29
h-sp
17.11.16
✎
10:08
|
(20) у меня доработка: из назначения платежа вытаскивается По счету № такому-то от даты такой-то и идет привязка к счетам в базе. 5 лет уже, никаких претензий нет пока, все довольны.
|
|||
30
dmpl
17.11.16
✎
10:13
|
(29) Ну значит везет пока :)
Не, как средство автоматизации это имеет право на существование, но кнопку принятия полученных таким образом данных должен нажимать человек после проверки их корректности. Тогда вся ответственность будет на нем. |
|||
31
catena
17.11.16
✎
10:16
|
(19)Не об том речь. Тут утверждалось, что в 8.3 Найти() для строк недоступно. Если на каких-то платформах 8.3 это действительно так, хочется знать про эти грабли. Я в описании совместимости такого не видела.
|
|||
32
almaz102
17.11.16
✎
10:17
|
Спасибо Всем за помощь! Решил вопрос по методу Лефмихалыча.
|
|||
33
catena
17.11.16
✎
10:18
|
(21)Вот об этом и спрашиваю. Переводить самописную конфу с платформы на платформу не так просто, как в документации пишут. Вот взгляд и цепляется за такие фразы, как "на 8.3 это недоступно"
|
|||
34
oslokot
17.11.16
✎
10:23
|
(31) Вот, нашел с версии 8.3.6 применяется СтрНайти()
http://downloads.v8.1c.ru/content//Platform/8_3_9_1850/1cv8upd.htm т.е. как только уберешь режим совместимости 8.3.5, конфигуратор будет воспринимать Найти() как синтаксическую ошибку |
|||
35
h-sp
17.11.16
✎
10:23
|
синтакс-помощники стали разные. Читаешь одно, ставишь режим совместимости 8.2, там уже совсем другое написано. Если поставить галочку мобильная платформа, там еще куда всего добавляется.
У каждой версии: 8.3.3, 8.3.4, 8.3.5 и т.д. свои синтакс-помощники. |
|||
36
Лефмихалыч
17.11.16
✎
11:10
|
(24) (27) этого всего в ТЗ не было
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |