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




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

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