Обработка "Подбор цветовой гаммы раскраски таблиц"




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

18 Comments

  1. script

    Найди конфигурацию интелева например бизнес процессы на 7.7

    В состав конфигурации входит ВК, которая открывет окно подбора цвета по RGB как в Paint-е. Управляеться командами из 1С.

    Reply
  2. Ёпрст

    Неудобно… И еще

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

    Из объекта Сервис используй и привет..

    Reply
  3. D9ID9I_SaIIIa

    😀 А мне понравилось)

    Кстати можно добавить в обработку ещё одну таблицу значений,разбить её на n-ое количество маленьких кубиков,потипу палитры,закрасить эти кубики наиболее востребованными цветами,ну и процедурку при выборе конкретного цвета в таблице добавить)

    Reply
  4. D9ID9I_SaIIIa

    Времени нет пока писать код ,но,вкратце могу описать то,что я б ещё добавил(для реализации(3)):

    1.Выгрузка строк с настройками цвета из примера раскраски страницы,например в текстовый файл палитрапользователя.txt ,это будет шаблон цветов палитры пользователя.

    2.Сделать формирование палитры из сохранённого выше файла в ещё одной таблице.Т.е значение колонки таблицы с цветом брать из сохранённого файла,таким образом можно будет индивидуально настраивать палитру.

    3.В процедуре ПриОткрытии() обработки ,вначале попытаться считать данные из палитрапользователя.txt,если его нет или он пустой то из заранее созданного файла с определённым набором цветов.

    😀

    Reply
  5. ПростоБосс

    (3,4) В том-то и беда, что времени нет. Делал для себя, просто чтобы удобнее и быстрее было таблицы настраивать. Будет время, попробую реализовать полную настройку с добавлением текста в глобальный модуль.

    НО! К сожалению только когда время будт 🙁

    Reply
  6. JohnyDeath

    Почему автор не пользуется (2) ?

    Reply
  7. vip

    (6) И правда, почему?

    Reply
  8. Altair777

    (0) А зачем засовывать в архив старую версию формекса (92)?

    Reply
  9. Altair777

    (9) А зачем вообще его засовывать?

    Если у человека нет формекса, ему эта разработка вообще не нужна.

    P.S. Минус за злобный смайлик 🙂

    Reply
  10. ПростоБосс

    (10) СмеюсьУмруНимагу 🙂 Если у человека нет формекса, то когда он скачает обработку — формекс будет. И на примере обработки человек поймет, что не все в клюшках и плохо, особенно благодаря разработчикам ВК. И что интерфейс можно делать…

    Формекс в архиве лежал рабочий, ссылка в тексте на сайт разрабочика ВК имеется.

    А что до смайлика — то не в ту иконку кликнул. Штаренький я уше, руки дрошжат 😉

    Reply
  11. Altair777

    По поводу версий Формекса.

    Кроме кладовочки Альфа есть еще такой ресурс как 1С++ users forum › 1С++ и прочие расширения v7 › FormEx

    95 версию я там скачивал еще летом.

    Забавно. Служебная обработка ,помогающая подобрать параметры для раскраски, популяризирует Формекс? 😀

    Есть же прикладные решения.

    Reply
  12. ПростоБосс

    (12) Лениво вступать в полемику, но, имхо, ссылка на сайт автора более справедлива, нет?

    Reply
  13. Altair777

    (13) Я говорю не об этом. А о том, где новые версии появляются чаще.

    Вы видели этот ресурс раньше? Если нет, то могли бы и спасибо сказать 🙂

    Reply
  14. ПростоБосс

    (14) Разумеется видел, раз уж я пользуюсь ОпенКонф 🙂 И в случае проблем иду именно туда. Но АЛьФ там один из многих, а его сайт — это его сайт. Извините за казуистику.

    Reply
  15. Altair777

    (15) Тогда тем более странно, что Вы пользуетесь старой версией Формекса.

    И АЛьФ везде АЛьФ… 🙂

    P.S. Думаю, пора прекращать пиарить…

    P.P.S. Кстати, нечто похожее на (0) я делал в свой разработке Формирование «креста» в Таблице Значений на форме (7.7)

    Reply
  16. ПростоБосс

    (16) Действительно, все это уже превращается во флуд 🙁

    Если есть еще что-то сказать, в личку, плиз.

    Что же по поводу «Формирования креста» — увы не видел, когда искал, иначе и заморачивался бы не стал.

    Кстати, в сопроводиловке к ней — тоже диферамбы АЛьФ’у 😉

    Reply
  17. Sprite

    Супер! Сам делал помощника по подбору цвета, но сдесь проработано тщательней. Буду пользоваться. Плюс!

    Reply
  18. ela

    Хорошая обработка. Иногда код не всегда совпадает со цветом, но всегда можно подобрать

    Reply

Leave a Comment

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