Выбор цвета палитры на форме диалога




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2025-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='\

20 Comments

  1. madmpro

    Давно искал, спасибо!

    Reply
  2. CheBurator

    хочется возврат цвета в виде типа 0хFFCCDD (например, в зависимотси от переданного при вызове флага)

    Reply
  3. Ёпрст

    Вот как некрасиво работает:

    http://i056.radikal.ru/0806/44/400b81e8fcf0.jpg

    Reply
  4. АЛьФ

    А с помощью FormEx можно использовать системный диалог выбора цвета… Вот…

    Reply
  5. Ёпрст

    Не совсем правильно устанавливать видимость всем картинкам, чтоб поднять их наверх, достаточно предыдущей это сделать

    Reply
  6. vip

    (4+) И реализуется это просче и красивше.

    Буквально одной строкой. Вот… 🙂

    Reply
  7. Shaman100M

    (3) У меня все отображается корректно, — перед тем как выложить, экспериментировал с порядком обхода кнопок и прикрывающих их текстов, обновлением формы.

    У меня вопрос, — как могла получиться такая картинка не специально?

    (Специально можно сделать — открыть ПалитраВариант.ert, обойти TAB все кнопки, затем «погасить» их частично нажатием мышки, но это уж особенности стандартной реализации)

    Reply
  8. Ёпрст

    (7) очень просто — нажимаешь на кнопку с сдвигаешь мышку в сторону … 🙂

    Reply
  9. Shaman100M

    (8) Это почти то же что и TAB — активизация кнопки без ее нажатия. Конечно, она «всплывет» вверх. Это можно исправить?

    Reply
  10. Shaman100M

    (4) и (6) Не спорю. Ну, если идет речь о конфигурации, о реальной оптимизации, удобном и красивом интерфейсе.

    А как быть с ert-шками, решающими простейшие задачи, —

    http://infostart.ru/projects/872/ ,например, —

    ограничивать их применение обязательным наличием Formex?

    Лучше, конечно, и так и сяк, — есть компонента — делаем одной строкой, — нет, — пытаемся выкрутиться. 😉

    Reply
  11. vip

    (10) Для меня наличие 1С++ и FormEx давно стало обязательным.

    И задачи, простейшие и труднейшие, решашаются не выкручиванием, а легко, красиво и эффективно.

    Reply
  12. 1234567

    (11) Покупает скажем человек Ладу «Калина» а ощущение неполноценности(то ли человка, то ли автомобиля) его не покдает. И он начинает её «обвешивать»-тюнинговать. (спойлеры, «пластмасски», тонировки, ксенон, сидения, лампочки, висюльки). Только вот в чем беда. Как была это Лада Калина, так и осталась. (Лада калина — читай 1С, ВК — читай тюнинг).

    Автор (Shaman100M) молодец, изыскивает способы и использует максимально эффективно то, что предлагает ООО «Дарумсан». (за что как говориться заплачены деньги что должно их отрабатывать — 1С).

    «Респект» — автору за его разработки что указывает на гибкость мышления, остроту ума.

    ВК — лишний раз подтверждают некоторую неполноценность 1С(хотя идеального ничего не существует).

    Reply
  13. Shaman100M

    Спасибо за оригинальный коммент. 😉 У Лады и с-ки немного «разные» подходы: на базе Калины собираются выпускать «Гранту» (напрашивается лишняя буква). А база 7.7. в таком ключе вообще не рассматривается, — только новые модели. Скоро запчастей будет не достать )))

    Reply
  14. d0dger

    Полезная штука, спасибо

    Reply
  15. Арчибальд

    От же черт, не видел раньше, сам изобретал 🙁

    Reply
  16. ABudnikov

    Реально помогло, когда я программно раскрашивать отчет.

    Положил к себе в копилочку — Спасибо. Полезный велосипед 😉

    Reply
  17. denek2004

    А как с помощью FormEx вызвать палитру цветов?

    Reply
  18. Ёпрст

    (17)

    ВыбратьЦвет(ПолноеОткрытие, НачальныйЦвет)

    у объекта Сервис

    Reply
  19. denek2004

    (18) Ёпрст, Это в какой версии ? в описании не нахожу такой функции..

    Reply
  20. Ёпрст

    (19) во всех..

    если че, последний (ну почти последний) формекс живёт тут :

    http://www.dorex.pro/?download

    Reply

Leave a Comment

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