Про франчайзи ИН-АГРО Украина




Принцип обмена данными из 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='\

18 Comments

  1. CheBurator

    Успехов в продажах!

    пусть они захлебнутся слюнями!

    Reply
  2. Vitek

    Присоединюсь к (1).

    З.Ы. Козлов везде хватает.

    Reply
  3. Vitek

    А, кстати, давно уже убедился, что надпись 1с-совместимо еще совсем ничего не говорит. Может оказаться как нормальным продуктом, так и полной фигней. Все зависит от разработчика.

    Reply
  4. coder1cv8

    Хех… ) Франчи! Сказано же «позор 1С», разве можно было ожидать чего-то другого?… )

    Reply
  5. СоболиныйГлаз

    Типичный пример как человек «… не зная броду …» купил «продукт». Мало-ли что на заборе написано, хоть и с «1С-Совместимо».

    Не то совсем опыта нет, не то доверчивый слишком. И ладн, если для одного клиента, так сразу на двух 🙂 Без обид, т.к. ничего личного.

    Reply
  6. СоболиныйГлаз

    Ждем-с грустную историю, как теперь автор выпутываться будет. А франчам нефиг на слово верить по той простой причине, что большинство из них попросту безответственные, лишь бы деньги хапнуть. Впрочем и «мама» от них недалеко ушла.

    Reply
  7. Свой

    автор, как же ты купил, без демонстрации или без демоверсии ?

    Reply
  8. IAndrew

    Товарищь, тебе явно не повезло.

    Возможно это ошибка менеджера…

    Стандартная комплектность поставки:

    — коробка желтая 1С:Совместимо!

    — компакт-диск

    — документация в печ.виде

    — рег.анкета

    Если у тебя есть вопросы к фирме, то их нужно решать не с рядовым сотрудником, а с руководством фирмы.

    Звони Андрею Владимировичу — заместителю директора.

    Это будет по-взрослому… А если тебе не повезло с первого раза — попробуй со второго.

    Данной программой пользуются порядка 150 организаций по всей Украине… и это только зарегистрированные пользователи…

    Надеюсь, что и ты по достоинству оценишь данный продукт. В обновлении много интересного, в т.ч. в работе Табеля.

    А распространять чужой продукт самостоятельно может каждый… вот ты научись работать с разработчиком…

    Поддержка продукта в актуальном состоянии — дело непростое. Ты лучше подскажи, помоги… а не грязь лей…

    Совешненно верно.

    Кто связан с управлением фирмой или большими проектами — тот поймет.

    На самом деле: вышел из отпуска начальник отдела продаж (Андрей Васильевич), проникся проблемой, вынес выговор менеджеру, оформлявшему сделку, позвонил Скрипту, извинился.

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

    Вопрос решен, я так думаю… Постараемся больше наших клиентов не огорчать

    Reply
  9. IAndrew

    А продукт и в самом деле классный!

    Кто писал свои «зарплаты» — тот оценит по достоинству.

    Структура — модульная. Внедряется, практически, во все типовые.

    Конфа живет и развивается. В очередном обновлении много вкусного.

    кому интересно — заходи ,качай.

    http://www.inagro.com.ua/index.php?id=335

    А ляпы в работе бывают у всех. Оличие в том, как из них выходить…

    Мы к критике относимся с уважением, но и от похвалы не отказываемся.

    Остаемся открытыми к сотрудничеству.

    Всем спасибо.

    Reply
  10. IAndrew

    к стати! продукт не защищен ключами!

    абонплата в месяц — 90 грн.

    Reply
  11. rasswet

    в итоге сам всё сделал. молодец!

    Reply
  12. gavril

    iAndrew и тут соврали, говорим о 90 грн/месяц на сайте же написано совсем другая сумма:

    «По истечению года мы осуществляем сервисное обслуживание программ на условиях абонплаты – от 180 грн/месяц.»

    Reply
  13. Lucky28

    пиар???

    Reply
  14. IAndrew

    >iAndrew и тут соврали, говорим о 90 грн/месяц на сайте же написано совсем другая сумма:

    Абонплата для конечного покупателя — 180 гр., даже если клиент купил у нашего дилера

    А дилер платит нам 90 грн./мес. с каждого клиента.

    Принцип такой же, как в классических ИТС-ах.

    Reply
  15. arjuna

    Я бы посоветывал автору сразу писать в контрольную группу 1с, и ни каких переговоров с ИНАГРО. На каждую Ж.. знаете что есть.

    Reply
  16. arjuna

    А iAndrew лучше бы молчал в тряпочку, тут не юзеры тусуются.

    Reply
  17. tango

    (6) СоболиныйГлаз, да вроде как выпутался. однако, откель така доверчивость у 1снега?

    Reply
  18. tango

    (9) iAndrew,

    вот ты научись работать с разработчиком

    эта пять

    **

    в (16) озвучены правильные принципы такой работы

    Reply

Leave a Comment

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