Это совершенно гениальная переписка двух менеджеров, которым не выплатили годовой бонус




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

25 Comments

  1. Душелов

    Как говорится — «возлежамши под лавкою» 🙂

    Reply
  2. svsrus

    не туда плюс зафигачил ) Хуже не будет)

    Reply
  3. t1909

    В тему!

    Reply
  4. venger

    (0) Офисная флора и фауна довольно развита в общеобразовательном плане, оказывается;-) Но они тоже люди и есть хотят;-)

    Reply
  5. Altair777

    (4) еще как хотят 🙂

    Reply
  6. luns

    В свое время мне стихи программерские понравились (читать с выражением!):

    Маяковский

    2 46 38 1

    116 14 20 !!

    15 14 21

    14 0 17!!

    Есенин

    14 126 14

    132 17 43…

    16 42 511

    704 83

    170! 16 39

    514 700 142

    612 349

    17 114 02

    Пушкин

    17 30 48

    140 10 01

    126 138

    140 3 501

    Веселые:

    2 15 42

    42 15

    37 08 5

    20 20 20!

    7 14 100

    02 00 13

    37 08 5

    20 20 20!

    Грустные:

    511 16

    5 20 337

    712 19

    2000047

    Reply
  7. dimm73

    (6) Это боянище 3-4 летней давности

    Reply
  8. Altair777

    (7) Не факт, что все это знают

    Или помнят. А, тем более, наизусть 🙂

    Reply
  9. support
    Reply
  10. GROOVY

    только что после прочтения кликая на плюс прочитал «добавить бонус» 🙂

    Reply
  11. Altair777

    (10) так добавь его 😉

    Василий, как тебе удобнее? Виза, веб-мани? 🙂

    Reply
  12. Душелов

    (11) У меня реквизиты указаны в профиле :)))))

    Reply
  13. Душелов

    (11) P.S. Ты бы затестил сворачивание 1С в трей для клюшек 😉

    Reply
  14. Altair777

    (13) Затестю, конечно! Это не вызывает озабоченности 🙂

    Как только появится версия для 7-ки.

    Reply
  15. Душелов

    (14) Как бы комменты читать надо 😉 Давно уже все есть.

    Reply
  16. Altair777

    (15) давно? 23 секунды? 🙂

    —————————

    13. Душелов 21.01.2009 01:01:27

    Это совершенно гениальная переписка двух менеджеров, которым не выплатили годовой бонус

    (11) P.S. Ты бы затестил сворачивание 1С в трей для клюшек 😉

    —————————

    5. Душелов 21.01.2009 01:01:04

    [Tray1C] Сворачивание 1С в системный трей.

    Добавил пример для 7.7

    Reply
  17. Душелов

    Ну там оконо минуты 🙂

    Reply
  18. Душелов

    *около..

    Ладно, сил уже нет.. Пойду спать 🙂

    Reply
  19. crisalis_md

    😉

    Reply
  20. wguki@yandex.ru

    ЗачетищЕЕЕ!!!

    Reply
  21. alabama1976

    +

    Reply
  22. tat

    ой, здорово, ребята! спасибки!

    Reply
  23. ribrag

    Отрывок из поэмы «Серый волк и 7 козлят»

    По мотивам анекдота:

    Семь козлят бьют серого волка.

    — За что бьёте, волкИ!!!…

    — Молчи, Козёл !!!

    =============================

    Глава 5. ..

    — Мы волки очень добродушны

    И добродущны и не злы

    Поверьте, — серый отчечает

    Поверьте, славные колы

    -Кого ты здесь назвал козлами

    Ты будешь кровью шас блевать

    Гурьбою ригулист в атаку

    И волка принялись топтать

    -За что же бьёте вы, злодеи..

    За что же бьёте вы, волки..

    Козлы зловеще издевались,

    Рогы так остры и колки

    В отчет на просьбы о пощаде

    Ему сказали: — Трепещи!!!

    Сейчас тебя козла замочим,

    У нас пощады не ищи

    Reply
  24. Motor24

    Про Красную шапочку повеселили 🙂

    Reply
  25. Styvi

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

    Reply

Leave a Comment

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