forum.bitel.ru http://forum.bitel.ru/ |
|
Вопрос по загрузке платежа из файла.... http://forum.bitel.ru/viewtopic.php?f=22&t=2024 |
Страница 1 из 1 |
Автор: | snowman78 [ 16 мар 2009, 11:30 ] |
Заголовок сообщения: | Вопрос по загрузке платежа из файла.... |
Доброго времени суток.... Занялся выгрузкой платежей из файла. Использовал 1 шаблон выгрузки из текстового файла. ************************************************************ Пример 1.4. Пример шаблона 1 Формат строки в исходном файле (разделители полей - точка за запятой). Первым идет название договора, далее сумма платежа и комментарий. Даты платежа нет, в этом случае она равна датее реестра. x0000;13.4;sfdsdfdsd Описание шаблона в конфигурации. Идентификация клиента проводится по номеру договора. payment.load.pattern.1=Шаблон1 payment.load.pattern.1.type=1 payment.load.pattern.1.encoding=Cp1251 payment.load.pattern.1.payment_type=2 payment.load.pattern.1.regexp=(\w+);([\d\.]+);(\w+) payment.load.pattern.1.position_sum=2 payment.load.pattern.1.position_comment=3 payment.load.pattern.1.search.1.type=contract payment.load.pattern.1.search.1.pos=1 # 1 - eq, 2 - LIKE, 3 -REGEXP payment.load.pattern.1.search.1.regime=1 ************************************************************ В конфигурации прописал все что нужно, по крайней мере что указано в доках. ************************************************************ ######################## # опции шаблона загрузки платежей # ######################## payment.load.pattern.1=Шаблон1 payment.load.pattern.1.type=1 payment.load.pattern.1.encoding=Cp1251 payment.load.pattern.1.payment_type=9 payment.load.pattern.1.regexp=(\w+);([\d\.]+);([а-яА-я \w]+) payment.load.pattern.1.position_sum=2 payment.load.pattern.1.position_comment=3 payment.load.pattern.1.search.1.type=contract payment.load.pattern.1.search.1.pos=1 # 1 - eq, 2 - LIKE, 3 -REGEXP payment.load.pattern.1.search.1.regime=1 ************************************************************ В итоге выползает ошибка, что не может быть обработана дата. Причем тут дата, немного непонятно, потому что датой загрузки платежей будет дата загрузки реестра. и в файле она не присутствует. Ниже выкладываю 2 скриншота. Один скрин ошибки при загрузке, второй скрин текстового файйла. В чем ощшибка и где ее искать. Заранее спасибо!!!! |
Автор: | snark [ 16 мар 2009, 12:54 ] |
Заголовок сообщения: | |
может ошибка здесь: Код: ООО "Рога и Копыта" т.к Ваш регексп не учитывает кавычки в комментарии ...
^ ^ |
Автор: | snowman78 [ 16 мар 2009, 13:48 ] |
Заголовок сообщения: | |
Нет, ошибка е там . Создавал пальцами текстовый файлик, согласно документации, таже самая ошибка |
Автор: | snark [ 16 мар 2009, 16:14 ] |
Заголовок сообщения: | |
snowman78 писал(а): Нет, ошибка е там . внимательно посмотрел еще раз и думаю что ошибка тут:
Код: payment.load.pattern.1.regexp=(\w+);([\d\.]+);(\w+) почему? как Вы думаете во 2-й и 3-й строчках у Вас есть десятичный разделитель? нет, его нету, т.е. 500 никогда не попадет под регексп [\d\.]+ т.к. такой регексп требует точку! поправьте регексп хотя бы так:Код: (\d+\.?)
|
Автор: | snowman78 [ 16 мар 2009, 17:17 ] |
Заголовок сообщения: | |
Попробовал сделать как предложили..... Получилось .... payment.load.pattern.1.regexp=(\w+);(\d+\.?);([а-яА-я \w]+); Правда немного не понял, какую функцию тут выполняет "?".....? Итог не заставил себя долго ждать...... в ответ я получил " => строка не совпала с шаблоном ". Сдается мне, сто с regexp все нормально. Что тут другое....... ![]() |
Автор: | snark [ 16 мар 2009, 17:41 ] |
Заголовок сообщения: | |
snowman78 писал(а): Правда немного не понял, какую функцию тут выполняет "?".....?
знак вопроса означает "от нуля и до одного раза" ... попробуйте так: Код: (\d+\.?\d{0,2})
|
Автор: | snowman78 [ 16 мар 2009, 18:18 ] |
Заголовок сообщения: | |
Самое смешное в том, что сейчас собрал файлик, точ в точь как указан в доках, по первому шаблону, полность перенс 1-шаблон в конфиг, попробовал загрузить, и ни фига!!!!! Вот это уже смешно!!!!! ![]() |
Автор: | snowman78 [ 18 мар 2009, 15:03 ] |
Заголовок сообщения: | |
Продолжение темы с заходом на начало.... Перебрал в конфиге 2 шаблона 1 и 3: Пример 1.4. Пример шаблона 1 Формат строки в исходном файле (разделители полей - точка за запятой). Первым идет название договора, далее сумма платежа и комментарий. Даты платежа нет, в этом случае она равна датее реестра. x0000;13.4;sfdsdfdsd Описание шаблона в конфигурации. Идентификация клиента проводится по номеру договора. payment.load.pattern.1=Шаблон1 payment.load.pattern.1.type=1 payment.load.pattern.1.encoding=Cp1251 payment.load.pattern.1.payment_type=2 payment.load.pattern.1.regexp=(\w+);([\d\.]+);(\w+) payment.load.pattern.1.position_sum=2 payment.load.pattern.1.position_comment=3 payment.load.pattern.1.search.1.type=contract payment.load.pattern.1.search.1.pos=1 # 1 - eq, 2 - LIKE, 3 -REGEXP payment.load.pattern.1.search.1.regime=1 Пример 1.6. Пример шаблона 3 Формат строки в исходном файле (разделители полей - точка с запятой). Первым идет номер договора, далее сумма, комментарий договора и дата платежа. Обратите внимание, что комментарий договора может быть указан не полностью, только фамилия. x0000;13-4;Иванов ;04.07.2008 Описание шаблона в конфигурации. Идентификация клиента производится по номеру договора + началу ФИО. payment.load.pattern.2=Шаблон2 payment.load.pattern.2.type=1 payment.load.pattern.2.encoding=Cp1251 payment.load.pattern.2.payment_type=2 payment.load.pattern.2.regexp=(\w+);([\d\,\.\s\-]+);([а-яА-Я\s]+);([\d\.]+) payment.load.pattern.2.position_sum=2 # преобразование суммы к нужному виду payment.load.pattern.2.summa.replace=\-=>.|\s=> # дата платежа берется из файла payment.load.pattern.2.position_date=4 payment.load.pattern.2.date_format=dd.MM.yyyy payment.load.pattern.2.search.mode=and payment.load.pattern.2.search.1.type=contract payment.load.pattern.2.search.1.pos=1 payment.load.pattern.2.search.1.regime=1 payment.load.pattern.2.search.2.type=comment payment.load.pattern.2.search.2.pos=3 payment.load.pattern.2.search.2.regime=2 payment.load.pattern.2.search.2.replace=\s*([а-яА-Я]+)\s*=>%$1% # Ниже выложил скрин своего конфига в наст. момент смотри "screen1" В первом шаблоне добавил строки для колонки с датой Во втором шаблоне переписал проверку коментариев и отказался от определения первой части проверки. При таком конфиге выходят след. ошибки "screen2" -для 1-го шаблона "screen3" для второго шаблона В итоге сами вопросы... 1. Почему в первом шаблоне при поиске делается подстановка "7846" ? - и соответственно договор не находится. 2. При втором шаблоне частично выгрузка проходит, но отваливаются абоненты у которых в коментах есть пробел в конце, у которых название ооо "ыы" "ыыыыы". Как поправить скрипт для таких имен? 3. Как во втором шаблоне отключить выборку по коментариям и сделать только по номеру договора исключительно, я попытался, но он все равно продолжает на них ссылатся...? см "screen4" и "screen5" |
Автор: | snowman78 [ 18 мар 2009, 15:04 ] |
Заголовок сообщения: | |
продолжение .... |
Автор: | Администратор [ 18 мар 2009, 16:01 ] |
Заголовок сообщения: | |
1) Вы пробовали рестартовать сервер биллинга после смены конфига? 2) Я немного запутался. Давайте возьмем один шаблон платежа, одну строку из файла и какую вам выдает ошибку и я проверю. |
Автор: | snowman78 [ 18 мар 2009, 16:19 ] |
Заголовок сообщения: | |
payment.load.pattern.2=1 payment.load.pattern.2.type=1 payment.load.pattern.2.encoding=Cp1251 payment.load.pattern.2.payment_type=9 payment.load.pattern.2.regexp=(\w+);([\d\,\.\s\-]+);([а-яА-Я0-9a-zA-Z\w\"\-\s]+);([\d\.]+) payment.load.pattern.2.position_sum=2 # преобразование суммы к нужному виду payment.load.pattern.2.summa.replace=\-=>.|\s=> # дата платежа берется из файла payment.load.pattern.2.position_date=4 payment.load.pattern.2.date_format=dd.MM.yyyy #payment.load.pattern.2.search.mode=and payment.load.pattern.2.search.1.type=contract payment.load.pattern.2.search.1.pos=1 payment.load.pattern.2.search.1.regime=1 #payment.load.pattern.2.search.2.type=comment #payment.load.pattern.2.search.2.pos=3 #payment.load.pattern.2.search.2.regime=1 #payment.load.pattern.2.search.2.replace=\s*([а-яА-Я]+)\s*=>%$1% #пример почти рабочего скрипта (ошибается на пробеле в конце коментария #(\w+);([\d\,\.\s\-]+);([а-яА-Я0-9a-zA-Z\w\"\-\s]+);([\d\.]+) |
Автор: | snowman78 [ 18 мар 2009, 16:26 ] |
Заголовок сообщения: | |
317) П008362; 1445-04;ООО "КОМО";15.01.2009 => договор не найден поз. 1 искомое значение 008362 дата 15.01.2009 П008362; 1445-04;ООО "КОМО";15.01.2009 |
Автор: | snowman78 [ 18 мар 2009, 16:30 ] |
Заголовок сообщения: | |
(814) 00И9984; 850-00;Чилимкин Михаил Венидиктович;29.01.2009 => договор не найден поз. 1 искомое значение 00И9984 дата 29.01.2009 00И9984; 850-00;Чилимкин Михаил Венидиктович;29.01.2009 |
Автор: | Администратор [ 18 мар 2009, 16:33 ] |
Заголовок сообщения: | |
Проблемы оказались в системе конфигов 4.5, если пара ключ=значение была в конфигурации, а затем была удалена из конфигурации в памяти она не пропадает. Лечится рестартом сервера BGBillingServer, для 4.6 проблема не актуальна. |
Автор: | SafeAndSound [ 28 апр 2010, 14:32 ] |
Заголовок сообщения: | Re: Вопрос по загрузке платежа из файла.... |
Имеем конфиг: Код: payment.load.pattern.1=Реестр платежей payment.load.pattern.1.type=1 payment.load.pattern.1.encoding=Cp1251 payment.load.pattern.1.payment_type=40 payment.load.pattern.1.position_sum=3 payment.load.pattern.1.regexp=(\d{1,5});([\d\-]+);(\d+\.?\d{0,2});(.+) payment.load.pattern.1.position_date=2 payment.load.pattern.1.date_format=yyyy-MM-dd payment.load.pattern.1.search.mode=and payment.load.pattern.1.search.1.type=cid payment.load.pattern.1.search.1.pos=1 payment.load.pattern.1.search.1.regime=1 Содержимое реестра: Код: #7;2562.93 17037;2010-04-27;500.00;2 9755;2010-04-27;190.00;1 2723;2010-04-27;150.00;1 11070;2010-04-27;790.00;2 16308;2010-04-27;492.93;2 8941;2010-04-27;220.00;1 7800;2010-04-27;220.00;1 Результат загрузки: Код: (1) #7;2562.93 => пропуск Договоры с указанными кодами существуют.(2) 17037;2010-04-27;500.00;2 => договор не найден поз. 1 искомое значение 17037 дата 27.04.2010 (3) 9755;2010-04-27;190.00;1 => договор не найден поз. 1 искомое значение 9755 дата 27.04.2010 (4) 2723;2010-04-27;150.00;1 => договор не найден поз. 1 искомое значение 2723 дата 27.04.2010 (5) 11070;2010-04-27;790.00;2 => договор не найден поз. 1 искомое значение 11070 дата 27.04.2010 (6) 16308;2010-04-27;492.93;2 => договор не найден поз. 1 искомое значение 16308 дата 27.04.2010 (7) 8941;2010-04-27;220.00;1 => договор не найден поз. 1 искомое значение 8941 дата 27.04.2010 (8) 7800;2010-04-27;220.00;1 => договор не найден поз. 1 искомое значение 7800 дата 27.04.2010 Обработано строк => 8; из них комментариев => 1, ошибочных => 7, загружено => 0 Итого загружено платежей => 0 Время обработки: 0 d 00:00:04 Перезапуск сервера не влияет на результат. Подскажите, пожалуйста, в чем может быть проблема? -- Сервер вер. 4.6 сборка 672 от 24.03.2010 19:45:16 |
Автор: | SafeAndSound [ 29 апр 2010, 17:45 ] |
Заголовок сообщения: | Re: Вопрос по загрузке платежа из файла.... |
Граждане, кто-нибудь загружает платежи? Киньте, пожалуйста, рабочий конфиг и пример файла! Благодарю всех отозвавшихся. |
Автор: | snark [ 03 май 2010, 20:24 ] |
Заголовок сообщения: | Re: Вопрос по загрузке платежа из файла.... |
SafeAndSound писал(а): Граждане, кто-нибудь загружает платежи? загружает SafeAndSound писал(а): Киньте, пожалуйста, рабочий конфиг и пример файла! у каждого свой конфиг и мой, как и чей либо еще, Вам наврядли подойдет ... Вы скажите что у Вас не получается и вместе решим эту проблему ![]() |
Автор: | SafeAndSound [ 04 май 2010, 18:18 ] |
Заголовок сообщения: | Re: Вопрос по загрузке платежа из файла.... |
Мой конфиг, пример файла и лог на предыдущей странице в этой теме, а также здесь |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |