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




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2026-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 не будет опубликован. Обязательные поля помечены *