"Учет деятельности микрофинансовой организации" для платформы 1С 8.2 МФО




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

46 Comments

  1. rfcor

    Есть ссылка на демо базу? Интересно в частности как реализован учет судебный решений и начисления штрафов, ибо там много нюансов с управленческой стороны..

    Reply
  2. rfcor

    А так же вопросы масштабируемости и работа с количеством активных пользователей более 150-200. Как база себя ведет при высоких нагрузках? Не тормозит?

    Reply
  3. hackoff

    Демо базы нет. Для учета судебных решений создал документы: 1. Претензия, 2. Передача договора в суд, 3. Решение суда, 4. Корректировка решения суда, 5. Поступления от приставов.

    По части масштарбируемости: летом планирую доработку до ломбарда, всем купившим отправлю бесплатно. Насчет 150-200 честно не знаю, около 40 норм работают, почти у всех вебклиент. Тормозов не замечено, база на ssd диске крутится.

    Reply
  4. karen0602

    Как приобрести программу?

    Reply
  5. hackoff

    (4) karen0602, в свободном доступе.

    Reply
  6. hackoff

    1. установить платформу 1с

    2. создать пустую конфигурацию

    3. скачать конфигурацию с сайта

    4. объединить.

    Reply
  7. GVALA

    Как запустить конфигурацию, я не программист , я бухгалтер, хотел попробовать ее набить и посмотреть как будет работать на деле!

    Reply
  8. amurip

    У меня возникло пару вопросов. 1) Имеется ли расчет процентов, именно расчет который можно распечатать приложением к договору? 2) Имеется ли возможность самому корректировать расчет пени за просрочку платежа?

    Reply
  9. hackoff

    (9) amurip, расчет процентов , вы имете ввиду чтобы на листе выводился. то нет. а так все проценты считает и есть документ где можно корректировать все долги

    Reply
  10. hackoff

    Скоро будет обновление.. Изменены роли, добавлены регистры сведений для отслеживаия… Безопасность 🙂

    Reply
  11. sikvel2012

    (11) не обижайтесь, но кто Вас надоумил так делать архитектуру? Вы заранее определили что будут только проценты и основной долг, Вы хотя бы с микрофинансистами пообщались относительно того как там все устроено

    Reply
  12. hackoff

    (12) reznic, кроме процентов есть еще расчеты по суду. База полностью отражает деятельность той организации для которой писалась.

    Reply
  13. xtape

    Здравствуйте, несколько вопросов:

    1) Как настроить отправку смс?

    .а) какая компания занимается рассылкой?

    .б) где менять текст смс сообщений?

    2) Можно ли добавлять доп. поля при заполнении контрагентов?

    3) Присутствуют ли в конфигурации печатные формы (шаблоны)? (не нашел)

    4) Будет ли добавлена возможность выгрузки инфы в ки (нбки/эквифакс и тд.) — да/нет? Если нет сколько будет стоить доработать?

    5) Будет ли добавлена возможность проверки клиента (сейчас есть фмс — паспорт). будет ли добавлено хотя бы росфинмониторинг и фссп? — да/нет? Если нет сколько будет стоить доработать?

    Есть еще не больное замечание. «пени» и «проценты по займу» немножко разные вещи…

    Reply
  14. hackoff

    (14) xtape,

    1. Смс отправляется через модем, Изменять текст только в конфигураторе, шаблоны пока не делал.

    2. Доп поля можно добавить в конфигураторе

    3. Печатные формы есть для печати расходников, договоров, извещений по суду, конвертов и еще какихто хреней

    4. Выгрузка в КИ нет, хотя интересная идея

    5. Если честно фмс вроде не работает в программе, времени не хватило дописать. (проблема с капчей была) Про остальные не могу дать ответ.

    Насчет пени и процентов уже понял, переделывать поздно

    Reply
  15. hackoff

    (14) xtape, flatron.88@mail.ru мой ящик. здесь не часто бываю

    Reply
  16. Spirit11

    Вот в программе у Вашего конкурента есть функционал проверки в таких органах как :

    Оценка заемщика и андеррайтинг

    Кредитный рейтинг НБКИ

    Кредитный рейтинг БКИ «Русский стандарт»

    Кредитный рейтинг «Объединенное кредитное бюро»

    Проверка контактных данных

    Поиск лица в базе данных «Розыск»

    Проверка заемщика на сайте Росфинмониторинга

    Информация об отказах/одобрениях от других МФО

    Проверка действительности паспорта на сайте ФМС

    Проверка наличия исполнительных производств по заемщику

    Проверка места работы по ИНН в базе ФНС

    Будет ли у Вас что-то подобное реализовано?

    Reply
  17. hackoff

    (17) Spirit11, Интерестный список, спасибо за него. Будет время, реализую, но обещать не могу. З.Ы. Программа бесплатна, поэтому с конкурентами бороться не планирую.

    Reply
  18. mnemchinov

    (17) Spirit11, У «конкурента» совсем другое решение 🙂 Начиная от версии платформы, заканчивая объемом функционала. И программа автора бесплатна, за что ему большой респект.

    Reply
  19. hackoff

    (19) mnemchinov, спасибо 🙂

    Reply
  20. mnemchinov

    К стати, список проверок скопипастен отсюда http://infostart.ru/public/389551/

    Reply
  21. hackoff

    (21) mnemchinov, красивый способ рекламы, оценил 🙂 Будут предложения по сотрудничеству — пишите 🙂 В этом году планирую разработку ломбарда 🙂

    Reply
  22. zayden

    Формируется ли отчет Форма 0420001

    Информация о видах и суммах операций с денежными средствами некредитных операций??

    Reply
  23. sikvel2012

    (21) mnemchinov, конкуренты трусливы и закрыли комментирование

    Reply
  24. hackoff

    (23) zayden, кажется нет) не знаю про такую форму. Запросов на разработку не было.

    Reply
  25. hackoff

    (24) reznic, надо ссылки на конкурентов. Чтобы народ мог сравнивать.

    Reply
  26. sikvel2012

    Они их сами выше приводили

    Reply
  27. sikvel2012

    вопрос, а где начисление процентов?

    Reply
  28. zayden

    (28) reznic,

    в заявке — кредитная программа кажется

    Reply
  29. hackoff

    (28) reznic, справочник «кредитные программы» в нем указываются правила для начисления. Потом проценты начисляются автоматически, по факту создания документа

    Reply
  30. mnemchinov

    (24) reznic, Комментирование давно открыли, даже есть новые комментарии

    Reply
  31. webester

    Извините за оффтоп, чистое любопытство, почему выбран зуб для подсистемы отчетов?

    Reply
  32. hackoff

    (32) webester, отчеты,зубная буль бухгалтера)

    Reply
  33. PovAndy

    Здравствуйте!

    Подскажите, пожалуйста, как перенести данные из БП 3 в МФО?

    Обработку по загрузке данных нам дали, а вот как выгрузить их из БП, никак не добъюсь от техподдержки!

    Reply
  34. hackoff

    (34)Здравствуйте. Готовых решений нет. Скорее всего надо изобретать велосипед и создавать правила обмена

    Начинать с конфы «конвертация данных»

    … Но это не точно 🙂

    Reply
  35. PovAndy

    (35) Если у меня есть правила в формате xsd, я могу их конвертировать в xml и сделать выгрузку через стандартную обработку?

    Пока слабо знаком с данной системой, больше с 7.7 работал.

    С фирмы даже дали обработку для загрузки данных в МФО и правила в формате Enterprise Data (xsd), но как их привязать к стандартной обработке выгрузки в XML? (Там правила тоже должны быть в xml формате)

    Reply
  36. hackoff

    (36) Для меня это темный лес 🙂 Моя конфа не типовая, сделовательно правила создавать придется вручную, для этого есть конфигурация «конвертация данных». Вот в ней и надо скрещивать две базы.

    Reply
  37. PovAndy

    (37) пробовал, но, пока, не совсем въехал, как это делать.

    Спасибо, буду пытать КД.

    Неужели нельзя из xsd правил сделать XML?

    Reply
  38. hackoff

    (38)суть правил обмена в том чтобы привести «разношерстные» данные одной базы, к данным другой базы, и написать их правила трансляции.. по мне это сложнее чем целую конфу написать с нуля )

    Reply
  39. PovAndy

    (39) Спасибо за инфу.

    Буду пробовать

    Reply
  40. root7

    Скачал конфигурацию. Сразу бросились в глаза орфографические ошибки.

    «Рассчеты» вместо «Расчеты», «Договора» вместо «Договоры»

    Понимаю, что это мелочи. Написал автору на почту с вежливой просьбой исправить ошибки, если его не затруднит. На что получил ответ: «Удалите и не используйте»

    Не рекомендую использовать эту поделку и иметь дело с этим «разработчиком».

    Reply
  41. hackoff

    (41)Все описано верно. Обычно я помогаю разработчикам (если посмотреть историю писем, есть ветки по 90 писем). Но этому персонажу с такой просьбой нет желания помогать. Предлагаю Вам воспользоваться 1С-Рарус:Микрофинансовая организация, по смешной цене 25 000 рублей.

    Reply
  42. root7

    (42)Я скачал вашу поделку за 1500 рублей, купив подписку. В связи с чем, хотел бы получить в ответ на свою просьбу хотя бы вежливый аргументированный отказ, а не хамскую отписку.

    Reply
  43. hackoff

    (43) Я еще пару ласковых хотел дописать, но не стал. Платили вы не мне, а инфостату. Могли бы разместить свои поделки, народ бы их качал, вы бы слушали «сказочных» про «косяки», но получили бы монетки, которые можно обменять на разработки других авторов. Делов то.

    Reply
  44. root7

    (44)Вместо того, чтобы жаловаться, лучше бы ошибки исправили. Может тогда и денег не стыдно было бы попросить. А пока и 10 стартмани для хама и непрофессионала слишком много.

    Reply
  45. user920439

    Здравствуйте!

    в программе код открытый?

    Reply
  46. hackoff

    (46) Да, код открыт, можете дорабатывать!

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *