Оригинальное поздравление с 8 марта…




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2018-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='\

79 Comments

  1. Tatitutu

    С праздником вас ,Женщины и простите меня мужики !

    Reply
  2. samadurov

    Что, играешь с атрибутом «Только чтение»?

    Reply
  3. MaxDavid

    Весьма.

    PS. Плагин к FARу ErtEditor спас гиганта мысли 🙂

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

    … интриган … вот …

    Reply
  5. Styvi

    И-эх-х-х… 😀

    А как хотелось на цветочки посмотреть…

    🙂

    Reply
  6. marsohod

    А хде цветочки? 😮

    Reply
  7. CheBurator

    Запустил, получил: «что то…не получилось, но все равно всех с праздником» — это что за издевательства..???

    Reply
  8. CheBurator

    ага.. любит ДваЧаяВДвестиДвадцатьВторой поизвращаться с экселем — однако же облом вышел.. нету у меня дома офиса на компе мелкомягкого.. опенофис… пойду кстати свежую релизу 3.2 скачаю…

    Reply
  9. Abadonna

    (0) За привет спасибо (ну, ты понял 😉 ), но чего-то ты не доделал.

    Похоже, не срабатывает VBS.Run(«Main»);

    Reply
  10. Abadonna
    Если у тебя не получится открыть обработку в конфигураторе…

    Вот этот откроется, куда ему с подводной лодки 😀

    P.S. «Анти-татитушные» таблетки:

    http://www.infostart.ru/public/15043/

    http://www.infostart.ru/public/14905/

    Reply
  11. markers

    Приколюха!!!!! Теперь понятно за что извиняешься!!

    Вообщем кто не смог запустить, поясняю:

    1) Проверьте имя папки профиля вашего у меня например называется markers.***-*** а сам логин markers из-за чего 1С не смогла распаковать файлик

    2) Так ничего не заметно, но после распаковки файла запустите Excel и вы увидете результат :))

    Забавно! Спасибо за развлекуху 🙂

    Reply
  12. Abadonna

    (12) PERSONAL.XLS -то у меня нормал распаковался, только при старте Excel — мой Excel этот макрос вертел как хотел 😉 Не запускает

    Reply
  13. Abadonna

    +(13) Поместил в ПРАВИЛЬНУЮ папку теперь при страте ёкселя имеем то, что на картинке.

    P.S. Юра, «C:Documents and Settings»+Скрипт.UserName не всегда прокатывает. Есть у меня такая папка, НО

    правильная папка:

    C:D

    Reply
  14. Abadonna

    В общем, за задумку ПЛЮС, за реализацию МИНУС, в сухом остатке НОЛЬ 😉

    Reply
  15. Tatitutu

    (7)

    Запустил, получил: «что то…не получилось, но все равно всех с праздником» — это что за издевательства..???

    я же в шапке написал —и простите меня мужики и в сообщении написано «что то…не получилось»

    ну нет у тебя EXCEL , значит проехали — не за горами 1 апреля 😀

    (12)

    но после распаковки файла запустите Excel и вы увидете результат

    а еще …еще….ты 8 марта MS Word попробуй запустить, EXCEL — отвлекающая ширма.

    (15) Спасибо, уважаемый за столь полные комментарии (ты же знаешь ,я ждал их)

    Извините, ну не хватило у меня времени вчера «огранить алмаз» до нужных высот.

    Милые Женщины с Наступающим Праздником , с Наступлением Весны — Любите и будте Любимы — Всегда!

    Reply
  16. nikitan

    (16) Windows 7 + Office 2007

    и ничего не работает 🙂

    Reply
  17. screw

    Фуфло какое то!

    Reply
  18. Tatitutu

    (18)

    Не все то золото , что блестит (с)

    Сказка — ложь, да в ней намек (с) 🙂

    Фуфло какое то!

    ты это о празднике ?

    понимаешь, раньше люди свято верили, что земля плоская и они с этим жили.

    Reply
  19. Abadonna

    (19) Решишь вопрос с ПРАВИЛЬНОЙ папкой текущего юзверя — плюс поставлю 😉

    Reply
  20. markers

    (20) а взять обработку которую здесь выкладывали без длинных строк и подпраить код религия не позволяет? Ссорь если грубо!

    Reply
  21. Tatitutu

    (20) Да разве я за плюсами ? Я же ради хорошего настроения — (то что я хотел, я уже получил — обработку опубликовал ,кстати она в LiFe раздел Юмор — в 22:10 сейчас 10:10 скачек 420 )

    «От улыбки в небе радуга зажгется и тогда наверняка, вдруг запляшут облака» (с)

    решение есть ПРАВИЛЬНОЕ — для ВСЕХ юзверей компьютера, но вот только кому оно нужно ?

    есть вообще альтернативное решение, но это граната , зачем ее отдавать.

    Reply
  22. Abadonna

    (21) 😀 Чувак, это Я и выкладывал. Ты хоть смотри кому и про что пишешь

    Reply
  23. Abadonna

    +(23) Если подправлять каждый раз под себя — нах оно мне надо? Я и сам могу написать 😀

    Reply
  24. Ёпрст

    Ну.. ничего нового не увидел..

    Reply
  25. Ёпрст

    + естественно, ничего не заработало..

    пришлось смотреть код модуля формы..

    Там тоже ничего нового.

    + ошибка как в (14)

    Reply
  26. Tatitutu

    (24) Найти папку «Documents and Settings» выбрать все папки….

    если читал

    «Троянский конь» или «скрытые» возможности таблиц 1С

    то есть интересная особенность…при инициализации объекта, появляется окно «…ну про макросы»

    мысль потекла в следующем направлении….»скрыть» от компьютера что у него есть EXCEL

    переименовал …запустил…появился «установщик офисса» — на меня так посмотрел….отменил, переименовал запускной файл….хотел открыть EXCEL а он не открыватся….повозился, повозился — ни в какую. Удалил офис, установил заново, а Еxcel не открывается, перезагрузил, переустановил, перезагрузил — :-))) не а….

    Вот это было да «фуфло», а так детские шалости )))

    Reply
  27. Abadonna

    (25)

    Ну.. ничего нового не увидел..

    Ну еще бы ТЫ увидел 😀

    Скажи еще, что АЛьФ, к примеру, этого знает 😉

    … скромно… и я, например 😀

    Reply
  28. Ёпрст

    + неправильное определение текущего каталога юзверя..

    Reply
  29. Abadonna

    (28) Побьют тебя когда-нибудь 😀

    Reply
  30. Tatitutu

    (30) 😳

    Reply
  31. Tatitutu

    ну вот и за пол тысячу перепрыгнули 😀

    Reply
  32. Abadonna

    (32) Бери с провайдеров процент за трафик 😀

    Reply
  33. CheBurator

    (16) и у меня на компе и ворда нет!

    Reply
  34. Tatitutu

    (35) я знаю что у тебя есть…на компе. И думаю лучше пусть и будет

    Reply
  35. Natalia

    «Неправильный формат файла….»

    «Если делаете, то доделывате» — это про все

    Reply
  36. Tatitutu

    (36)

    «Неправильный формат файла….»

    на каком этапе или где ?

    Reply
  37. Natalia

    При открытии Екселя после запуска этой фигни

    Reply
  38. Abadonna

    (37) это как раз как на картинке (14)

    Reply
  39. Natalia

    Personal.xls нашла и убила, кстати.

    Но никаких особо позитивно неземных эмоций при этом не испытала

    Reply
  40. Abadonna

    (40) Наталья, весь персонал поубивала? Жуть 😀

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

    (40) Неужели не в кайф? 😮

    Reply
  42. Natalia

    😀

    Автору повезло, что он не персонал ))

    Reply
  43. Tatitutu

    Да уж….

    Обработку.ert убрал от греха подальше. («…а меня не поняли…)))»

    Смысл обработки был — внутри нее лежал файл (теперь его можно так скачать PERSONAL.XLS и открыть у себя на компьютере , но уже с Вашего ведома) обработка его в фоновом режиме сохраняла в определенном месте. и при запуске EXCEL — появляются красивые цветы, правда и не только они.

    С праздником !!! Ура ! Ура! Ура !

    Reply
  44. Tatitutu

    (38)

    скачало 600 !!! человек и видно только ОДНА Вы ее запустили из Предприятия и заметили (по крайней мере написали , что «Неверный формат файла» умничка Вы моя. как я Вас ждал этого комментария.

    Оно свершилось.

    Reply
  45. Abadonna

    (44) Файл лежал в НУЖНОМ месте, всё это прекрасно отработало (кроме того, что НУЖНОЕ место неправильно определило).

    НО: опять же см. рис. в (14)

    Reply
  46. Abadonna

    Во! Этот PERSONAL.XLS нормальный, а тот, который создавался обработкой, был кривой, его и плагин открыть не мог, и ёксель на него ругался

    Reply
  47. Natalia

    (45) по классике жанра Вам нужно танцевать и петь «обманули дурака на четыре кулака, жизнь прекрасна»… Не я одна — см (14). Предварительно текст просмотрела кстати.

    Reply
  48. Abadonna

    (48)

    Не я одна — см (14).

    Наташ, я не в счет 😉

    А ты — молодец :{}

    Reply
  49. Tatitutu

    (47) так и я об этом ))) в последний момент рука дрогнула…

    Reply
  50. Natalia

    (50) я тоже не очень в счет.

    Но если автора порадует, что в счет — пусть будет так.

    В качестве подарка к празднику ))

    Reply
  51. Abadonna

    (51)Я просто надеялся, что Юрий нормальную (пусть и хитрую) выложит, а он

    в последний момент рука дрогнула…

    Граждане, тестируйте свои обработки (хоть разок), прежде чем на ИС кидать ❗ 😀

    Reply
  52. chmv

    Не поняла ничерта

    Пишет что-то не так

    Reply
  53. Tatitutu

    (53)

    8martaFull.ert — «полная» версия балета

    Reply
  54. Tatitutu

    на 4 миниатюре….(без комментариев)

    Reply
  55. Abadonna

    (53)

    «полная» версия балета

    Фигушки там full. Каталог текущего юзверя все равно неправильно определяет.

    У кого-то прокатит, у кого-то нет

    Reply
  56. vip

    (52)

    Граждане, тестируйте свои обработки (хоть разок), прежде чем на ИС кидать

    +1000000

    Reply
  57. Tatitutu

    (56) ну ,я же тебе написал, низя… давать код в открытом виде такой для всех. Потом сам будешь каждой обработки шугаться :-)) если хочешь специально для тебя SUPERFULL пришлю

    Reply
  58. Natalia

    (57) «каждой обработки шугаться…»

    от автора — уже достаточно )))

    интересно, это только мне неадекватным кажется?

    Reply
  59. Ёпрст

    Неправильно определяет каталог..

    Reply
  60. Tatitutu

    (59) Чем же я тебе неадекватным показался ?

    в первом примере хотел с юмором (раздел LIFE — Другое — Юмор)

    показать три вещи

    — обработка с флагом «Только чтение» в конфигураторе не откроется

    — если в модуль добавить строку длиннее 500 знаком, она тоже не откроется в конфигураторе

    — сохранить внедренный объект с другим выполняемым кодом

    ….весна.

    Reply
  61. Tatitutu

    (62) оригинально — как программист программистов

    Да почти вредительство. Бспричинное, оттого неадекватное.

    …ну тогда хороший добрый совет — сделай резервную копию того что тебе дорого и 09.03. постарайся не включать компьютер. Хорошо ?

    Reply
  62. Natalia

    (63) ООООООчень смешно.

    Reply
  63. Abadonna

    Двоечник, вот как ПРАВИЛЬНЫЙ путь можно определить (потом чуток доработать)

    WshShell=CreateObject(«WScript.Shell»);

    Путь=WshShell.SpecialFolders(«MyDocuments»);

    (бе-бе-бе 😉

    P.S. «Чуток доработать» примерно так:

    Стр=СтрЗаменить(Путь,»»,РазделительСтрок);
    Путь=СтрПолучитьСтроку(Стр,1)+»»+СтрПолучитьСтроку(Стр,2)+»»+СтрПолучитьСтроку(Стр,3)+»»;
    
    Reply
  64. Tatitutu

    (65) а можно ответ на троечку ?

    в ветке

    HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList

    перебрать папки и выдренуть

    «ProfileImagePath»

    чтобы получить типа

    %SystemDrive%Documents and Settings atitutu

    Reply
  65. Abadonna

    (66) Зачем с реестра дергать, если есть метод готовый, скриптовый, кои ты один фиг употребляешь

    Reply
  66. Tatitutu

    (67) так на троечку же )))

    Reply
  67. Abadonna

    Вот тут СТОПУДОВО РАБОЧИЙ

    Reply
  68. larisab

    (0) :{} :{} :{} :{} :{}

    Reply
  69. Tatitutu

    Ура ! Установлен еще один новый рекорд — ровно за 1 сутки 744 скачиваний

    Спасибо всем кто принимал непосредственное участие.

    ВЕСНА наступает, с Наступающим Праздником Дорогие Любимые Самые Прекрасные Женщины!

    Мы вас Любим, Ценим. Уважаем и Бережем.

    Reply
  70. mikit

    Повеселилась спасибо)))

    Reply
  71. IgorXml

    Хороший отчет. Спасибо.

    Reply
  72. larisab
    Дорогие Любимые Самые Прекрасные Женщины!

    Мы вас Любим, Ценим. Уважаем и Бережем.

    Спасибо! Очень, очень приятно!

    Reply
  73. CheBurator

    бооольшущий -1! за необходимость ручной вычистки после 8 марта. задолбала просто реально.

    положи уже хотя бы скрипт, который убирает ЭТО…

    Reply
  74. Abadonna
    за необходимость ручной вычистки

    Не зная броду — не суйся в воду! 😀

    Reply
  75. al-e-ks

    Я тут писал, что обработка отвратительная, а работает еще хуже.. но запись, видимо скрыли… а зря, т.к. все-таки кучу неприятностей может принести. Поэтому еще раз напишу (а вось не закроют)… После этого автор подправил описание, хотя на мой взгляд стоило это сделать сразу. Тем не менее считаю неудачным этот отчет, т.к. он не корректируется и не подстраивается под нужды (по краней мере обычным набором средств).

    Reply
  76. Tatitutu

    (80) В чем проблема — отчет «Оригинальное поздравление с 8 марта» — лежит в разделе ЛАЙФ — Секция ЮМОР — поздравление ПРОГРАММИСТА ПРОГРАММИСТАМ, о какой настройке и под какие нужды идет речь ?

    Reply
  77. Abadonna
    Как удалить «подарок» РАЗ И НАВСЕГДА

    Проггеры, вообще-то, это знать должны 😉

    Reply
  78. Tatitutu

    (79) Специально для тебя 😀 😀 😀 😀 😀

    верну твои гениальные слова

    из скрытого поста (74) шедевр

    al-e-ks писал в 74 скрытом посте…

    Хрень… как еще сказать.. — говнецо.

    Описание раздачи — хаотично, не потяно.

    Выложеный файл — файл-полускрипт экселя глючный да и редактировать его не понятно как. Причем начинает так тупить, что спамит сообщения пока не вырубишь процесс эксезля через диспетчер или еще каким изощренным способом, а потом всегда при любом старте (экзеля) открывается сам этот скрипт.. — это в конец убило.

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

    Короче подчерпнуть можно только идею.. знал бы — не стал даже качать и сам написал.

    не потяно , что це таке за экзеля такая 😮

    Reply
  79. Tatitutu

    с первый днем весны. кто еще не скачал ?

    Reply

Leave a Comment

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