Рекомендации по оформлению публикаций




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

60 Comments

  1. Alraune

    Спасибо, все очень четко и ясно изложено.

    А вот когда я жму кнопку «Сохранить», а не «Опубликовать», потом опубликовать уже не получается, и приходится загружать по новой. А может, я в чем-то не разобралась еще.

    Reply
  2. Evg-Lylyk

    (1) Благодарю за отзыв. Вы знаете, однозначно не могу ответить разработчики сайта здесь (публикация) активно работают и не всегда все идеально. Когда я публиковал эту публикацию мне сайт уверенно писал что «не опубликовано». На мой взгляд важно просто не торопится с публикацией, а сначала довести ее до ума.

    Reply
  3. Serj1C

    Также стоит отметить, что лучше не использовать Google Chrome а то будуте удивляться, почему файлов нет.

    Reply
  4. Evg-Lylyk

    (3) уточните версию Google Chrome и как проявляется проблема, добавлю. Не будем же писать что в Chrome не работает 😉

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

    На главную страницу!

    Reply
  6. venger

    (0) > Указываете ссылки на аналогичные публикации…

    Это реализуется автоматически, показом публикаций из той же категории, в порядке убывания рейтинга, где-нить внизу… Зачем напрягать авторов так?

    Reply
  7. O-Planet

    Camtasia есть бесплатная: http://my-soft-blog.net/258-camtasia-studio-3-na-xalyavu.html

    Reply
  8. Evg-Lylyk

    (6) Не всегда там все (и разработчики сайта это меняют). Я зашел на страницу текущей публикации и здесь только «Другие публикации автора». Также могут быть ссылки на другие сайты. Мне кажется это дисциплинирует, если автор укажет похожие разработки то можно предположить что он их смотрел и анализировал.

    Reply
  9. Serj1C

    (4) Видимо, никто не замечает красный текст на странице.

    Версия текущая, самая свежая, обновленная.

    Reply
  10. Serj1C

    (4) Видимо, никто не замечает красный текст на странице. Версия текущая, с последними обновлениями. Проблема действительно есть (zip архивы, внешние отчеты 8)

    Reply
  11. Evg-Lylyk

    (9), (10) Наверно не стоит это добавлять, уже есть и там где надо.

    Reply
  12. Ulfhedhinn

    Народ, не могу обновить файл при апгрейде публикации 🙁 Очередной глюк сайта? Или все же у меня какая-то проблема?

    Reply
  13. Evg-Lylyk

    (13) Иногда сайт может глючить что можно посоветовать: Запустить в другом браузере… попытаться позже.

    Reply
  14. markers

    Иногда невидно комментариев в своей/чужой публикации хотя они точно есть, помогает кнопка «Очистить кеш публикации (beta)», и в других случаях тоже..

    Reply
  15. erem

    Почему в тексте «Описание» публикации не выделяется код тегами:

     Код 

    ?

    Reply
  16. alexk-is

    (16) Читай пункт 5.

    Если в вашей публикации присутствует код на встроенном языке или текст запроса сделайте раскраску текста

    Reply
  17. Арчибальд
    Предупреждение! К Сожалению на данный момент нет возможности предоставить публикацию для ознакомления до того пока вы ее не опубликуете. При открытии ссылки не автором будет сообщать «Публикация не активна»

    Однако можно попросить модератора посмотреть — ему видно. Другой вопрос, будет ли он это делать…

    Reply
  18. SoulPower

    Спасибо, очень хорошо изложено.

    Reply
  19. German

    Не делайте ПринтСкрин всего окна 1С, или даже рабочего стола

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

    (20) Почему нет? Я все время так делаю, потом обрезаю/выделяю/размечаю…

    Reply
  21. Evg-Lylyk

    (20), (21) У меня стоит SnagIt с этой программой тружно делать не правильно

    Подумаю… добавлю про скрины

    Reply
  22. rom-x

    (22)SnagIt и вправду отличная вещь! всем рекомендую, очень удобно, стандартные ножницы отдахают!

    Reply
  23. mailwood

    Я делаю скрины FastStone Capture. Рекомендую.

    Reply
  24. mailwood

    Версия 5.3 лежит в нете, официально бесплатная.

    Reply
  25. Evg-Lylyk

    (24) Спасибо, посмотрю

    Reply
  26. 1C_tradeomsk

    Не удаётся загрузить картинки со своего компьютера в текст публикации. Спрашивает Image URL, какой-такой URL если картинки на моем локальном ПК???

    Reply
  27. Evg-Lylyk

    (27) необходимо выложить ваши изображения на фото хостинг, а потом добавить через ссылку

    Reply
  28. 1C_tradeomsk

    Жутко смешно, редактируешь своб публикацию, свой альбом и тут бац!

    Reply
  29. 1C_tradeomsk

    Вопрос.

    Как «разукрасить» в цвет синтаксиса 1С, исходный код?

    razukrashka.epf — не стартует в 1С 8.2 (управляемые формы).

    Parser1C.exe — разукрашивает, но на стадии копирования в окно Web-браузера раскраска исчезает.

    Reply
  30. alexk-is

    (30) Можно использовать «Конфигурация для 8.2 Разукрашка (5.8.0.1)»

    http://infostart.ru/public/19856/files/

    Reply
  31. 1C_tradeomsk

    Спасибо!

    Reply
  32. Поручик

    (30) В режиме обычного приложения запустить не предлагать?

    Reply
  33. 1C_tradeomsk

    Нет

    Reply
  34. dequbu

    Что такое анонс и картинка для анонса?

    Reply
  35. Evg-Lylyk

    (35) Установите и посмотрите на черновике

    Reply
  36. Лаура

    Краткое руководство по установке/подключению конфигурации/обработки НЕОБХОДИМО в описании публикации, особенно если есть определенная последователь действий запуска-установки либо условий для ее работы. Также хотелось бы, чтобы авторы перед опубликованием проверяли текст публикации на орфографические ошибки. Так приятно читать написанное правильно с учетом правил русского языка.

    Reply
  37. AleksSF

    А можно сделать чтобы программный код в 1С заключался в теги [соde1C] [/code1C]

    Так сделано на форуме http://www.1c-pro.ru/ возможно это сложно, но хотелось бы.

    Сэкономило бы много времени при написании статей.

    Reply
  38. vladir

    Спасибо за статью. Полезные рекомендации!

    Reply
  39. b-dm

    Про snagit — плохая рекомендация, всё остальное — хорошо.

    а эта программа snagit платная , доступна только на 30 дней, так что либо рекомендация устарела,

    либо нужно внести коррективу об этом .скачал эту программу и долго от неё плевался, сейчас попробую поставить

    FastStone Capture , посмотрим , но думаю она всяко лучше должна быть.

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

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

    Reply
  40. b-dm

    ещё 5 копеек:

    советую добавить такой пукнт , как выбрать при публикации программу, а как статью или работу,

    т.к. это всё не вполне очевидно на сайте, а если бы вы добавили такой пункт , вашей статье это прибавило бы весу.

    Reply
  41. zigomodo

    Если решусь написать публикацию,обязательно перечитаю статью.

    Reply
  42. Spektr

    Спасибо за рекомендации. Приму к руководству.

    Reply
  43. knigula

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

    Reply
  44. Evg-Lylyk

    (45) Можно воспользоватся http://www.picamatic.com/

    Сохраните на всякий случай картинки т.к. сервисы бывает без объяснения причин удаляют.

    Reply
  45. knigula

    (46) сервис отличный, спасибо. Только в статье эти картинки не отображаются. Видны только наименования, сами скрины пустые.

    Reply
  46. kit

    Спасибо за статью! А то я уже собрался выложить свой отчетик небольшой, но пожалуй ещё немного подготовлюсь. ))

    Reply
  47. vat-74

    А нельзя ли сделать загрузку изображений локально? Или они считаются побочным продуктом? А то статьи уж очень не удобно оформлять. А то сначала туда, потом оттуда.

    А почему из ворда загружает только текст?

    Reply
  48. StudentM

    Evg-Lylyk, прошу уточнить, при попытке отправить на модерацию оформленную публикацию с полным почтовым адресом, появляется надпись «Не заполнен почтовый адрес (секция Интернет-магазин)» и или в черновик или Отмена. Поясните, пожалуйста, каким образом всё же отправить на модерацию?

    *********************************************************************************************************

    Оказалось, что желательно на каждой закладке при оформлении публикации надо нажимать «Сохранить в черновик», только в этом случае у меня получилось отправить на модерацию.

    Reply
  49. Armando

    Про скриншоты хотелось бы дополнить, что некрасиво смотрятся скрины, где цветом закрашены заголовок окна, название организации, ФИО сотрудников и т.п. ИМХО лучше для скринов подготовить тестовые данные или исказить данные, которые хотелось бы скрыть.

    Reply
  50. rayastar

    Так же для быстрого формирования скриншотов могу посоветовать ну очень удобный сервис. prntscr.com

    Reply
  51. ceramica

    Внимательно прочитал и пошел постить свою первую публикацию.

    Reply
  52. Bukaska

    (53) ceramica, Пошёл или пошла? Вроде в профиле пол женский

    Reply
  53. Panda007

    Рекомендую для быстрого формирования скриншотов программа MWSnap 3.00.0.74 (бесплатная) http://soft.mydiv.net/win/download-MWSnap.html

    Reply
  54. soft-servis

    Не могу разобраться, как вставлять картинки в текст публикации?

    — Из буфера вставляются пустые прямоугольники.

    — В команде меню «Изображение» при попытке указания пути пишет:

    «Ошибка файлового диалога: У вас недостаточно прав для использования диалога выбора файла»

    Reply
  55. indigo_
  56. IgorXml

    Максимальный размер файла для публикации сейчас какой? Можно 200 Мб? Если можно, но лучше не надо, так и скажите. Спасибо.

    Reply
  57. Els11

    Как прикрепить бесплатный файл? (презентацию, инструкции).

    Пытаюсь опубликовать платную конфигурацию. Хочу прикрепить бесплатный файл (вижу , что есть такие в продаваемых продуктах). На закладке «файлы» можно добавить только за 1$m, других пунктов не вижу. На закладке «Магазин» за 0 рублей не дает сохранить. Говорит, что цена товара не должна быть нулевой. В каком месте можно прикрепить бесплатный файл?

    Reply
  58. Alraune

    (59) Els11, на закладке Файлы, не обращайте внимания, что там написано

    Reply
  59. aselik

    По моей публикации было 18 закачек. После того, как внесла небольшие поправки и отправила на модерацию, закачки обнулились. А как можно внести исправления в публикацию, чтобы количество закачек не сбрасывалось? Подскажите, кто знает, пожалуйста.

    Reply
  60. WarAn

    Почему же в этой статье такое огромное количество грамматических ошибок?

    Reply

Leave a Comment

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