<?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='\
у меня проблема с загрузкой в ЗиК.
Первые несколько человек загружает нормально, а потом начинаются проблемы.
Создан Приказ 0059 от 07.09.06 Абдулгафаров Раиф Фиридинович
….
Создан Приказ 000001 от 21.01.08 Владычкин Павел Николаевич
Номер Приказа заменен на 22
Создан Приказ 23 от 19.08.08 Анашкин Олег Николаевич
Создан Приказ 24 от 19.08.08 Андронов Александр Викторович
Создан Приказ 000103 от 01.10.07 Андрющенко Андрей Валерьевич
Номер Приказа заменен на 46
Создан Приказ 25 от 19.08.08 Анашкин Олег Николаевич
Создан Приказ 26 от 19.08.08 Андронов Александр Викторович
Создан Приказ 000103 от 01.10.07 Андрющенко Андрей Валерьевич
Номер Приказа заменен на 94
Создан Приказ 27 от 19.08.08 Анашкин Олег Николаевич
Создан Приказ 28 от 19.08.08 Андронов Александр Викторович
Создан Приказ 000103 от 01.10.07 Андрющенко Андрей Валерьевич
Номер Приказа заменен на 190
Создан Приказ 29 от 19.08.08 Авдеев Роман Николаевич
Создан Приказ 30 от 19.08.08 Анашкин Олег Николаевич
Создан Приказ 31 от 19.08.08 Андронов Александр Викторович
Создан Приказ 000103 от 01.10.07 Андрющенко Андрей Валерьевич
Номер Приказа заменен на 383
Создан Приказ 32 от 19.08.08 Авдеев Роман Николаевич
Создан Приказ 33 от 19.08.08 Анашкин Олег Николаевич
Создан Приказ 34 от 19.08.08 Андронов Александр Викторович
Создан Приказ 000103 от 01.10.07 Андрющенко Андрей Валерьевич
Номер Приказа заменен на 769
Создан Приказ 35 от 19.08.08 Авдеев Роман Николаевич
Создан Приказ 000101 от 28.09.07 Абдулгафаров Раиф Фиридинович
Создан Приказ 0064 от 26.05.08 Аборнев Роман Владимирович
аналогично Texnik
при этом плоятся приказы и группы в справочнике сотрудников
там ошибка в строке 254… надо заменить параметр цикла ии на любой другой… перестанет зацикливаться…
в стр. 384 — та же ерунда
А мне помогло!
Один только сотрудник не загрузился, его можно и ручками, остальные 80 загрузились.
Спасибо большое!
Мне тоже помогает данная обработка, большое спасибо!