"Screen Saver 1C" — хранитель экрана в стиле 1С [v2.4]




Принцип обмена данными из 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. Душелов

    Добавил 🙂 Ура!

    Reply
  2. support

    Добавилось! Ура!

    Reply
  3. tormozit

    пока применять негде, но за идею уже +

    Reply
  4. Душелов

    Поправил косяк с кареткой при заполнении текста во весь экран.

    tormozit, а зачем применять? Это просто, удовольствия ради… 🙂

    Хотя в этот скринсейвер можно что угодно запихнуть…

    Reply
  5. artbear

    При попытке скачивания файл не найден.

    Reply
  6. Abadonna

    (5) Есть такое…

    Сорри за оффтоп: Доржи, а как сделать, чтобы свежие комменты вверху были? Или никак?

    Reply
  7. tormozit

    (4)

    Всмысле я про то, что мне лично пока ее негде применять) А так бы разыграть кого — самое оно.

    Reply
  8. Душелов

    Файл перезалил, но сам же скачать не могу… Глюк, видимо движка…

    Reply
  9. Barmaglot

    Не качает…

    Reply
  10. Душелов

    Могу пока предложить: http://narod.ru/disk/4125198000/ScreenSaver1C.zip.html

    Reply
  11. cs25

    Где-то была похожая штуковина. Скачал — понравилось. Плюсуем !!!

    Reply
  12. luns

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

    Reply
  13. Душелов

    (11) Была в виде работающей базы на 7.7 в которой то ли выгрузкашла, толи проведение документов — вообщем, бежал индикатор прогресса.

    (12) Я уже думал над этим 😉 Введу процент очепяток и исправление 🙂

    Reply
  14. Душелов

    Может есть у кого звук нажатия клавиши? 😉

    Reply
  15. luns

    Ну и Ctrl+C Ctrl+V а то ж куда без них ))))))))

    Reply
  16. Душелов

    (15) А зачем? 🙂

    Reply
  17. Душелов

    (15) А, эмулировать…. Тут уже сложнее, надо подумать…

    Reply
  18. artbear

    Прикольненько — поставил +

    .

    Еще бы хорошо заменить заголовок главного окна — не у всех УТ юзается 🙂

    Например, установкой в параметрах.

    Reply
  19. artbear

    Звуки нажатия есть в различных аськах 🙂

    Reply
  20. Душелов

    (18) Заголовок вынесу в параметр.

    (19) В квипе какая-то печатная машинка — ужас!

    Надо инет пошерстить, и добавлю тогда звук.

    Reply
  21. Mucmepukc

    в Punto Switcher вроде звуки адекватные

    http://punto.yandex.ru/

    Reply
  22. support

    Скачивание исправили

    Reply
  23. Душелов

    Добавлено:

    — при наборе текста опечатки и копи-паст 😉

    В настройки добавлено

    — заголовок конфигурации

    — процент опечаток

    — процент использование копи-паста

    Reply
  24. luns

    Текст запроса неправильно красит, как код…

    Reply
  25. luns

    Блин, опять не качается…

    Reply
  26. Душелов

    (24) Во, текст запроса!… ведь все вспоминал, что я забыл добавить!..

    Reply
  27. Душелов
  28. GSoft

    а можно такое же но для семерки??? очень хотелось бы

    Reply
  29. Душелов

    Можно, вот только там цвета другие…

    Сделаю позже.

    Reply
  30. artbear

    Поставил свой заголовок, Сохранил параметры, нажимаю Просмотр, а заголовок остался все тот же — УТ, 10.3 🙁

    Счас подожду настоящий скринсейвер.

    Reply
  31. Душелов

    (30) В просмотре должен быть уже сразу.

    А в настройках, когда заново открываешь, изменения есть?

    Reply
  32. Olga_siberia

    http://narod.ru/disk/4125198000/ScreenSaver1C.zip.html

    (10) Файл удален с сервиса

    Reply
  33. Душелов

    (32)

    Душелов 02.12.2008

    (25) Тогда снова: http://narod.ru/disk/4132655000/ScreenSaver1C%20(copy%202).zip.html

    Reply
  34. Душелов

    И скачку починили, кстати.

    Reply
  35. Душелов

    Добавил раскраску текста запроса и условий #Если.

    Reply
  36. Душелов
  37. ycatuk2006

    что то скачать неполучаеться :(, а на народе говорит удалили 🙁

    Reply
  38. Душелов

    Добавил звуки клавиатуры, в настройках можно отключить звук.

    Начал писать эмулятор 7.7 😉

    У кого не качается, пока можно скачать отсюда: http://dushelov.ru/1c/ScreenSaver1C.zip

    Reply
  39. php5

    Нажимаю скачать…File (=4489) not found

    Reply
  40. Душелов

    (37, 39) Пока правится движок, можно скачать по ссылке 38.

    Reply
  41. GSoft

    а можно сделать так чтобы воспринималось не только 65001(UTF-8) но и старый добрый ansi 1251 ?))) ну и плюс в версии под семерку — поменять подложку на скрин из под семерошного конфигуратора

    Reply
  42. GROOVY

    Понравилось. Можно использовать при презентации чегонить, в фоне. Очень интересно и прикольно.

    Reply
  43. murat_

    Прикольная штука, автору плюс за идею! Только у меня звук работает всегда, даже если скриншот не активен!

    Reply
  44. Душелов

    Скачку починили.

    (41) Ага, вынесу тогда в настройки.

    (43) В предосмотре — он работает, есть такое дело, в свойствах экрана на закладке «Засткавка», а вообще, в системе не должен.

    Reply
  45. dushich

    Душелов жгет!

    (впрочем как и всегда 🙂 )

    Reply
  46. ded00786

    Без комментариев……………………………………………………………………………….

    Бесполезно, но прикольно)))

    Reply
  47. GSoft

    (42) на самом джеле можно использовать и для обучения — только скорость поставить маленькую и процент ошибок убрать

    Reply
  48. Майкопчанин

    Особенно полезно тем, за кем следит Большой Брат через радмин.

    сам хотел такую вещь сделать, но поленился. Однозначно плюс.

    Reply
  49. Майкопчанин

    49. Но есть баг. 🙁 Когда текст дошел до конца экрана, не сработал скролл. Текст стал благополучно набиваться за нижней границей экрана.

    Reply
  50. Душелов

    (49) А всегда так срабатывает или единично? У меня скроллится.

    Reply
  51. Душелов

    — Добавил эмулирование 7.7

    — вынес в настройку выбор 7.7 и 8

    — так же выбирается кодировка файлов с текстом модулей

    Reply
  52. Душелов

    Если шутить, так шутить по-крупному 😉

    Добавил «синий экран смерти» 😉

    Reply
  53. igslepenko

    Ошибка при инициализации приложения… 🙁

    Reply
  54. Душелов

    (53) Фреймворк стоит?

    Reply
  55. Майкопчанин

    (50) у меня два монитора. На основном не скроллится, на дополнительном работает нормально. Отключил один монитор — все ок. Думаю, этим багом можно пренебречь.

    Reply
  56. Душелов

    (55) Можно было бы поправить, да не могу воспроизвести из-за отсутствия 2х подключенных мониторов 😉 Если будет такая возможность — сделаю.

    Reply
  57. Душелов

    А, видимо, я один момент упустил из-за отсутствия колонок на работе — останется ли звук клавиатуры после выскакивания «синего экрана»…

    Reply
  58. WiseSnake

    Баловство… Даааа не любит у нас народ работать…

    Reply
  59. Душелов

    (58) Почему же? Для меня — это практика. Изучение очередной технологии.

    Reply
  60. WiseSnake

    (59)Это все замечательно, опыт весч хорошая, но куда еще можно применить эту технологию в 1С? Я не спорю у Вас интересные разработки, но они никак не применимы к работе. И даже наоборот. Не интереснее было бы написать что нибудь в помосч в работе а не в отдыхе? ИМХО.

    Reply
  61. Душелов

    (60) А почему именно к 1С?

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

    А то, что применимо к работе — я получаю за это финансовое вознаграждение.

    Reply
  62. WiseSnake

    >>А то, что применимо к работе — я получаю за это финансовое вознаграждение.

    А для упрощение, оптимизации своей работы Вы ничего не пишете? или Вы за это тоже берете деньги?

    Reply
  63. Abadonna

    (58)>Баловство… Даааа не любит у нас народ работать…

    Почти все мои разработки на этом сайте написаны ради «баловства».

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

    Reply
  64. WiseSnake

    (63) Если честно, вот у Вас я не видел подобных обработок. По моему очень даже рабочие обработки.

    Reply
  65. Душелов

    Не отчетами едиными живет программист 🙂

    Reply
  66. 1v7

    СКРИН — ПРОСТО СССУУУПППЕЕЕРРР ! Давно о таком мечтал. Спасибо.

    Reply
  67. Olga_siberia

    >»Screen Saver 1C» — хранитель экрана в стиле 1С

    надо поменять название на-Что бы такого сделать что бы ничего не делать

    Reply
  68. coder1cv8

    Под Вистой не работает (

    Reply
  69. Abadonna

    Я вот думаю.. В то же самое время написал, так сказать, «анти-Душелова» по большой просьбе руководства. С установленным интервалом делат скриншоты у юзверей и складывает в указанную папку. Что б не расслаблялись! 😉 Выкладывать на сайт?

    Reply
  70. luns

    (69) Конечно! Хотя такие программы есть, но вроде платные…

    Reply
  71. Душелов

    (68) А что пишет? За неимением висты не могу проверить..

    Reply
  72. Душелов

    (69) А что будет в случае получения скриншота с машины, на которой работает скринсейвер? 😉

    Reply
  73. Valet

    (57) Да при синем экране озвучка клацанья клавиш остается.

    Супер игрушка.

    Reply
  74. Душелов

    (73) Понял, поправлю…. Так и думал 🙂

    А синий экран все равно в дрожь бросает 😉

    Reply
  75. Душелов

    Исправил.

    Reply
  76. Abadonna

    (72) Замочить скрин-сейвер — задача как два байта отослать :)))

    Reply
  77. artbear

    (69) Выкладывай «антиДушелова» 🙂

    Reply
  78. coder1cv8

    (71) А ничего не пишет ) Копипастю в ВинСистем32, а в доступных заставках не появляется… Хотя, если ручками запустить просто — то работает.

    Reply
  79. Abadonna
  80. z-alexey

    Ну шутник :). Вчера потестил сабж, понравилось.

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

    «Мда… видать это не заставка :(»

    Решил подвигать мышкой — и о чудо! все работает 🙂

    Reply
  81. Душелов

    (78) Посмотри, где в висте scr хранятся, по-моему просто в папке с виндой.

    (76) Ага, я могу сделать отключение скринсейвера только по горячим клавишам ;)))) И все 😉

    (80) Сам попадался 🙂

    Reply
  82. Altair777

    Крута! 🙂

    Reply
  83. KissKA

    Клевая штука=) специально ради нее зарегилась=) чмоки-чмоки

    А можно панель конфигурация закрепить и справа СП открыть=) и снизу, если можно, табло например=).

    Reply
  84. Душелов

    (83) Скриншот покажите пожалуйста.

    Reply
  85. KissKA
  86. Душелов

    Дерево конфигурации вряд ли можно сделать по-нормальному — у всех же свои конфигурации (для этого и вынес в настройку загловок), а метаданные у всех разные так же будут.

    Reply
  87. KissKA

    ну пожалуйста…

    Reply
  88. KissKA

    может тогда сделать, чтоб он инфу брал из файла конфигурации тогда=)

    Reply
  89. Душелов

    Ага, анализ CF файла…

    Reply
  90. KissKA

    ну можно тогда типовую заскриншотить

    Reply
  91. e.kogan

    Не работает ((( «Ошибка при инициализации приложения» 135-ая. Вылетает при выборе заставки в параметрах экрана.

    Ошибку заскринила, могу скинуть. Windows XP Professional 2002 SP2.

    Reply
  92. e.kogan

    Не работает ((( «Ошибка при инициализации приложения» 135-ая. Вылетает при выборе заставки в параметрах экрана и при попытке запустить непосредственно.

    Ошибку заскринила, могу скинуть. Windows XP Professional 2002 SP2. Права полные.

    Reply
  93. Душелов

    (92) .Net Framework 2.0 стоит?

    Reply
  94. Душелов

    (90) Я подумаю над этим предложением 🙂

    Reply
  95. KissKA

    (94) может на худой конец СП добавить и служебные сообщения

    Reply
  96. CheBurator

    при эмуляции 7.7 — бяковая отрисовка графики в главном меню.

    (тема виндов у меня на всякий случай — классическая)

    http://slil.ru/26399962

    Reply
  97. Душелов

    (96) Это не тема виндов, это скрин шот просто с моего домашнего компьютера + подстроение фона под фон скриншота. Я не заморачивался с меню 😉

    Ты свой скриншот меню 7-ки кинь, я под него подстроюсь просто 🙂

    Reply
  98. e.kogan

    (93) Я балда — мне ж с тех пор, как был фреймворк поставлен, сисблок меняли… Похоже, не стоит (

    Точно не стоит. Поставила — всё работает, спасибо )

    Reply
  99. Программулькин

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

    (3) tormozit, как это негде использовать? О_О. А на рабочем месте? А на совещаниях? да мало ли ещё где…

    Reply

Leave a Comment

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