<?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='\
Изврат.
в 8.1 есть понятие в стартере в пункте «Настройка…»Списки общих информационных баз». проще прописать пользователям 1 раз и базу хоть куда может перемещаться, достаточно обновить список и усё, нет не какого гемора
также добавлять новые или удалять из списка. единое администрирование списка баз.
А еще есть административная установка)) Для автоматического обновления платформы на клиентах.
Полный изврат
🙂
(1) ну да.. только пользователь сам ничего никуда не добавляет.. он тупо ярлык на рабочий стол кладет и потом им пользуется 🙂
(2) не всегда срабатывет
(3) ага, полный..
(4) если тупо пользователь кладет) а что мешает тупо объяснить как добавить настройку или настроить самому?!
добавили новую инф. базу, а какая тут заглушка?)
(4) 100 баз, 100 ярлыков на раб. столе?
(6) Тут ситуация, когда база одна, но очень непоседливая. :))
(7) ааа, ясно. я думал у нас все сложно)
(5) мешает тупо то что пользователи работают в режиме 24/7 и по сменам..
то есть сидеть всю неделю днем и ночью чтобы каждому объяснить — влом.
естественно что одна смена другой смене НИЧЕГО не рассказывает 🙂
(6) база одна 🙂
но нужно было переехать.. производство ночь.
каждому пользователю ранее были на рабочих столах разложен ярлык на базу (прислан по почте)
естественно в очередной раз был прислан новый ярлык с требованием заменить..
естественно корпоративную почту никто не читает.
и чтобы избежать «а у меня 1с не работает» было сделано это 🙂
зы.. база для которой делалась заглушка переезжала за 2 месяца трижды 🙂
(9) >естественно корпоративную почту никто не читает.
а это уже проблемы самого пользователя, главное информировать.
все равно не понятно, зачем усложнять жизнь, писать заглушки и т.д. и т.п.
когда можно грамотно все настроить и админить с одного места.
сами себе создаете доп. работу.
удобство надо закладывать сразу!
а за идею 2-ка, т.к. не умеете настраивать нормально. минус не ставлю, хотя бы за труд, хоть и бесполезный
хе как-то удаленно решал вопрос подобный… только база не заглушка она формировала новый ярлык на рабочем столе запускала нужную базу и закрывалась сама с просьбой проверить почту для получения инструкций..
(12) если ты админишь то да.. а если ты появляешься в офисе раз в неделю да и то удаленно то времени админить особенно рабочие места которые работают посменно да под разными профилями а так же лазать по их профилям для проверки- что у них за ярлыки — нету.
а пользователи они же такие:
«почему не выполнил работу — а у меня база не работала 12 часов»
а база всего лишь переехала и нужно было ярлычок обновить..
а пользователь увидил что база не запустилась и спать лег…
(13) ну пожалуйста.. поставь мне минус.. это же так важно…
(14) про почту писал уже.. ночная смена — ей только дай повод не работать 🙂
(11) ну да.. только это проблемы потом предприятия в целом, когда утром нельзя заказ забрать из за того что его не сделали по причине — база не работала.
если ВЫ с подобными задачами не сталкивались — не стройте из себя «гуру» — может просто у вас мало опыта работы в «полевых» условиях хаотичноуправляемых офисов с неподконтрольным персоналом 🙂
(15) На почте только сообщения… и все.. остальное автоматом..
(15) вот как мой вариант для удаленного администрирование в самый раз.
и пусть читают корп. почту. главное инструкция, в чём сложность описать как подключать файл настройки? не сложнее чем кидать ярлык
(18) например отсутствием корпоративной почты у персонала на производстве…
ну не каждому мальчику работающему в ночную смену положен корпоративный ящик.. мало того — не каждый мальчик даже если ему его сделать будет этот ящик просматривать…
(19) дело ваше. кто как построит свою работу, дело тут хозяйское.
(20) ну да.. не везде есть возможность именно построить работу..
я именно это и пытался объяснить…
зачастую есть некие условия которые лично ты изменить не можешь.. какими бы они дурацкими небыли..
по этому просто так хаять — не зная всех условий — по меньшей мере непрофессионально 🙂
Сам себе проблему создал — сам её решил.
Маладец.
А ещё есть терминальный сервер…
и каким боком терминальный сервер (которого нет) может помочь в настрйке компа на производстве где под каждого пользователя свой логин/пароль соответственно свой профиль и свой ярлык для запуска базы?
Сколько ситуаций, столько и мнений
А ведь действительно, рабочие ситуации бывают весьма различными
Плюс хотя бы только за то, что решение выложил…
Решите проблему по другому — выложите своё решение, потом обсудим плюсы и минусы каждого 🙂
Ведь если бы у него была альтернатива, он бы воспользовался наверняка, а так либо не было, либо не знал… Научите, подскажите… ❗