Полезняшка: Библиотека пиктограмм для кнопок v.2




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

63 Comments

  1. Ёпрст

    Чето как-то маловато… тоже что ли кинуть?..

    Reply
  2. GSoft

    Да все нет времени сесть и внедрить сюда все то что в конфах реально присутствует.

    Reply
  3. мх

    Спс, посмотрим.

    Поскольку я это дело просил, то + ставлю сразу, не глядя

    Reply
  4. brr

    (1) Было бы не плохо

    Reply
  5. Ёпрст
  6. GSoft

    (5) написал бы что ли что это просто иконки, у меня таких на 750 метров)))

    Тем более что 1С не все форматы воспринимает и иногда приходится конвертировать

    Reply
  7. Ёпрст

    (6) 750 метров 16х16 ? 🙂

    Reply
  8. brr

    Никаких проблем, скачаем :). Заранее спасибо!

    Reply
  9. GSoft

    (7)всяких разных

    одной только коллекции png`шек 128*128 на все 26 букв латинского алфавита 130 метров)))

    Reply
  10. Ёпрст

    (9) ну ясно, этого добра тоже валяется… просто, как правило, используется реально 1-2 % 🙂

    Reply
  11. GSoft

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

    Reply
  12. Altair777

    (0) (5) Дело полезное. С красивыми кнопочками, иконочками, логотипчиками и т.д. и работать приятнее 🙂

    Reply
  13. YRAtomic

    На рис. 3792 до боли знакомые иконки :)))

    Reply
  14. muzikant

    Спасибо потому, как полезно..

    Reply
  15. O-Planet

    Тааак… У меня несколько тысяч такого. Вот как рейтинг можно получить оказывается )))

    Reply
  16. zaic

    Полезное дело, хотя своя для этих целей тоже есть.

    Можно было бы сделать слой типа «Стандарты красоты Инфостарта» (или GSofta :). С набором красивых иконок на основные кнопки. И на неосновные тоже, но чтоб стиль виден был.

    Reply
  17. YRAtomic

    Насчет стандартов красоты именно GSofta я бы поспорил 😉

    Reply
  18. napala@

    нда, пригодится )

    Reply
  19. GSoft

    (13) — именно оттуда, но признаться они специфичные — в стандартные по размеру кнопки не вставишь, если только в некие пользовательские панели управления

    (16) выложил в виде «как есть» — давно собирался уже это сделать — но попросту не до этого. Будет время приберу))))

    (16,17) а что у меня уже стандарт красоты есть?)))

    Reply
  20. GSoft

    я уже месяц собираюсь пустить в свет библиотеку пиктограмм ver 3 http://infostart.ru/projects/2373

    Reply
  21. bookworm1c

    Отлично.

    Даже когда 1 с накроется медным тазом,

    эта штука останется.

    Просто гениально и главное очень нужно для 1с. Рекомендую.

    Reply
  22. Fuego

    а нельзя ли просто картинки выложить? Мне там несколько картинок понравились (Рис. 3792), а клюшек у меня нет.

    Reply
  23. Ёпрст

    (22) разбери GComp-ом, поимеешь картинки.

    Reply
  24. z-alexey

    Все они официально бесплатные?

    Reply
  25. GSoft

    (22) спроси у YRAtomic

    думаю у него могут быть в «картинках»

    Reply
  26. GSoft

    (15) лучше бы что нить серьезное плюсовали, хотя бы например построитель структуры подразделений http://infostart.ru/projects/2754/

    Reply
  27. YRAtomic

    (22)(25) Можете достать отсюда http://infostart.ru/projects/1685/

    (GSoft так и поступил :))) )

    Reply
  28. CheBurator

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

    Reply
  29. CheBurator

    потому что наборов иконок всяких в файлосборнике на компе — у меня тоже есть сотни метров…

    Reply
  30. Abadonna

    >, а сделать реально проработанные темы — иконки для работы с доками,….

    Серега, а как их отличить? На чей вкус? То, что ты можешь посчитать иконками для доков, мне пожет показаться иконками для ТЗ…

    Reply
  31. GSoft

    (30) у меня есть набор иконок 128*128, у каждой есть свое название, но от ситуации описанной (31) все равно не уйти

    могу тебе залить куда нибудь, там метров 120

    Reply
  32. GSoft

    (27) у него же нет семерки под руками

    Reply
  33. Fuego

    Да я вчера сел, погуглил и нашёл тонну замечтательных иконок размером от 16 до 512 пикселов в сторонах. В формате PNG. Спасибо всем за советы )

    Reply
  34. YRAtomic

    (34) И правильно — иконки вообще надо подбирать под каждое решение. А использование чужих наборов в своих конфах — моветон

    Reply
  35. Fuego

    (35) ты прав 🙂 я ща пишу конфу с нуля. Типа зарплаты. И тут пара-тройка иконок симпатично смотрелись бы в той конфе.

    Reply
  36. GSoft

    (35) если это камень в мой огород — то у меня встречный вопрос — Вы их сами рисовали? Если да то я их тут же удалю.

    Reply
  37. Fuego

    (37) :))) Пральна )))

    Reply
  38. YRAtomic

    (38) нет, не рисовал — но тратил время на поиски и подбор.

    Моветон как раз то — что вы препарировали мою конфу, достали оттуда иконки и выдали их за свои (хотя могли бы поставить ссылку на источник). Теперь за это вы получаете плюсы.

    Впрочем, повлиять я на это никак не могу :)) — пользуйтесь пожалуйста :))

    Reply
  39. GSoft

    (39) да не вопрос — уже удалил.

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

    Моветон то что свое неудовольствие высказываете при всех, а не в личку.

    А плюсов мне и так хватает, могу поделиться)

    Reply
  40. zk96

    Благодарю от души, нужная весчь 🙂

    Reply
  41. Hamlet

    Поддерживаю, вещица нужная. РЕСПЕКТ!

    Reply
  42. CheBurator

    А как эти все иконик ПРИСОЕДИНИТЬ К УЖЕ СУЩЕСТВУЮЩЕЙ БИБЛИОТЕКЕ?

    Reply
  43. GSoft

    так в описании написано

    1. вставить как внешний отчет

    2. сохранить конфу

    3. удалить вставленный отчет

    Reply
  44. migel

    Пытаюсь вставить внешнюю обработку, пишит ошибка доступа к файлу.

    Reply
  45. GSoft

    (45) сложно ответить — у меня не получить съимитировать ошибку

    Reply
  46. Старый

    А почему при скачивании размер 0 байт. Кто скачал поделитесь

    Reply
  47. Banditozz

    Вставляю как внешний отчет, далее сохранить в конфе и выдает ошибку доступа к файлам __Picture.ИменаФайлов затем много раз появляется окно сообщениями, где указываются эти самые пикчерсы к которым нет доступа. В общем не получается …

    Reply
  48. CheBurator

    аналогичная проблема как и у (48)

    Reply
  49. CheBurator

    тест

    Reply
  50. smitti911

    Проблема такая как у (48) . У кого получилось

    1. вставить как внешний отчет

    2. сохранить конфу

    3. удалить вставленный отчет

    ?????

    Дальше пункта 1 не доходил 🙁 , а хотелось бы .

    Reply
  51. spkvxnet

    Блин! Половина иконок «так себе», а половина вполне годная!

    Reply
  52. FIZIK

    (52) spkvxnet, Даже половина -это гуд

    Reply
  53. spryn

    Использовал от сюда пару иконок. Спасибо!

    Reply
  54. omandarina

    «Вставляю как внешний отчет, далее сохранить в конфе и выдает ошибку доступа к файлам __Picture.ИменаФайлов затем много раз появляется окно сообщениями, где указываются эти самые пикчерсы к которым нет доступа. В общем не получается …»

    То же самое …

    Reply
  55. Mudrii_Gankster

    Спасибо за иконки, давно искал

    Reply
  56. vbaran

    Вещь полезная и поучительная для зарабатывания рейтинга))))

    Reply
  57. serega3914

    Отличная весчь положил в закрама

    Reply
  58. Master07

    Спасибо полезная вещь, даже интереснее стало работать )))))).

    Reply
  59. miranda123

    Спасибо, пригодилось.

    Reply
  60. Rockman

    Вот спасибо. Лично мне очень нужная вещь.

    Reply
  61. migel

    Отличная тема, меня смативировала свою библиотеку пиктограм скоро выложу.

    Reply
  62. Kserken
  63. ToJIuK

    Для Всех у кого выдает «ошибку доступа к файлам __Picture.» у меня получилось так :

    1)Вставил внешний отчет (Действия-Внешний отчет (Обработка ) — Вставить внешний отчет(Обработку))

    2)После некоторых раздумий написал : с начало «Нет ошибки» а потом, «ошибку доступа к файлам __Picture.»

    3)Идем В диспетчер задач ищем задачу 1с77 конфигуратор — снять задачу (НЕ ЗАВЕРШИТЬ ПРОЦЕСС , а именно снять задачу)

    4)Конфигуратор предложит сохраниться на что мы соглашаемся

    5) запускаем заново : обработки(которую пытались вставить) нет, а картинки в библиотеке есть

    Может кому пригодиться . Картинки нужные .

    Reply

Leave a Comment

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