Вас устраивает семерочная палитра?




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

41 Comments

  1. Ёпрст

    Не комильфо:

    Цвет фона можно поменять без картинки..

    Форму не «раздвинешь» — ибо картинка не растягивается штатно

    Контролы от управления цветом нужно «прятать» — ибо опять таки форму не раздвинешь

    И модальность -зло..

    Reply
  2. Ёпрст

    Да.. модальность красившее так делать:

    Если Форма.Форма.МодальныйРежим()=0 Тогда
    ОткрытьФормуМодально(«Отчет#»,,РасположениеФайла());
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;

    т.е не засорять «параметром», он еще мог пригодиться для чего-нить другово..

    🙂

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

    (2) Насчет параметра согласен, сейчас подделаю (еще бы я с тобой не согласился 😮 ).

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

    Reply
  4. Ёпрст

    (3) Да не..я не о том..

    Просто не знаю, зачем надо менять фон формы интерактивно.. проще в пофигураторе 1 раз задать его (через свойства формы — цыет шрифта) и всё..

    Ну если уж так хочется, формексом поменять в любой момент. Всё лучше, чем нерастягиваемая картинка ..

    Имхо.

    Reply
  5. vip

    (3) Да, менять формексом цвет формы на любой легко и приятно.

    И нераздвигаемость формы легко обеспечить без модальности.

    Вот из принципа тебе отредактирую.

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

    (4) Насчет интерактивного изменения цвета мы как-то с тобой на форуме беседовали — там требовалось кассиров отслеживать.

    Тут же фишка в том, что нет ограничения на палитру цветов, предлагаемую в свойствах формы пофигуратором.

    И кстати,

    Если Форма.МодальныйРежим() = 0 Тогда
    ОткрытьФормуМодально(«Отчет#»,Форма.Параметр,РасположениеФайла());
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;

    — тогда уж и вовсе правильно будет…

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

    (5) Не в курсе. Просвети ❓

    Reply
  8. vip

    (7) 1. Можно убрать ненужные кнопки сиситемного меню.

    Окна.МенюОкна(<Форма>,<Закрыть>,<Максимизировать>,<Минимизировать>,<Восстановить>)

    2. Можно поменять стиль окна.

    Вот — так нераздвигаемое и вообще без заголовка.

    Окна.СтильОкна(Форма,2);

    3. Можно написать свою ВК и извращаться с окнами как угодно.

    Как очень давно я и сделал 🙂

    Я тоже очень не люблю, когда раскрывают во весь экран.

    Поэтому там, где надо, я раздвигаю (не раскрываю) окно на всю область MDI, подстраиваясь под текущее разрешение.

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

    (5) Не в курсе. Просвети ❓

    (Насчет «без модальности»)

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

    (8) Это формекс?

    Reply
  11. vip

    (10) Да.

    Объект Окна.

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

    (11) Так мне пришлось бы убрать слова «ВК не используются» 😐

    Reply
  13. vip

    (12) Ну, не используй. Мучайся дальше.

    А ВК делаются как раз для облегчения жизни.

    Еще умиляет, когда хвалятся отсутствием ВК, продолжая широко использовать v7plus, библиотеки для сканера штрих-кода, WSH и тому подобное.

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

    (13) Не, я не против ВК, и уж тем более, не хвалюсь их отсутствием. Просто это типа гантельной гимнастики — без гантелей оно легче, но кайф не тот.

    Reply
  15. vip

    (15) Я в свое время тоже достаточно нагантелился.

    И накачался до собственных ВК. 🙂

    И теперь любую свою хотелку легко могу реализовать сам.

    Чего и вам желаю. 🙂

    Reply
  16. artbear

    (15) Любую хотелку ? 🙂

    Reply
  17. vip

    (16) В принципе любую. Тасовать API никто не запрещал 🙂

    Но сделанным вами в 1С++ и FormEx восхищен.

    Оригинальный подход (я про rainbow) и блестящее воплощение.

    Браво! (это от меня очень редко можно дождаться) 🙂

    Reply
  18. Шёпот теней

    есть замечательное слово — «штатная» … это значит любой пришёл и сделал … это значит 100% заменяемость и сменяемость и документированность …

    вот как только ВК станут такими тогда да … но тогда они станут программами со всеми вытекающими следствиями …

    в частном случае ВК это конечно хорошо … но и на этом всё и закончится … мало-мальское изменение и кирдык … 100% привязка к программисту …))) возможно эта и есть цель написания ВК …

    … вОООоооОООт …

    Reply
  19. vip

    (18) Сопровождение тягомотных (и зачастую безграмотных изначально) типовых и работающие, полезные, не укладывающиеся в прокрустово ложе (ЗИК, БЗИК, УПП, ТТХ, АКМ) программы, это, согласись, несколько разные сегменты НАШЕГО рынка.

    Каждому свое. (с) т. Гитлер

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

    (18) Ну, формекс-то — считай, штатно. Я его впервые от Камина получил с типовой конфой. 🙂

    (19)

    ЗИК, БЗИК, УПП, ТТХ, АКМ

    УППс забыл 😳

    😀

    Reply
  21. Шёпот теней

    1С … всегда была универсальной … в этом и слабость и сила (рынок показал что сила …) …

    … универсальность — это всегда БЖ (большая ж…) … ктожжж мешает подогнать под нужды … (ну..да… ну..да… ) … создавание же нового говорит о том что создающий или Талант или тАЛАНТ …

    … НЕбольшой анализ АБС показывает … 20% нет смысла автоматизировать … а механизация возможна любой УЧЁТНОЙ программкой … остальное от лукавого …

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

    … вот …

    Reply
  22. Abadonna

    Пусть ребенок балуется, за это плюс.

    Reply
  23. Ish_2

    (23) С удовольствием соглашусь : баловство от Арчибальда

    (19) С удовольствием не соглашусь : «Каждому свое»(с) — это не Гитлер.

    Reply
  24. Abadonna

    (24) Вот, глянь, на радость Арчибальду вчера примутил 😀

    http://infostart.ru/public/59436/?PAGEN_1=7#comm (129)

    Reply
  25. Abadonna

    (24)

    С удовольствием не соглашусь : «Каждому свое»(с) — это не Гитлер.

    « Nam iustitia, quae suum cuique distribuit, quid pertinet ad deos? »

    (с) Цицерон, римское право

    off. Прям руки чешутся специально для Шепота перевести немного по другому:

    «Правила Инфостарта воздают каждому свое, при чем тут демократия?» 😀

    Reply
  26. Ish_2

    (25) Глянул. Зачем это нужно, правда, сказать трудно.

    Получается , что баловство арчибальдаво ты вроде как поддержал.

    Reply
  27. Abadonna

    (27) В 7.7 форма кремового восьмерочного цвета очень даже приятно на мой взгляд смотрится 😉

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

    (28) Я этого, в общем-то, и добивался 😎

    Reply
  29. Abadonna

    (29) Я сейчас дурью маюсь, пытаюсь избавиться от бордера на форме 7.7, но пока не выходит ;( Зато сумел освободить отчет от главного окна, плавает сам по себе

    Reply
  30. vip

    (30)

    Я сейчас дурью маюсь, пытаюсь избавиться от бордера на форме 7.7

    Затруднения? WS_THICKFRAME ?

    Зато сумел освободить отчет от главного окна, плавает сам по себе

    Да ну? Хвались.

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

    (31)

    Да ну? Хвались.

    Как честный человек, он должен мне в личку похвалиться 😀

    Reply
  32. Abadonna

    (31)

    Затруднения? WS_THICKFRAME ?

    От WS_EX_WINDOWEDGE пытался избавится…

    На всех слоях убивается, окромя главного 🙁

    А WS_THICKFRAME — спасибо, попробую.

    Да ну? Хвались.

    Хвалюсь 😉

    Reply
  33. Abadonna

    (32)

    он должен мне в личку похвалиться

    спасибо, что хоть не «в ножки поклониться» 😀 😀 😀

    Reply
  34. arithmometr

    (13) Не согласен.

    ВК бывают разные. ВК для работы с интерфейсом нужно использовать с осторожностью (мое мнение). Работа таких ВК может быть непредсказуемой и вообще приводить к неработоспособности конфигурации. Причины: глючная ОС, «левая» видеокарта и прочие техпричины. И если использовать такую ВК на условно типовой конфигурации установленной у надцати клиентов разбросанных в радиусе 150 км, и эта конфигурация заглючит в один день, то легкость внедрения интерфейсных фишек вылезет боком.

    А Вы говорите: баловство.

    Reply
  35. vip

    (35) Правильно, ВК бывают разные. Ну и не надо тащить в рот что попало.

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

    Reply
  36. arithmometr

    (36) А в чем вред конкретно этой разработки? Такие разработки, как эта, наоборот полезны. Они заставляют думать и фантазировать, а не «тащить в рот что попало».

    А программистов, которые «бездумно запускает на рабочих базах», нужно гнать взашей от программ для учета и управления, а то и под суд.

    Воооооооот.

    Reply
  37. vip

    (37) Я где-то сказал про вред конкретно этой разработки?

    А программистов, которые «бездумно запускает на рабочих базах», нужно гнать взашей от программ для учета и управления, а то и под суд.

    Всех не пересажаешь. Имя им Легион.

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

    (38)

    Всех не пересажаешь. Имя им Легион.

    Но стремиться к этому надо 😀

    Reply
  39. AlexBugs

    Красиво сделано! А какой формат у картинок в Таблице «Палитра», я из Painta переношу свои картики, а они в другом формате… и как фон они не работают. Как их правильно обработать?

    Reply
  40. Abadonna

    Чем плоха палитра в семерке? Классная… А-а-аааааааааа, ты про долбанную 1С? :))))

    Reply
  41. AlexBugs

    Пытаюсь цвета обуви вывести в таблицу товаров и форму карточки товара. Цвета не совпадают 🙁 Оттенков желтого нет, в частности.

    Reply

Leave a Comment

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