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




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

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