Рабочий стол оператора v 1.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='\

30 Comments

  1. KliMich

    Для оператора очень удобно и актуально!

    Однозначно плюс!

    Reply
  2. Kochevnic

    Спасибо! Пригодится однозначно

    Reply
  3. itar59

    очень красиво и удобно!!!!

    пожелание — пункт — СОБЫТИЯ

    Reply
  4. mob51

    (3) itar59,

    Пишите ваш email как добавлю, вышлю.

    Reply
  5. itar59
  6. alexkl

    Значительно лучше, чем рабочее место менеджера

    Reply
  7. mob51

    Спасибо!

    Reply
  8. Иволга

    Почему при вызове различных документов, отчетов, справочников они появляются сзади окна с обработкой?

    Reply
  9. mob51

    Посмотрю чуть позже, исправлю.

    Reply
  10. curys

    Однозначно плюс! очень красиво и удобно!!!! Спасибо! Пригодится однозначно

    Reply
  11. itar59

    подключил — менеджеры в восторге!!!

    но замечание от

    Иволга пишет:

    Почему при вызове различных документов, отчетов, справочников они появляются сзади окна с обработкой?

    справедливо.

    Reply
  12. mob51
    itar59 пишет:

    подключил — менеджеры в восторге!!!

    но замечание от

    Исправлено в новой версии.

    Reply
  13. opiumdx

    Спасибо!

    Reply
  14. mob51

    (13) opiumdx, Не забывайте ставить плюсики=)

    Reply
  15. balabani

    Спасибо! Пригодится однозначно

    Reply
  16. margo2007

    Хм. Пол окна картинки занимают… Удобно ли это?

    Reply
  17. itar59

    (16) margo2007,

    даже очень. все под рукой и ничего лишнего

    Reply
  18. margo2007

    (17) itar59,

    Да, скачала, посмотрела — красиво.

    Возьму за основу. Но «справочник номенклатура» заменю на аналогичный, но с остатками.

    Reply
  19. itar59

    (18) margo2007,

    у нас менеджеры только с ним и работают

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

    Reply
  20. accnt

    Спасибо! хорошая штука!

    Reply
  21. DenSergeev1968

    Спасибо! Действительно все под рукой!

    Reply
  22. latrium

    Хорошая работа. Спасибо. Будем юзать.

    Reply
  23. alma-soft

    спасибо за обработку, поставлю менеджерам, попробем

    Reply
  24. alma-soft

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

    Reply
  25. novichek_1c

    Для какого релиза обработка? А то на 11.0.7.18 не запускается. Вот такая ошибка: Возможно, обработка (отчет) устарела или не является дополнительной:Метод объекта не обнаружен (СведенияОВнешнейОбработке)

    Reply
  26. mob51

    (28) novichek_1c, 11 релиз это управляемая форма, а обработка для не управляемой.

    Reply
  27. novichek_1c

    Понятно. А для 11 есть что подобное?

    Reply
  28. kanalya

    Судя по содержанию, эта форма — часть более общей конструкции, и более сложной. А ещё, если сравнить остатки «лишнего кода» и «рабочего кода» напрашивается мнение что изначальный вариант — не Ваша разработка. Ну да не моё это дело.. У меня вообще от этой обработки только интерфейс остался, и то меньшей частью.

    Reply
  29. foxikat

    А для 8.3 такая есть?

    Reply
  30. pafftis

    Хотим такую на ут 11.3

    Reply

Leave a Comment

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