Внимание! Конкурс!




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

99 Comments

  1. support

    Ребята, плюсаните запись, чтобы вылезло на главную.

    Reply
  2. clappa

    Классическое: «Пишу на 1С за еду»

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

    «Лучшее лучшему. Инфостарт.»

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

    1. «Мы есть. Инфостарт.»

    2. «Инфостарт сказал ДА!»

    3. Вчера, Сегодня, Завтра — ИНФОСТАРТ!»

    4. «Инфостарт точка Россия»

    Reply
  5. PowerBoy

    «1Club»

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

    1. Творчество. Жизнь. Инфостарт.!

    2. «инфоСТАРТуйте»

    3. «Программисты всей страны ИНФОСТАРТ-уйте»

    4. «Инфостарт — образ жизни.»

    5. «инфостарт — колесо движения.»

    6. «Делай сегодня. Думай о завтра.»

    7. «Инфостарт — зрелость отношений.»

    8. «Инфостарт — зерно один эс.»

    9. «Инфостарт — время творить.»

    10. «Инфостарт. Жизнь. Работа. Творчество.»

    Reply
  7. АЛьФ

    2(Шёпот теней) Вот мне понравилась одна из твоих фраз. А как ее плюсануть? Как из всего десятка выбрать? Может все же пусть вариантов будет поменьше, но они будут отдельными постингами?

    Reply
  8. support

    На самом деле, надпись может и не содержать слово Инфостарт, точнее даже было бы лучше, чтобы ее не было, ведь уже будет логотип. Фраза должна быть просто прикольная, понятная одинэсникам или просто программистам, а может и не только программистам, просто смешная, интернетовская. Например, недавно видел надпись на футболке: «Москва, сука, гламурная». 🙂

    Reply
  9. support

    «Параноики на дежурстве»

    Reply
  10. support

    «Гений 1С»

    Reply
  11. support

    спереди «I LOVE 1C»

    сзади «I HATE 1C»

    Reply
  12. smalldeath

    «Программист — это не профессия — это степень опьянения!»;)))

    Reply
  13. v_id

    «+1»

    Reply
  14. limonas

    Ваш support в мире ОДИНЕСИя!

    Reply
  15. logarifm

    «Глюком», называет пользователь то, что не может осознать его мозк…

    Reply
  16. Lesovik

    Мы делаем мир 1Сней

    Reply
  17. mihenius

    Дятлы всех стран объединяйтесь!

    %)

    Reply
  18. mihenius

    Большая 1 рядом маленькая с

    У единицы рисуем корни, ветку, крону и одну большую ветку (ответвление от 1),

    на этой ветке дятла, кот стучит по ветке (с подписью 1с-ник)

    В корнях червячки с подписью девелоперы )

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

    Reply
  19. mihenius

    Кто сильнее клюшки или снеговик? Голосуй или проиграешь!

    С рисунками )

    Reply
  20. support

    «Хочешь автоматизацию? Спроси меня как.»

    Reply
  21. mihenius

    Вы еще не внедряете УПП-ырище? Тогда мы идем к вам, студенты-франчайзи!

    Reply
  22. logarifm

    Недолго мучилась старушка в высоковольтных проводах…

    Reply
  23. vasilykushnir

    1C — это диагноз.

    Reply
  24. vasilykushnir

    Не учи программировать в 1С — лучше помоги материально.

    Reply
  25. mihenius

    Свободу Соболю!

    или

    Свободу Sable!

    Reply
  26. mihenius

    Даешь изучение пользоваться ПОИСК-ом и FAQ-ом в школе!

    Дорогой пользователь нажимать на кнопку СоздатьТему не правильно! Правильно нажать на кнопку ПОИСК!

    Reply
  27. Unstoppable

    Невосстановимая ошибка базы данных…

    Reply
  28. mihenius

    На футболке напишем короткий ФАК по 1С ))))))))

    с самыми популярными ресурсами 😉

    на первое место INFOSTART!

    например как в http://1c.proclub.ru/modules/newbb/viewtopic.php?topic_id=286194&forum=2

    Еще вариант на футболке подряд идут названия самых лучших ресурсов/форумов по 1с и около 1с, т.е. вся футболка состоит из маленьких надписей в виде фона, а на заднем плане крупным INFOSTART.ru

    Reply
  29. coder1cv8

    Немного кода 🙂

    Код
    Инфостарт = СоздатьОбъект("Инфостарт");
    Если Инфостарт.Присоединиться() Тогда
       Инфостарт.УстановитьЗначениеПоля("ЭтоОбщение", Истина);
       Инфостарт.УстановитьЗначениеПоля("ЭтоРазвитие", Истина);
       Инфостарт.УстановитьЗначениеПоля("ЭтоРабота", Истина);
       Инфостарт.УстановитьЗначениеПоля("ЭтоПрофессионализм", Истина);
       Инфостарт.УстановитьЗначениеПоля("ЭтоЖизнь", Истина);
       Сообщить(Инфостарт.НасМного);
    КонецЕсли;
    

    Показать полностью

    Reply
  30. juliasoft

    infostart — 1C финиширует первой!!!

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

    (8) для меня ИНФОСТАРТ это прежде всего сообщество программистов а уже потом 1С. и «ваааще» при чём тут 1С…? 1С это ещё и бухи которые в массе своей «тупые» и ограничены своим «ДеКа»…. позиционировать инфостарт с 1С не есть хорошо…. 1С даёт нам хлеб но многие занимались бы программированием других программ но никому мы не нужны кроме преславутой, «гнус-т-ной» бухии… впрочем им мы то же не нужны… так уж… терпят-с… да и чуть, что есть на кого свалить все недочёты….

    во-оооо-от такой я предлагаю слоган…

    Reply
  32. Father

    Шёпот теней…

    Прикольный ник и прикольная надпись на футболке =)

    Загадочно однако.

    Reply
  33. Father

    Хорошо быть кисаю,

    хорошо собакою,

    вы купили 1С,

    а мы ее захакаем…

    Это так, просто лирика…

    Reply
  34. lustin

    есть парочка идей, хотелось бы шаблон двух сторон футболки в формате png — чтобы визуально оформить

    Reply
  35. Father

    Хм, интересно было бы посмотреть, но к сожалению, шаблона футболки нет.

    Reply
  36. lustin

    тады попробуем сами добыть белая говорите ? 😉

    Reply
  37. larisab

    1С, сука, прикольная!

    Reply
  38. lustin

    примерный вариант наваял http://slil.ru/25571629

    суть варианта

    передняя часть

    аватар

    никнэйм

    список разделов в которых участник получил хоть один плюс

    задняя часть

    логотип инфостарта, звёздочка и слоган

    «Правильная автоматизация» — не знаю почему навскидку пришло на ум

    напомню я не дизайнер — шаблон наваял за 30 минут обеда

    «рыбу для рисования могу закинуть если необходимо»

    Reply
  39. JohnyDeath

    1,С ука — не воин!

    (зпт и пробел — мааленькие)

    Reply
  40. lustin

    вид со спины НЕ законченный вариант — думаю надо ещё немного поработать со шрифтами

    поэтому прошу сильно не пинать

    Reply
  41. Father

    desty, хорошая работа, но нет стеба, прикола.

    Получилась рекламная футболка, которая не вызовет улыбки, положительных эмоций.

    Reply
  42. lustin

    если нужен стёб — будет стёб — видимо я не до конца прочитал заглавное сообщение

    я ж говорю есть пара идей

    Reply
  43. Father

    Может быть не совсем стеб, нужны эмоции и желательно только положительные.

    Reply
  44. logarifm

    а мне футболка понравилась, плюсану

    Reply
  45. lustin

    на вскидку после перкура на работе

    фоном по спине идет САМЫЙ глупый код который можно найти

    поверх кода надпись «С Вас 500 рублей»

    Reply
  46. coder1cv8

    На спине обязательно должен быть код, я считаю.

    Reply
  47. a.v.petuhov

    Предлагаю на футболке размещать область, в которую сплошняком набиты ключевые слова синтаксиса 1С, (со стандартной подсветкой) и засчет разницы в «подсветке» получить надпись Infostart

    Reply
  48. logarifm

    Да… Но его должни понять все. Не только программисты!

    Reply
  49. a.v.petuhov

    > Да… Но его должни понять все. Не только программисты!

    А тут лучше писать стебный код, в стиле:

    Код
    Пока НеПлатят Цикл
       Предупреждение("Работать не буду!");
    КонецЦикла

    Показать полностью

    что-то в этом духе 😀

    Reply
  50. lustin

    >> Предупреждение(«Работать не буду!»);

    А почему без таймаута? 😉

    Reply
  51. support

    «Тупой, жадный, ленивый одинэсник»

    Reply
  52. logarifm

    А почему без таймаута? 😉

    Не поймут, ИМХО подумают, что столько заплатить нужно!

    Reply
  53. logarifm

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

    Тут нужно цитаты подобрать.

    Reply
  54. support

    «Тяжело, днем не спать, ночью не есть»

    Reply
  55. support

    «Верните долги»

    Reply
  56. support

    «Есть?»

    Reply
  57. logarifm

    А как вам 1С как ERP-система!? Также как Excel система по начислению зароботной платы.

    Reply
  58. lustin

    «Нам не хватает специалистов-внедренцев» (с) Б.Нураливе

    Reply
  59. logarifm

    Можно взять такой контекст:

    бла-бла-бла

    и цитату из очень замечательного фильма «Бригада»

    И в этом прикриваю вас я Infostart

    Reply
  60. support

    «Хочешь выиграть футболку, спроси меня как?»

    Reply
  61. logarifm

    Планирование производсвта, закупками, продажами. Расчет себестоимости, прибыли, рентабельности. Рекурсивное исчисление задолженности.

    —->Идите в I N F O S T A R T —-> я спать хочу…

    Reply
  62. support

    «Вижу тупых людей»

    Reply
  63. coder1cv8

    (56) Тогда уж «Есть чё?» 🙂

    Reply
  64. MissJem

    Здесь могла быть ваша реклама )))

    Reply
  65. MissJem

    Трахаю тибидохаю

    Reply
  66. Delon

    http://www.INFOSTART.ru

    ДОСТУПЕНь ВСЕхРЬЁЗ

    Reply
  67. Valet

    1C-почти для всех.

    http://www.infostart.ru

    Reply
  68. Valet

    C 1С под майкой

    infostart.ru

    Reply
  69. Valet

    ЙА 1Cю

    infostart.ru

    Reply
  70. PowerBoy

    «1С-ники всех стран объединяйтесь!»

    Reply
  71. PowerBoy

    «Генерал Вооруженных сил 1С»

    Reply
  72. PowerBoy

    1С.Инфостарт[+1] = Победа;

    Reply
  73. karaw

    1С.екс 🙂

    Reply
  74. karaw

    Или же «Люблю 1С.екс :)»

    Reply
  75. poppy

    Microsoft Visual C++ Runtime Library

    Runtime Error!

    Program 1cv7.exe abnormal program termination

    Reply
  76. vasilykushnir

    Спереди: «Введите пароль:»

    Сзади: «Доступ запрещен»

    Reply
  77. Abadonna

    ИНФОСТАРТ — быстрый старт и уверенный финиш

    Reply
  78. z-alexey

    Случайно наткнулся на сайт: http://www.vsemayki.ru/catalog/maika_1c

    Reply
  79. koreav

    Люблю свою работу.

    Reply
  80. German

    Никакого волшебства,… просто INFOSTART

    Reply
  81. support

    Хочу вот такую футболку

    http://imgs.t-shirts.com/clipartitems/large/156306.jpg

    Reply
  82. vovan519

    Не одинесте мне мозги

    Reply
  83. vasilykushnir

    Биос: Процессор не обнаружен.

    Стартует программная эмуляция процессора.

    Reply
  84. vasilykushnir

    Добавьте мне мозгов…

    Искренне ваш: ноутбук.

    Reply
  85. z-alexey

    > Никакого волшебства,… просто INFOSTART

    тонкий намек «ты на Мисту не ходи, на Инфостарт ходи»? :)))

    Reply
  86. Lesovik

    1С больше не глючит:)

    Reply
  87. АЛьФ

    Здесь водятся тигры.

    Reply
  88. vovan519

    Спасите! Помогите! Не в чем даже на работу пойти и в приличном обществе показаться! Очень хочу майку с надписью (82).

    Reply
  89. Stepa86

    1С работает идеально… пока в ней не начинают вести учет всякие уроды… (не мое)

    Reply
  90. support

    «Свободен»

    Reply
  91. Shaman100M

    Hi, Welcome to Infostart! It’s the keeper One-S-Art!

    Reply
  92. mr.bison

    «Написал себе, поделись с другим».

    http://www.ИнФостарт.ру

    Reply
  93. vasilykushnir

    (86) ну это больше анекдот, чем лозунг…

    Reply
  94. vovan519

    (93, 86) Если бы было так просто. Слово «глючит» стало так популярно, что его теперь используют всегда, если не могут получить желаемый результат. А если его применяют к 1С….

    Если бы можно было провести соц. опрос (кстати, а почему бы и не провести?), то я думая слово «глючит» получило бы новое значение.

    А вот, что для меня означает это слово.

    ~10% — человек просто не умеет работать с программой. Иногда даже требуется объяснить, что такое кнопка и двойной клик мышкой.

    ~70% — пытаются получить отчеты по неккоректным данным, причем некорректные данные в половине случаев забили сами. (Диалог «Почему в анализе продаж у нас краснота, почему члючит 1С и показывает, что мы заработали минус двести рублей?» — «Ну, Марья Ивановна, вот смотрите. Вот единственное поступление, в нем цена 1300. Вот единственная продажа в ней цена 1100. 1100 — 1300 сколько будет?»)

    ~10-15% плохо работающее железо или настройки железа.

    и только в ~5-10% проблема связана непосредственно с 1С (причем в этот процент входит не только кривые руки прогграммиста, но и ошибки непосредственно платформы и несовместимость с прочим ПО).

    Так что в случае «глючит», мыслить нужно ширЕЕ.

    Reply
  95. support

    (94) плюс за подход 🙂

    Reply
  96. Father

    «Зенит-чемпион!»

    Reply
  97. Sis-Adm

    Что естественно, то не безобразно !!!

    Reply
  98. Lesovik

    2 vovan519

    Если мы говорим о мыслить шире, то надо понимать, что надпись по сути является лозунгом к сайту посвященному разработкам и разработчикам на 1С. Если вы уважаемый не сталкиваетесь с проблемами несовместимостей, ошибок и трудно реализуемости в 1С поставленных задач, то вы на 1С как программист не пишите. Естественно ИХМО. для 7ки «все» недочеты уже выявлены, но вот только во первых их исправлять никто не собирается. Во вторых когда шло освоение 8ки нулейвой косяки шли сплошным потоком… я помню вырываемые из пупка волосы нашего отдела внедрения.

    Кроме того, в посте указан смайлик, дабы показать шутошность и спорность вопроса,а нормальный слоган указан в самом начале и пользуется своей маленькой популярностью:)

    Reply
  99. Beauty

    (75) заставило улыбнуться)

    Reply

Leave a Comment

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