Выделить комиссию из строки назначения платежа
Всем доброго времени. Есть код
МассивСлов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаСекции.НазначениеПлатежа, "", истина);
ТипЧисло = Новый ОписаниеТипов("Число");
Для Индекс = 0 По МассивСлов.ВГраница() Цикл
Слово = МассивСлов[Индекс];
Если СтрНайти(Слово, "ком") Тогда
комиссия = 0 + ТипЧисло.ПривестиЗначение(МассивСлов[Индекс+1]);
УстановитьСвойство(ОбъектДляЗаписи, Строка("_СуммаУслуги"), комиссия);
Прервать;
КонецЕсли;
КонецЦикла;
Но он проставляет комиссию только если в назначение платежа есть слово ком, как сделать чтобы еще и тянулось по слову комиссия. У меня два разных банка.
МассивСлов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаСекции.НазначениеПлатежа, "", истина);
ТипЧисло = Новый ОписаниеТипов("Число");
Для Индекс = 0 По МассивСлов.ВГраница() Цикл
Слово = МассивСлов[Индекс];
Если СтрНайти(Слово, "ком") Тогда
комиссия = 0 + ТипЧисло.ПривестиЗначение(МассивСлов[Индекс+1]);
УстановитьСвойство(ОбъектДляЗаписи, Строка("_СуммаУслуги"), комиссия);
Прервать;
КонецЕсли;
КонецЦикла;
Но он проставляет комиссию только если в назначение платежа есть слово ком, как сделать чтобы еще и тянулось по слову комиссия. У меня два разных банка.
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
хотя "ком" присутствует и в слове "комиссия". Должно работать и без этого. Приведите все к одному регистру. т.е. обработайте все слова функцией НРег() или ВРег().
Если СтрНайти(Слово, "ком") Тогда
Если СтрНайти(НРег(Слово), "ком") ИЛИ СтрНайти(НРег(Слово), "комиссия") Тогда
хотя "ком" присутствует и в слове "комиссия". Должно работать и без этого. Приведите все к одному регистру. т.е. обработайте все слова функцией НРег() или ВРег().
(3)
СтрНачинаетсяС(<Строка>, <СтрокаПоиска>)
Параметры:
<Строка> (обязательный)
Тип: Строка.
Строка, начало которой проверяется на совпадение с подстрокой поиска.
<СтрокаПоиска> (обязательный)
Тип: Строка.
Строка, содержащая предполагаемое начало строки.
В случае если переданное значение является пустой строкой генерируется исключительная ситуация.
Возвращаемое значение:
Тип: Булево.
Истина - строка начинается с указанной подстроки, Ложь - в противном случае.
СтрНачинаетсяС(НРег(Слово), "ком")
СтрНачинаетсяС(<Строка>, <СтрокаПоиска>)
Параметры:
<Строка> (обязательный)
Тип: Строка.
Строка, начало которой проверяется на совпадение с подстрокой поиска.
<СтрокаПоиска> (обязательный)
Тип: Строка.
Строка, содержащая предполагаемое начало строки.
В случае если переданное значение является пустой строкой генерируется исключительная ситуация.
Возвращаемое значение:
Тип: Булево.
Истина - строка начинается с указанной подстроки, Ложь - в противном случае.
Эквайринг, по мерчанту 245184311548 от 01.12.2018 операции 50 на сумму 10000.00 удержано ком 100.00 Возвр 0.00/0.00 рога и копыта
Оплата по Договору N18546 от 24.09.11, НДС не выделяется.MISC комиссия 200.01, Дата выручки 06-12-18/MAST/SD5000,CM500,MIR/SD4000 CM40,00,VISA/SD20000.00,CM245.81,.
вот такого типа строки. Во второй по слову "комиссия" комиссия не вытягивается в нужное поле.
Оплата по Договору N18546 от 24.09.11, НДС не выделяется.MISC комиссия 200.01, Дата выручки 06-12-18/MAST/SD5000,CM500,MIR/SD4000 CM40,00,VISA/SD20000.00,CM245.81,.
вот такого типа строки. Во второй по слову "комиссия" комиссия не вытягивается в нужное поле.
(5)И 2 и 4 должно работать.
Попробуйте добавить ещё СокрЛП()
Ну и вариация на тему
Ну и вариант тупости банка
kомиссия <> комиссия // k в первом слове латинская
кoмиссия <> комиссия // о в первом слове латинская
Например в искомой строке используются символы Латинского алфавита
Попробуйте добавить ещё СокрЛП()
СтрНачинаетсяС(СокрЛП(НРег(Слово)), "ком")
Ну и вариация на тему
СтрНайти(Лев(СокрЛП(НРег(Слово)),3), "ком")
Ну и вариант тупости банка
kомиссия <> комиссия // k в первом слове латинская
кoмиссия <> комиссия // о в первом слове латинская
Например в искомой строке используются символы Латинского алфавита
(20)
(23)
ничего не сказал, проглотил в легкую.
Может, наконец скопируете сюда точное и полное содержание строки, на которой спотыкается ваш код? А то пока лечим больного по словесному описанию его фотографии.
(23)
вот это проверяли?
Я бы еще проверил на слова "коммисия" и "коммиссия" - немало людей напишет именно так. И чем дальше, тем их будет больше.
Добавьте Сообщить и посмотрите что выводит.
(14)
МассивСлов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаСекции.НазначениеПлатежа, "", истина);
ТипЧисло = Новый ОписаниеТипов("Число");
Для Индекс = 0 По МассивСлов.ВГраница() Цикл
Сообщить(Слово);
Слово = МассивСлов[Индекс];
Если СтрНайти(Слово, "ком") Тогда
комиссия = 0 + ТипЧисло.ПривестиЗначение(МассивСлов[Индекс+1]);
УстановитьСвойство(ОбъектДляЗаписи, Строка("_СуммаУслуги"), комиссия);
Прервать;
КонецЕсли;
КонецЦикла;
Показать(14)
(30) Я сейчас из текста Оплата по Договору N18546 от 24.09.11, НДС не выделяется.MISC комиссия 200.01, Дата выручки 06-12-18/MAST/SD5000,CM500,MIR/SD4000 CM40,00,VISA/SD20000.00,CM245.81,.
после сочетания комиссия 200.01, убрала в ручную из файла запятую и все считалось правильно ошибка была в запятой после суммы, а не в слове комиссия. А как теперь решать вопрос с этой запятой???
после сочетания комиссия 200.01, убрала в ручную из файла запятую и все считалось правильно ошибка была в запятой после суммы, а не в слове комиссия. А как теперь решать вопрос с этой запятой???
(33)
Кстати, если мне не изменяет мой склероз, то по дефолту он как раз запятая, так что как у вас этот код вообще работает - ХЗ.
А как теперь решать вопрос с этой запятой???
Возможно, явно задать параметр разделителя строк в РазложитьСтрокуВМассивПодстрок() - он у вас пустой.
Кстати, если мне не изменяет мой склероз, то по дефолту он как раз запятая, так что как у вас этот код вообще работает - ХЗ.
(5)
(5)
А это назначение платежа как приходит из банка.
(5)
Эквайринг, по мерчанту 245184311548 от 01.12.2018 операции 50 на сумму 10000.00 удержано ком 100.00 Возвр 0.00/0.00 рога и копыта
Оплата по Договору N18546 от 24.09.11, НДС не выделяется.MISC комиссия 200.01, Дата выручки 06-12-18/MAST/SD5000,CM500,MIR/SD4000 CM40,00,VISA/SD20000.00,CM245.81,.
Оплата по Договору N18546 от 24.09.11, НДС не выделяется.MISC комиссия 200.01, Дата выручки 06-12-18/MAST/SD5000,CM500,MIR/SD4000 CM40,00,VISA/SD20000.00,CM245.81,.
А это назначение платежа как приходит из банка.
Сам код
МассивСлов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаСекции.НазначениеПлатежа, " ", истина);
ТипЧисло = Новый ОписаниеТипов("Число");
Для Индекс = 0 По МассивСлов.ВГраница() Цикл
Слово = МассивСлов[Индекс];
Сообщить(Слово);
Если СтрНачинаетсяС(НРег(Слово), "ком") ИЛИ СтрНачинаетсяС(НРег(Слово), "комиссия") Тогда
комиссия = 0 + ТипЧисло.ПривестиЗначение(МассивСлов[Индекс+1]);
УстановитьСвойство(ОбъектДляЗаписи, Строка("_СуммаУслуги"), комиссия);
Прервать;
КонецЕсли;
КонецЦикла;
Вот что вышло по строке сообщить слово:
Оплата
по
Договору
N18146
от
24.09.11,
НДС
не
выделяется.MISC
комиссия
Эквайринг,
по
мерчанту
123456789000
от
01.12.2018
операции
50
на
сумму
50000
удержано
ком
по слову комиссия по-прежнему не не проставляется в нужное поле.
МассивСлов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаСекции.НазначениеПлатежа, " ", истина);
ТипЧисло = Новый ОписаниеТипов("Число");
Для Индекс = 0 По МассивСлов.ВГраница() Цикл
Слово = МассивСлов[Индекс];
Сообщить(Слово);
Если СтрНачинаетсяС(НРег(Слово), "ком") ИЛИ СтрНачинаетсяС(НРег(Слово), "комиссия") Тогда
комиссия = 0 + ТипЧисло.ПривестиЗначение(МассивСлов[Индекс+1]);
УстановитьСвойство(ОбъектДляЗаписи, Строка("_СуммаУслуги"), комиссия);
Прервать;
КонецЕсли;
КонецЦикла;
Вот что вышло по строке сообщить слово:
Оплата
по
Договору
N18146
от
24.09.11,
НДС
не
выделяется.MISC
комиссия
Эквайринг,
по
мерчанту
123456789000
от
01.12.2018
операции
50
на
сумму
50000
удержано
ком
по слову комиссия по-прежнему не не проставляется в нужное поле.
(26)
Если назначение платежа стандартизовано, то искать надо по слову "сумм", а не "ком(иссия)". А если нестандартизовано... дело тухлое.
по слову комиссия по-прежнему не не проставляется в нужное поле
И не должно проставляться: в исходном коде вы берете значение из слова, следующего за "ком" (или "комиссия") - это "Эквайринг" - где тут сумма комиссии?
Если назначение платежа стандартизовано, то искать надо по слову "сумм", а не "ком(иссия)". А если нестандартизовано... дело тухлое.
(29) у вас вот это:
вот с этим не сходится:
Скажу так. Наймите программиста - это не Ваш путь.
Вот что вышло по строке сообщить слово:
Оплата
по
Договору
N18146
от
24.09.11,
НДС
не
выделяется.MISC
комиссия
Эквайринг,
по
мерчанту
123456789000
от
01.12.2018
операции
50
на
сумму
50000
удержано
ком
ПоказатьОплата
по
Договору
N18146
от
24.09.11,
НДС
не
выделяется.MISC
комиссия
Эквайринг,
по
мерчанту
123456789000
от
01.12.2018
операции
50
на
сумму
50000
удержано
ком
вот с этим не сходится:
Оплата по Договору N18546 от 24.09.11, НДС не выделяется.MISC комиссия 200.01, Дата выручки 06-12-18/MAST/SD5000,CM500,MIR/SD4000 CM40,00,VISA/SD20000.00,CM245.81,.
Скажу так. Наймите программиста - это не Ваш путь.
(29) Ну давайте так попробуем, что выводит Сообщить при таком коде:
МассивСлов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаСекции.НазначениеПлатежа, " ", истина);
ТипЧисло = Новый ОписаниеТипов("Число");
Для Индекс = 0 По МассивСлов.ВГраница() Цикл
Слово = МассивСлов[Индекс];
Если СтрНачинаетсяС(СокрЛП(НРег(Слово)), "ком") Тогда
комиссия = 0 + ТипЧисло.ПривестиЗначение(МассивСлов[Индекс+1]);
Сообщить(Слово + ": "+комиссия );
УстановитьСвойство(ОбъектДляЗаписи, Строка("_СуммаУслуги"), комиссия);
Прервать;
КонецЕсли;
КонецЦикла;
Показать
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот