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




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2026-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 не будет опубликован. Обязательные поля помечены *