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




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

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 не будет опубликован. Обязательные поля помечены *