![]() |
![]() |
![]() |
|
Парсинг выписки | ☑ | ||
---|---|---|---|---|
0
Deon
16.11.06
✎
10:29
|
Господа, пришла тут выписка из банка.
Клиенты в комментариях к платежу пишут массу всяких интересных вещей и иногда даже нужный номер накладной или фактуры, к которой хотелось бы подвесить этот платеж. Есть желание автоматизировать распознавание номера документа. Есть ли у кого-нибудь готовые решения? |
|||
1
Чес
16.11.06
✎
10:29
|
Их милльен. У любого франча весь набор на все банки
|
|||
2
Ёпрст2
16.11.06
✎
10:30
|
(0) текст строки дай ...
|
|||
3
Deon
16.11.06
✎
10:31
|
(1) При чем тут банк?
|
|||
4
Deon
16.11.06
✎
10:31
|
(2) вариантов много
|
|||
5
Ёпрст2
16.11.06
✎
10:31
|
(4) Телепатов мало ..
|
|||
6
Чес
16.11.06
✎
10:33
|
(3) Господа, пришла тут выписка из банка.
Вот причем... |
|||
7
Deon
16.11.06
✎
10:39
|
(6) Мне нужен парсинг комментов. Комменты от банка не зависят
|
|||
8
Deon
16.11.06
✎
10:40
|
(5)
Оплата по сч. 846 от 02.06.06 за товар. В т.ч. НДС 18 % 477,00 Оплата за оборудование, согл. сч.-ф.N 470 от 24.04.2006 г. в т.ч. НДС(18%) - Оплата за товар по счету 370 ... |
|||
9
Чес
16.11.06
✎
10:42
|
(8)
(7) А откуда у тебя, как ты выразился "комменты"? |
|||
10
birkoFFFF
16.11.06
✎
10:43
|
(9) комменты пишет те кто платежки отправляют, в назначении платежа
|
|||
11
Deon
16.11.06
✎
10:43
|
(9) Клиенты пишут в платежках
|
|||
12
Deon
16.11.06
✎
10:45
|
Я что единственный, кто видел выписку банка?
|
|||
13
Чес
16.11.06
✎
10:48
|
(11) А приходит эта информация как? Откуда?
|
|||
14
Ёпрст2
16.11.06
✎
10:49
|
(12) Как вариант ищи дату, всё что левее - нумер...Или юзай регулярные выражения ..
|
|||
15
Deon
16.11.06
✎
10:50
|
(13) Из банка. Но содержание комментов от банка не зависит.
|
|||
16
Deon
16.11.06
✎
10:51
|
(14) это не очень интеллектуально
|
|||
17
Deon
16.11.06
✎
10:51
|
пока написал так:
string ls_source // Строка для поиска string ls_spacesource // Строка для поиска с пробелами string ls_list[] // Перечень вариантов обозначений типа документа long ll_list // Размер массиива обозначений long n,i,j string ls_v1_0, ls_v2_0 // Рабочие варианты найденных номеров документов string ls_v1, ls_v2 // Варианты найденных номеров документов long ll_pos, ll_pos2 // Для поиска в строке long ll_nowsymb, ll_nowspacesymb // Для поиска в строке с пробелами ls_spacesource = as_source // Уберем пробелы, чтобы легче искалось ls_source = of_replacestring(as_source, " ", "") // Проставим дополнительные варианты поиска ls_list[1]=as_doctype choose case as_doctype case "сч" ls_list[2]="счт" ls_list[3]="счет" ls_list[4]="счету" ls_list[5]="счета" ls_list[6]="счeту" case "сф" ls_list[2]="с/ф" ls_list[3]="с.ф" ls_list[4]="счет/ф" ls_list[5]="сч/ф" ls_list[6]="сч-ф" ls_list[7]="сч.ф" ls_list[8]="счф" ls_list[9]="счет-фактура" ls_list[10]="счет-фактуре" ls_list[11]="счету-фактуре" ls_list[12]="накл" end choose // Добавим варианты с точкой ll_list=upperbound(ls_list) for n=1 to ll_list ls_list[ll_list+n]=ls_list[n]+"." next // Добавим варианты с номерами ll_list=upperbound(ls_list) for n=1 to ll_list ls_list[ll_list+n*2 - 1]=ls_list[n]+"N" ls_list[ll_list+n*2]=ls_list[n]+"№" next ls_v1='' ls_v2='' ll_list=upperbound(ls_list) for i = 1 to ll_list // Ищем вхождение варианта ll_pos = pos(upper(ls_source), upper(ls_list[i])) if ll_pos>0 then // нашли // Найдем соответветствующую позицию в строке с пробелами ll_nowsymb = 0 ll_nowspacesymb = 0 for j = 1 to len(ls_spacesource) if mid(ls_spacesource,j,1) <> " " then ll_nowsymb++ ll_nowspacesymb++ if ll_nowsymb = ll_pos + len(ls_list[i]) then exit next // Найдем номер документа, отрезаемый пробелом ll_pos2 = pos( upper(mid(ls_spacesource,ll_nowspacesymb)) ," ") ls_v1_0 = '' if ll_pos2>0 then ls_v1_0 = trim( mid(ls_spacesource,ll_nowspacesymb, ll_pos2 - 1) ) else ls_v1_0 = trim( mid(ls_spacesource,ll_nowspacesymb)) end if if of_containnumbers(ls_v1_0) then // берем только номер, в котором есть цифры и выбираем самый короткий if len(ls_v1_0) < len(ls_v1) or ls_v1='' then ls_v1 = ls_v1_0 end if end if // Найдем номер документа, отрезанный "от" ll_pos2 = pos( upper(mid(ls_source,ll_pos)) ,"ОТ") ls_v2_0 = '' if ll_pos2>0 then ls_v2_0 = trim( mid(ls_source, ll_pos + len(ls_list[i]), ll_pos2 - 1 - len(ls_list[i])) ) else ls_v2_0 = trim( mid(ls_source, ll_pos + len(ls_list[i])) ) end if if of_containnumbers(ls_v2_0) then // берем только номер, в котором есть цифры и выбираем самый короткий if len(ls_v2_0) < len(ls_v2) or ls_v2='' then ls_v2 = ls_v2_0 end if end if end if next // Выберем более короткий из найденных вариантов if len(ls_v1) < len(ls_v2) and len(ls_v1) > 0 then return ls_v1 else return ls_v2 end if |
|||
18
у лю 427
16.11.06
✎
10:52
|
$50
|
|||
19
Deon
16.11.06
✎
10:53
|
(18) Кто-то взломал ник Пита или ты не дописал один нолик?
|
|||
20
Чес
16.11.06
✎
10:59
|
(17) Это ты хвастаешься? Так нечем.
|
|||
21
Deon
16.11.06
✎
11:01
|
(20) Это, чтобы моя мысль была ясна
|
|||
22
Deon
16.11.06
✎
11:07
|
всплыву
|
|||
23
Чес
16.11.06
✎
11:09
|
Так что это за исходник? У тебя в электронном виде приходит из системы клиент - банк выписка? Правильно?
ТЫ ее загружаешь в 1С? Правильно? Тебе надо еще определить номер документа, по которому был платеж? Да? Так зачем вот (17)? Есть у меня один программист, ему надо было в свою программу из 7.7. торговли выгружать номера расходных накладных за день. Раз в день. Зачем - то. Я ему предложил и OLE, и дбф, и csv, ну короче что хошь. Он сказал что сам сделает, без средств 1С. На С++ написал читальщик напрямую из dbf файла. Так это все потому что малоопытный еще, не лень писать. |
|||
24
birkoFFFF
16.11.06
✎
11:10
|
(23) ты хоть раз видел формат в котором выписки выгружаются?
|
|||
25
Deon
16.11.06
✎
11:11
|
(23) Просто я не 1С-ник :) Мне принцип важен, а не язык реализации. А вообще мне нужно именно то, о чем ты говоришь
|
|||
26
Чес
16.11.06
✎
11:19
|
(24) Зависит от клиент банка. От дбф до вордовских документов. И, поверь, пока у франча работал, насмотрелся всяких
(25) Так я тебе говорю. Звони ближайшему франчу, говори - мне нужна загрузка из клиент - банка такой - то системы. От 50$ до 80$. А вообще такие вещи лучше на 1С писать. Там, поверь, это будет проще, чем на С. |
|||
27
Deon
16.11.06
✎
11:25
|
(26) У меня в конторе база не 1С.
И эта загрузка мне будет доставать нужный номер документа из комментария? |
|||
28
Deon
16.11.06
✎
11:36
|
всплыву2
|
|||
29
Прохожий
16.11.06
✎
11:38
|
*24) MT102 - СНГовённый "стандарт" межбанковских сообщений, другого вроде нет "формата".
|
|||
30
Прохожий
16.11.06
✎
11:39
|
(26) "От дбф до вордовских документов" - это тебе тоже пионэр напиал?
|
|||
31
birkoFFFF
16.11.06
✎
11:42
|
(29) вот и я про то-же, это текстовый файлик с разделителями, где там dbf и ворд не могу понять...
|
|||
32
Deon
16.11.06
✎
11:46
|
Да хоть в формате скана бумажной платёжки, назначение я сам добуду, мне не это недо
|
|||
33
Deon
16.11.06
✎
11:47
|
недо = надо
|
|||
34
Прохожий
16.11.06
✎
11:48
|
"в формате скана бумажной платёжки" - и такой формат бывает? Чего только не курят эти аборигены...
|
|||
35
Deon
16.11.06
✎
11:49
|
(34) можно и такой создать :)
|
|||
36
birkoFFFF
16.11.06
✎
11:50
|
(32) мы тебе что, должны написать алгоритм интеллектуального метода вытаскивания вида и номера документа из строки, или что?
(34) главное придумать зачем |
|||
37
Deon
16.11.06
✎
11:51
|
(36) Напишу сам. Интересны идеи, мысли. Или готовые решения
|
|||
38
birkoFFFF
16.11.06
✎
11:55
|
Готовых решений извини нет, но что-то наподобие было, похоже на то что ты написал
Но ты с начала определись насколько тебе это нужно, потому как: Конрагенты в назначении платежа в трети случаев пишут непойми что, могут и в номере документа ошибится, и орфографических ошибок наделать, поэтому до полной автоматизации в любом случае дело не дойдет, от работы человека отказаться не получиться, перепроверять все равно придется |
|||
39
Прохожий
16.11.06
✎
11:57
|
(37) Готовое решение "тетя Дуся (СССР)" алгоритм распространенный, легко заменяется, работает автономно...
|
|||
40
Прохожий
16.11.06
✎
11:58
|
+(39) Широко представлен в парке...
|
|||
41
birkoFFFF
16.11.06
✎
11:58
|
+(38)проверено на 3500 клиентов, плательщиков абонентской платы, при этом во всех счетах, счет-фактурах и актах было расписано как должно оформлятся назначение платежа
Не думаю что у вас клиенты более дисциплинированные... |
|||
42
Deon
16.11.06
✎
11:58
|
(38) Объем уменьшится - это самое главное
|
|||
43
birkoFFFF
16.11.06
✎
12:01
|
(38) Поверь мне уменьшится не на много, зато у оператора появится новый повод спирать свои ошибки на другого, а этим другим окажешься ты со своей программкой.
Она будет начальству говорить что это не она, а твоя программка неправильные документы поставила и никому ничего не докажешь. |
|||
44
birkoFFFF
16.11.06
✎
12:02
|
не 38, а 42 сорри
|
|||
45
Deon
16.11.06
✎
12:50
|
(43) Не будет :)
|
|||
46
birkoFFFF
16.11.06
✎
12:56
|
(45) в таком случfе желаю удачи :-))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |