Подъем Наверх! вер.1.62




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

50 Comments

  1. tsd

    Веселенько.

    только при переходе на закладку Таблица рекордов ошибку кажет. Ну нету у меня на диске с: папки temp, зато есть КаталогВременныхФайлов() 😉

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

    Reply
  2. break

    автор, подскажи а как добавить флеш объект с данными на форму?, я добавляю, пишу путь в Movie, все работает только если по указанному пути находится флеш файл

    Reply
  3. aximo

    (2) галку на embeded — что-то типа такого…

    Reply
  4. CrazyBear

    Прикольно))

    Reply
  5. O-Planet

    Вот как завидую тем, кто находит время на подобное! Только у автора явно не хватает опыта с пиаром. «Подъем наверх» — это не название для такого. Скажем, если периодически случайным образом сделать появление некоей принцессы, дарящей аватару своим появлением сердечки, когда он к ней приближается и замирает (что должно быть делать сложно из-за агрессий со стороны супостатов), то игра сразу приобретет очень не плохой оттенок, даже цель, и можно уже играть многообещающими названиями. Например, «Рыцарь и принцесса», «Рыцарь башни», «Принцесса эльфов»… 😉

    Reply
  6. aximo

    (5) нет, особо времени нет. просто решил использовать свою разработку 4-х летней давности в рамках платформы — было интересно посмотреть на сколько это вообще возможно. естественно о пиаре никаком и в мыслях не было…

    Reply
  7. ROM_1C

    Что-то так и не понял как начать игру!!!

    Reply
  8. Maximus00

    «мечом» через о пишется

    Reply
  9. peypivo

    А какая платформа нужна? У меня пустую форму открывает.

    Reply
  10. aximo

    (9) флеш плеера в системе нету… он должен быть установлен… любая 8.1 или 8.2 должна работать

    Reply
  11. v.l.

    Всегда было интересно сваять что-то подобное — прилепить флешку на форму в 1С. Вон, и аськину флешку с веб-клиента присобачили в 1С, и игрушку забахали. Это плюс. Ну и немного критики в бочку мёда:

    В предложении «Ваша лояльность, вдохновит меня на нечто более совершенное :)» запятая лишняя.

    Reply
  12. vovche

    зачетная игрулина, всегда восхищался игрушками под 1с, когда нить на пенсии тоже такую напишу

    Reply
  13. DrAku1a

    Сгодится прежде всего как пример интеграции ActiveX, и пример работы с Flash в 1С.

    Reply
  14. red80

    За это точно зарплату платят?

    Reply
  15. Tatitutu

    Не качал и не смотрел пока, но за игры всегда от меня +

    Reply
  16. westinka

    очень оригинальный способ показать возможности совместного использования технологий — ActiveX-Flash, 1С и php. Хотя конечно у 1с хватает кучи своих разработок, и для веба, да и про игры забывать не будем, но автору респект за саму идею 🙂

    Reply
  17. _LEV_

    Зачетная игрулина, осталось только баланс паправить чтоб качать

    Reply
  18. v.l.

    (12) Неправильно.

    Игрушка написана на Flash.

    В 1С просто обёртка для флэша.

    Reply
  19. aximo

    (18) не совсем так, дело в том что есть определенная таблица рекордов именно в 1с, которая считывает данные оставленные флешем…

    Reply
  20. Oleg_nsk

    Супер штука! Спасибо!

    Reply
  21. Moll

    Мегаигруля, знаю теперь, чем буду в разряжать мозги на работе x]

    только там какие-то траблы с таблицей рекордов, тегами отображает, надо будет на досуге заглянуть во внутрь..

    плюсег за реализацию x]

    Reply
  22. dtitov

    Спасибо! С удовольствием плюсую!!!

    Reply
  23. vitalya24

    Прикольно! надо в свою конфигурацию включить))) пусть пользователи развлекаются)))

    Reply
  24. margo2007

    Это то , что мне будет полезно

    Reply
  25. davydoff

    Мммм круто… Ещё не видел игр на 1С))) Когда то пробывал написать программу в шахматы на 1С. Что то ничего серйозного не получилось)))

    Reply
  26. SanyaGrek

    Вот это вещь!

    Буду пользоваться время от времени. Когда разгребу толпы заказов.

    Автору огромное спасибо за шикарного убийцу времени!

    Reply
  27. FatHer1C

    А моя демо-разработка полностью на 1С http://infostart.ru/public/116204/, но силами 1С реализовано только 10 кадров в секунду.

    Reply
  28. farg066

    Тоже при переходе на закладку Таблица рекордов выдает ошибку

    А так вполне нормальная игруха

    Reply
  29. RomanUzmov

    Я долго смеялся… 😀 Прикольная задумка…

    Reply
  30. pavel_pss

    Порадовала. спс

    Reply
  31. vbvirus

    Прикольно молодцы, продолжайте в том же духе!!!!

    Reply
  32. serega3333

    супер игрушечка

    Reply
  33. MatveyIgor

    прикольненько, супер!

    Reply
  34. WKBAPKA

    шото на ноуте под 7-ой виндой не работает, не запускается…

    Reply
  35. cerg110

    прикольно, когда надо отдохнуть самое то).

    Reply
  36. Para_1987

    Ага, на работе в перерыве поиграть можно)))

    Reply
  37. aximo

    Вот сегодня разместил из этой же серии:

    http://infostart.ru/public/137316/

    Reply
  38. LND_gaz69

    (5) O-Planet, автор же сказал что все зависит от лояльности =)

    дизайн к полноценным играм тоже разрабатывают не программисты, если не ошибаюсь

    Reply
  39. LND_gaz69

    Автор молодец, прикольно, улыбнуло 🙂

    Reply
  40. wunderland

    Просто отвал башки!!! а то мы все бухгалтерия, бухгалтерия …

    Reply
  41. Navern

    замечательная игруха,как их вообще на 1с клепают

    Reply
  42. v.a.ryag

    ахаха))) прикольно

    Reply
  43. tazmag

    прикольная игруха

    Reply
  44. firuzji

    Прикольно!

    Reply
  45. Anna_G

    Прикольная игра. Спасибо.

    Reply
  46. eugen91

    Установи так потом продажи на спад пойдут!)

    Reply
  47. igorsvet2011

    А прикольно,

    если мониторят пользователей , в плане какие программы работают,

    все чики-чики , типа в 1С я работаю, а сам прыг-прыг )))

    Reply
  48. Bukaska

    (53) igorsvet2011, Ага.. ручками прыг-прыг, ножками дрыг-дрыг!)))

    Reply
  49. kudzia

    Здравствуйте. Подскажите пожалуйста, как можно сохранить swf размещенный на форме обработки в файл ?

    (потерял исходный файл swf, остался только тот который внутри обработки)

    Reply
  50. aximo

    (55) увы, не помню))) там галочка с свойствах есть embeded есть… которая «вшивает» swf в обработку

    Reply

Leave a Comment

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