Семерочный ИС-каталог




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

49 Comments

  1. Шёпот теней

    … крУто …

    … блин …

    … вОт …

    Reply
  2. Арчибальд

    (1) …радСТАРатьсЯ…

    Reply
  3. Ish_2

    Потихоньку сбываются мечты Чебура-2006.

    Reply
  4. larisab

    Вот это я понимаю! Супер! Еще бы по восьмерке!

    Reply
  5. Арчибальд

    (4) Я и с семеркой-то не до конца справился. Например, кое-то должно было попасть в две рубрики. Хотел сделать Топ-500, но уже на 120 силенки закончились 🙁 Дальше на упрямстве двигался, но и оно не безгранично 😉

    Reply
  6. Доня

    Спасибо

    Reply
  7. larisab

    (5) Понимаю, поэтому не настиваю. На мой взгляд это тот самый рейтинг, за который столько копий сломано было. Если вывести в файле суммарный рейтинг автора получится не просто сумма по программам, а сумма по топовым разработкам. Короче рейтинг не количественный, а качественный. Хотя он тоже не всегда объективен, но все же. На этой системе плюсования (от пользователей и программистов вперемежку) — лучшего не достигнуть. Так что анализ топовых авторов «по Арчибальду» может сильно отличаться от «по support-у» 😉

    Reply
  8. Арчибальд

    (7) Хотелось еще некую обзорную статистику добавить. Типа количество «рейтинговых» авторов, процент «одноразовых» и т.п. Но 200 (рейтинг > 45) — это все же мало данных. Статистику видно на рейтинге > 25, но это неподъемно.

    Reply
  9. Ish_2

    (8) Я так понимаю ты предваряешь работу будущего рубрикатора на ИС.

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

    Как на духу : я вытер слезу. Взгрустнулось.

    Reply
  10. Арчибальд

    (9) Можно пробить лбом стену. Но что ты будешь делать в соседней камере?

    (с) Станислав Ежи Лец.

    Я не менее пессимистичен, чем Че. Мне ситуацию не свернуть. Просто имею толику свободного времени: обучаю своего будущего преемника по методу «швырнуть в воду и пусть барахтается».

    А слезу зря вытер. Можно было бы ее с толком пролить в каком-нибудь форуме 8)

    Reply
  11. Ish_2

    Что-то Чебур не подходит. Как думаешь ?

    Бросит шапку наземь и воскликнет «Вот оно !!!» ?

    Или постесняется , промолчит?

    Reply
  12. KEVE

    «Да воздастся Вам за Ваши деяния»

    Глубокое уважение Вам за такой кропотливый труд на благо общества!

    Удачи.

    Reply
  13. CheBurator

    Спакуха! все на контроле! засек сразу! автор — молоток!

    НО! упорядочение-выборка по ТОПУ100 — не особо интересно.. гораздо интереснее если бы автор сделал предметные подборочки: ориентированные на разрабочиков/на пользователей… я думаю (но могу ошибаться), есть достаточное колво разработок, которые имеют не сильно высокий рейтинг — но очччень интересные…

    ..

    но автор — молодец! было бы хорошо более качественно оформить… И все-таки — когда САППОРТ сделает возможность задания произвольных тегов и выборок по ним???

    .

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

    Reply
  14. Шёпот теней

    … всё кАк всегДА … делается во преки и не без помощи … один сплошной ЭнтузиаЗим …

    … критиков много …

    … поддерживающих ещё меньше …



    … а чем ближе к помошникам и совсем никого не остаются …

    … ах…ДА… ВСЕзаняты ….

    Reply
  15. Ish_2

    Некоторые товарищи недооценивают моральный фактор. Деньги , понимаешь..

    А я вот полагаю , что если мы все вместе навалимся на Арчибальда и заклюем его похвалами как следует , то он горы свернет («аналог для 8-ки»).

    Reply
  16. manan

    спасибо за труды. только вот что-то не увидел своей разработки:

    http://infostart.ru/projects/4210/

    дискриминация, однако… 🙂

    Reply
  17. Арчибальд

    (16) А там написано 8.1. ;)) А тут — семерка.

    Reply
  18. Арчибальд

    (13) Согласен насчет оч-чень интересных с невеликим рейтингом. Топ-500 было бы гораздо информативней — там почти все есть.

    Reply
  19. sergm47

    хороший список

    Reply
  20. Diversus

    Автор, ты молодец. Было бы неплохо чтобы движок сайта автоматически, что то подобное генерил. Все таки поиск по сайту это хорошо, но все равно удобнее когда у тебя весь список на локалке…

    Reply
  21. dobraleks

    (20) подерживаю вас по поводу сайта.

    добавлю со своей стороны что неплохо было б если б еще и выпускался диск Исфостар, где были бы все обработки и разработки что выложены на сайте…

    Reply
  22. zzerro

    За труд +1, мож пригодится когда-нить, хотя и уходим от 7ки

    Reply
  23. boozin

    + за труд

    Reply
  24. CheBurator

    (18) ага, и топ-Все гарантировано даст на обсер всего! 😉

    Reply
  25. Noy

    (7) Из этого файла легко вытягивается рейтин «По Арчибальду»…

    Вот топ 50:

    1 O-Planet 1818

    2 CheBurator 938

    3 dushelov 883

    4 Diamond 518

    5 GSoft 512

    6 Robert 425

    7 maljaev 402

    8 clappa 389

    9 Noy 388

    10 z_serg_v 380

    11 victuan 360

    12 33lab 302

    13 effector 289

    14 orefkov 288

    15 Abadonna 273

    16 maskin 266

    17 GROOVY 261

    18 Tatitutu 259

    19 metaeditor 258

    20 quick 255

    21 antonrost 245

    22 azernot 244

    23 ded00786 221

    24 Снусмумрик 212

    25 GreyK 208

    26 mclarry 200

    27 poppy 200

    28 vet7777 196

    29 defini 188

    30 StrangeDevice 183

    31 VRP 176

    32 Antia 175

    33 support 171

    34 shard 163

    35 СМ 154

    36 Alxd 146

    37 ivsnik 146

    38 StadoAdama 146

    39 Delon 145

    40 Кузьмич 140

    41 idw 128

    42 it.net 126

    43 wolfdmv 123

    44 r_p 120

    45 AdApter 117

    46 zhurkin_yuri 110

    47 albert 101

    48 dmitish 100

    49 zalst 100

    50 snarkelun 100

    Reply
  26. larisab

    Без 8 не надо сравнивать 🙂 Хотя первые 3 позиции — одинаковы.

    Reply
  27. Noy

    (26) Так это и есть без 8 — на основании файла из (0) — простая сводная таблица…

    Reply
  28. dmitish

    Интересно, а под восьмерку ТОР-200 наберется то?

    Reply
  29. Арчибальд

    (28) И даже топ-500 🙂

    Reply
  30. Altair777

    (0) А как создавалась таблица? Неужели вручную?!

    Неплохо бы сразу добавить автофильтры по колонкам Рейтинг и Автор.

    И функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ по колонке рейтинг.

    И вынести тип разработки в строку… опять же для автофильтра

    Но… и так очень хорошо! 🙂

    Reply
  31. WiseSnake

    (25) Я не вошел даже в 50 в рейтинге «По Арчибальду»… Сижу, рыдаю…

    Reply
  32. Арчибальд

    (31) Приношу свои извинения авторам по ЗиК и ТиС. Работы отбирались по платформк Бух 7.7. Буду исправляться…

    Reply
  33. Noy

    (31) Зато я на 9-ом месте! Гы! мне нравиться 🙂

    (32) Делай версию №2! Только не вручную! Можно обработочку написать, которая все вытянет…

    Reply
  34. Арчибальд

    (33) Напиши! Я не умею 🙁

    Reply
  35. I_G_O_R

    а кто сделает top100 самых крутых каталогов?

    Reply
  36. Monolit

    Забавно,но полезно с рейтингом больше 30.А у них и так все есть:)

    Reply
  37. Armando

    И про меня не забыл)))

    Reply
  38. СветаОнила

    Спасибо Вам за Ваш труд

    Reply
  39. Арчибальд

    (25) Можно теперь пересчитать ;))

    Reply
  40. Noy

    (39) Ну вот, теперь я 12 🙁

    вот ТОП >100 7.7 По Арчибальдовски 😉

    1 O-Planet 2090

    2 CheBurator 1342

    3 dushelov 883

    4 GSoft 864

    5 wolfsoft 630

    6 Diamond 568

    7 poppy 560

    8 clappa 500

    9 Robert 425

    10 Antia 419

    11 maljaev 402

    12 Noy 388

    13 z_serg_v 380

    14 GROOVY 366

    15 victuan 360

    16 33lab 302

    17 Armando 292

    18 effector 289

    19 orefkov 288

    20 Sprite 283

    21 soft25 276

    22 Снусмумрик 275

    23 Abadonna 273

    24 maskin 266

    25 WiseSnake 265

    26 Tatitutu 259

    27 metaeditor 258

    28 quick 255

    29 antonrost 245

    30 azernot 244

    31 fedin 237

    32 ded00786 221

    33 GreyK 208

    34 mclarry 200

    35 vet7777 196

    36 defini 188

    37 StrangeDevice 183

    38 VRP 176

    39 support 171

    40 shard 163

    41 Shaman100M 161

    42 СМ 154

    43 nitroimx 154

    44 fAngel 147

    45 Alxd 146

    46 StadoAdama 146

    47 ivsnik 146

    48 Delon 145

    49 Кузьмич 140

    50 Валерыч 139

    51 Lapitskiy 129

    52 idw 128

    53 it.net 126

    54 AlexMir 124

    55 wolfdmv 123

    56 r_p 120

    57 Страпот 119

    58 AdApter 117

    59 balance 116

    60 zhurkin_yuri 110

    61 vat-74 109

    62 m@x 103

    63 albert 101

    64 snarkelun 100

    65 zalst 100

    66 dmitish 100

    Reply
  41. Sprite

    Себя увидел! 16 место. Можно было бы и комментарий добавить к первой 100-ке в каталоге. 🙂

    Reply
  42. nikakoy

    ;))

    Reply
  43. GSoft

    а я к примеру не увидел http://www.infostart.ru/profile/8784/projects/1693/

    хотя это моя самая «топовая» конфа на 7ке)))))

    Reply
  44. Istur

    (28) я доберусь до 8. но реализовывать буду не в экселе, а в dt.

    Reply
  45. GSoft

    (0)(43) ну зачем же так и сразу выносить в заголовок, мы люди не гордые 😀

    предлагаю из (0) убрать)))

    Reply
  46. Арчибальд

    (45) Кстати, я понял, почему она не попала. Рубрика ТиС отдельно делалась…

    Пусть висит. Работе пиар, а мне извиниться не стыдно 8)

    Reply
  47. GSoft

    так она вроде в отраслевых решениях

    кстати на форуме как то была тема с автоматическим рейтингом разработок, вот к сожалению ссылки не помню

    Reply
  48. Арчибальд

    (47) Отраслевые решения — это одна рубрика, а конфигурация для тогрговли и склада — это другая. Я со своей конфушкой это проходил уже.

    Reply
  49. samadurov

    Интересная работа

    Reply

Leave a Comment

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