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




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

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

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