Новый функционал: Мои действия




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

53 Comments

  1. alexk-is

    Может стоит убрать из списка на голосование собственные материалы автора?

    Reply ↓
  2. larisab

    «Если Вы не комментировали, то будет отображена пиктограмма-ссылка для комментирования.»

    Комментарием считается (0)? Комментировала, но без ссылки на 0, а показывает что не…

    Reply ↓
  3. Трактор

    Прикольно. Не так много я и скачал, оказывается. 88 штук. Неголосовал примерно за половину — за 42 штуки.

    Reply ↓
  4. Арчибальд

    (3) 400 скачиваний 😮

    Reply ↓
  5. Душелов

    244 скачивания, 312 рекомендаций (+ и -) и 6661 комментариев 😀

    Reply ↓
  6. larisab

    480 скачиваний, 338 оценок, 2835 комментов… ух… ну и болтуууша…

    Reply ↓
  7. Душелов

    (6) Фи, я — круче! 😉

    Оценил больше, чем скачал… Ну а болтушка тут — я! 😉

    Reply ↓
  8. larisab

    Ты старше 😉

    Reply ↓
  9. Душелов

    (8) Смотря с какого времени отсчет пошел! 🙂

    Reply ↓
  10. larisab

    Ты старше 😉

    На год!

    Reply ↓
  11. support

    (1) ок, пропустили этот момент.

    (2) пример можно?

    Reply ↓
  12. larisab

    (11) Вот здесь:

    Reply ↓
  13. Tatitutu

    кстати картинка 1 супер — сразу в глаза бросилось

    МОИ СКАЧИВАНИЯ — и внизу синим ОТПРАВКА SMS — думал ….(но понял)

    енто все хорошо….очень хорошо

    но теперь нужно мааааааааааааааленький рычажок

    для чего — для того , что в эту закладку заглянет 1 из 10 000

    (другие или не знают или времени нет или не хотят)

    вот тут то и возможны варианты: я их уже 100 раз предлагал

    (скачал 10 обработок — нет коммента нет + или — идем на эту вкладку и вспомнинаем , что пригодилось а что нет) вот тогда дело будет !

    или приставку к нику ЖАДИНА-ГОВЯДИНА, КАЧОК НЕБЛАГОДАРНЫЙ... 😀 ,ЩЕДРАЯ ДУША…и.т.д.

    Reply ↓
  14. dobraleks

    а как быть если я прокомментировал, а у меня все равно стоит значке «что нужно прокомментировать»???

    Reply ↓
  15. СергейКа

    Заметил эти изменения еще вчера 🙂

    Но так же как в (1) и (2).

    Специально проверял по скачанным публикациям — в некоторых комментировал ранее, но не отразилось. По-моему, попадались даже плюсованные, но с отметкой что ничего не ставил.

    Сейчас ссылки не укажу, но если потребуется — покопаюсь.

    Reply ↓
  16. vip

    Почему постоянно звучит «кач» (забыл, как часть речи называется).

    Сразу возникают ассоциации с машиной с таким толстым гофрированным шлангом (может молодежь не помнит такие).

    Да простит меня ув. Суппорт, для меня образцом действительно профессионального общения до сих является 1cpp.ru.

    «Кача» практически нет сейчас, а вот пообщаться действительно интересно.

    А здесь перенумератор до сих пор называется Программой, а мутные тягучие рассужденя о сферическом коне в ваккуме — Статьей.

    Reply ↓
  17. larisab

    (16)

    «кач» (забыл, как часть речи называется)

    Корень называется )))))

    Reply ↓
  18. AVARY

    Может стоит сделать информацию о действиях общедоступной?

    Reply ↓
  19. support

    (18) Зачем? Кому интересно, что качал другой человек?

    Reply ↓
  20. larisab

    (19) Интересно не что качал, а что говорил!

    Reply ↓
  21. MaxDavid

    Только у меня некоторые мои комменты по два-три раза дублируются? Причем в одном дубле ссылка на форум, в другом — в public. И если во втором случае я перехожу по ссылке без проблем, то на форум меня не пускает — требует авторизации… снова и снова… 🙁

    Reply ↓
  22. CheBurator

    (16) когда конфига-репозитарий обновляться и поддерживаться в акутальном состоянии будет? 😉

    Reply ↓
  23. RayCon

    (21) +1

    Идёт дубляж. 🙁

    Reply ↓
  24. vip

    (22) Никогда.

    Давай еще раз попробую объяснить.

    Здесь учат качать, а там учат думать.

    Ты продолжаешь путать цели того портала и этого.

    Очень разные цели получились.

    Reply ↓
  25. marsohod

    (0)(21)(23) Подтверждаю. У меня дублирование началось с шестой страницы моих комментариев (по 20 на стр.).

    Reply ↓
  26. CheBurator

    (24) ok, тогда попробуй объяснить — так как я, возможно, не понимаю: каков смысл в добывании глины, обжиге кирпича, выкладывании стенок с мастерком в руке, потом штукатурении — кроме как морального удовлетворения от осознания того, что я сам это все умею делать? — если лучше всего я умею штукатурить стены? как хобби — да, я с удовольствием буду мять глину, лепить кирпичи — но хобби не прокормишься… а сделать шедевр в единственном экземпляре и повесить его в музей — чтобы прошли мимо, повосхищались — как сделано красиво, да!… — как-то не штырит получить признание спустя 20 лет после смерти.. 😉

    Reply ↓
  27. CheBurator

    (24) может кто-то и качает тут тоннами, но явно не я… ибо кирпичи тут все одинаковые… а шедевров — единицы… вот и качнул для своего собственного «музея» несколько штук всего….

    кстати.. надо будет «ревизию» провести — что я тут полезного скачал? и что полезного взял там… интересненько должно получиться…

    Reply ↓
  28. СергейКа
    а сделать шедевр в единственном экземпляре и повесить его в музей — чтобы прошли мимо, повосхищались — как сделано красиво, да!… — как-то не штырит получить признание спустя 20 лет после смерти..

    «Что бы попасть в криминальную хронику -надо убить кого-нибудь на прошлой неделе. Что бы попасть в новости искусства — нужно умудриться сделать шедевр в прошлом столетии» ©Прокопович Александр, Спецназ Лысой горы, подготовлен к печать в 2010 году 🙂

    Reply ↓
  29. marsohod

    +(25) а закончилось на восьмой…

    Во-о-о-т…

    А в целом — спасибо 🙂

    и за снегурку тоже

    Reply ↓
  30. vip

    (26) Попробую объяснить.

    Сравнение ты привел не совсем верное.

    Там — скорее архитекторы, а здесь в основном бригады каменщиков.

    А в большинстве даже строителей унылых панельных девятиэтажек.

    И те, и другие нужны.

    Но мне почему-то больше нравится быть архитектором.

    А насчет прокормиться…

    Поверь, не голодаю. Хотя к типовым не прикасался и не буду.

    Если продолжить аналогию, то ты крепкий, грамотный бригадир.

    Или скорее мастер.

    Но не архитектор.

    Reply ↓
  31. artbear

    (0) Вот только что посмотрел свои скачивания.

    Выбираю только «комментировал» и получаю 0.

    Это явная ошибка сайта 🙁

    Жду исправления.

    Reply ↓
  32. Ish_2

    (30) Мне ближе и понятней (26).

    К архитекторам отношусь сочувственно. И снисходительно.

    Ах ,ну да… Конечно , интересно.. Но среди каменщиков — веселей , уверяю тебя.

    Здесь сайт каменщиков — в своих претензиях ты всё время об этом забываешь.

    И никаким другим этот сайт быть не может.

    Смущает только одно : искусственное выталкивание с сайта архитекторов , пусть и неявное.

    Reply ↓
  33. vip

    (32) Да нет у меня никаких претензий, И назначение сайта прекрасно понимаю. О чем и сказал.

    ЗЫ. Твое «живое» общение с Шепотом даром не прошло.

    Мысли излагаешь все мутней и тягучей.

    Reply ↓
  34. Ish_2

    (33) Учту.

    Reply ↓
  35. Abadonna
    что он скачал

    Интересно, картинка к каким действиям призывает? 😉

    Reply ↓
  36. Abadonna

    (32)

    Но среди каменщиков — веселей

    Ага, ты еще скажи среди «вольных каменьщиков», а потом плавно переходим к среди…

    Reply ↓
  37. Abadonna

    (0) Доржи, а ты как-нибудь отфильтровывай, когда качаешь свои.

    Глянул в «Мои скачивания», процент не стал определять, но до фига моего же, скаченного мной же

    Reply ↓
  38. larisab

    (36) Ага, та же ассоциация… вольными каменщиками в местной интерпретации будут фрилансеры, если продожить…

    «ротшильды» тоже наметились, вроде…

    Reply ↓
  39. larisab

    Возникает вопрос, опять о рейтингах… Существует 3 вида условного рейтинга:

    1. для платных программ,

    2. для пользователей,

    3. для свободного скачивания.

    Количество плюсов обратно пропорционально этой последовательности.

    Качество чаще всего — прямо пропорционально (не во всех случаях).

    Не пора ли вводить поправочные коэффициенты?

    Reply ↓
  40. MRAK

    Доржи, респект, развиваешь портал!

    Reply ↓
  41. antonds

    (12), (14), (15), (31) ошибка поправлена, теперь корректно проверяется комментировали ли вы.

    Проверьте, пожалуйста.

    (37) Теперь фильтруется.

    Reply ↓
  42. antonds

    (21), (23), (25), (29), дубли убраны. В связи с этим могли уменьшиться количества сообщений у всех. Это правильно.

    Reply ↓
  43. sound

    доступ к файлу будет определяться в зависимости от активности пользователя

    Где-нибудь об этом поподробней уже написано? А то активность она много от чего зависит. Того и гляди щас как начнут «резать» всех только за НЕголосование и НЕкомментирование. А ведь бывают и таких публикации когда думаешь, что «вот оно», а скачиваешь и оказывается не «оно», а уже получается, что скачал, а все из-за того, что не было нормального описания или ты его не так понял. И вроде и комментировать тут нечего, и минус просто так ставить как то нехорошо (разве что за плохое описание, если оно плохое). На ум приходит только кнопка «закачать обратно» 🙂

    Reply ↓
  44. AVARY

    Рейтинг разработки «Закачали обратно» — это мысль! 😀

    Reply ↓
  45. Tatitutu

    Согласен с (43)

    — Скачала файл с интернета, а он мне не нужен, как вернуть на место (с)



    но вопрос глобальный из 89573 пользователей зарегистрированных на сайте только 1345 (1,53 %) выложили свои разработки (имеют хотя бы один + за программы)

    так вот если 98 % пользователей портала все эти рейтинги + и — глубоко по ….ну вы поняли.То зачем им ставить Вам + или писать комментарий

    им от этого ни холодно ни жарко. У них одна цель — зашел — нашел — скачал — ушел. Вот их то мы и теряем.

    Вот например , когда то было введено условие за 30+ за свои разработки можешь качать и качать без ограничений, а если пользователь не разработчик — чем он «виноват» может и им предоставить за 100+ за комментарии в разработках — такой же статус — все же какой то стимул.

    Так мысли вслух.

    Reply ↓
  46. 12345678999

    ну вот очередной рейтинг балобольности 😀

    лучше тогда уже немного по другому — хочешь скачать, пусть проголосует «+-» или еще лучше заставить после скачивания поставить 5бальную оценку для возможности скачать в следующий раз. тогда будет средняя температура по больнице 😀

    Reply ↓
  47. СергейКа

    Еще немного:

    1. В списке скачанных присутствуют разработки, которых уже нет на сайте — удалены по каким либо причинам. Нельзя ли их убрать?

    2. Есть разработки, которые ну просто не хочется как-либо отмечать или комментировать. По сути как в (43). Можно ли, например добавить какой-нибудь реквизит такой разработке и поставить фильтр что бы их потом не показывать?

    Reply ↓
  48. support

    (47) 1. Исправили.

    2. Только прокомментировать.

    Reply ↓
  49. scape

    Да, хозяев сайта похоже начала мучить мания величия. Уже не знают, что еще придумать. Зачем комментировать всякий берд и выставлять плюсы или минусы всякому бреду который в основной массе здесь вываливается, типа игрушек и проигрывателей музыки и фильмов на платформе, или за пространные рассуждения, типа как достать заказчика . Ведь плюсы ставят за что то подобное или публикации о том как исправить тривиальную ошибку в подготовке сведений в ПФР. Печалит то, что все хорошее в очередной раз превращается в «хотели ка лучше, получилось как всегда». Складывается впечатление, что просто это менталитет программистов 1С. Обязательно необходимо устраивать какие то рейтинги, получать сертификаты и т.д. Короче бог вам судья.

    Reply ↓
  50. Душелов

    (49) Согласен. Зачем все эти рейтинги, когда можно просто брать деньги за все.

    Reply ↓
  51. scape

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

    Reply ↓
  52. chev

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

    Reply ↓
  53. ignor

    Хорошо бы возможность посмотреть чужие рекомендации. Тогда могут образоваться активные авторы рекомендаций которые могут дать рекомендации по своей теме, например инструменты разработчика

    и тд. Кто-то хорошо разбирается в ЗУПе и будет освещать интересные материаалы по ЗУПу. И тому подобное.

    Reply ↓

Leave a Comment

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