<?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='\
если порыться на инфостарте то можно найти такую замечательную вещь как Навигатор внешних отчетов и обработок А.Зернятко + к этому через упомянутый Rwidjets «трансляцию» навигатора в меню с поддержкой всяких вкусностей — типа ограничения доступа, статистики и прочего..
(1) Ага, поддерживаю.
«Трансляцию» из Навигатора я делал, и в комментах к Навигатору указывал, где можно скачать.
(1,2) За всем не уследишь 🙁 Будет значит еще один велосипед 🙂
Первоисточник —http://infostart.ru/public/18319/
оценивать пока не буду — дома 1С-ки нет — не могу посмотреть…
Почитал описание первоисточника — я согласен с тем, что не всем нужен навороченный функционал.
(4) Хотелось узнать мнение автора 🙂
(6) Без обидняков, но кроме менюшки ты ничего не добавил (20 строк кода)…
Предлагаю улучшить обработку — сделать группы (вложенные списки) — тогда думаю что сообщество оценит выше.
Примерно так…
(0) Только сейчас обратил внимание, что из 3-х обработок, которые вы выложили на этом сайте — две являются незначительными переделками из моих обработок…
Мне, конечно, не жалко, и даже где-то приятно… Но я не нашел ни одного вашего комментария или плюса/минуса к своим обработкам.
(9) А какая еще?
(9) А скачивал?
(10)
http://infostart.ru/public/57599/
http://infostart.ru/public/20120/
оригинал:
(12) Прикольно…
Там даже к имени файла просто добавлено (2)
(11) там даже название файла такое-же 😉
нет, я не кричу «украли!!!»
обработки изменены, есть ссылка на авторство… вроде бы все ОК.
просто не понятна позиция автора: мои обработки он не оценил (тоесть не понравились наверное), но на основе них он делает свои…
(14) Не переживай, Алексей.
Другие оценят. И твои разработки, и эти….
(15) Ну минус он может и не заслужил (скор ты на расправу).
Просто данный инцидент демонстрирует поведение/ответственность определенной части пользователей портала: качают, пользуются, зарабатывают на обработках (как минимум рейтинг) и даже спасибо не говорят…
Обидно, но такова жизнь…
(16) В свете (3) «За всем не уследишь», ставлю минус.
(16) > Ну минус он может и не заслужил (скор ты на расправу).
Это маленькая компенсация недополученного тобой плюса 🙂
Не по-человечески это….
(17), (18) Учитывая, что автор плюсанул оригиналы, думаю что минусы можно снять… Как вы считаете?
(19) Ну если ты просишь, то сниму, но урок будет.
Спасибо конечно за конструктивную критику 😳
Постараюсь больше ничьи обработки не переделывать (неблагодарное занятие однако). То, что не обвиняют в краже — уже хорошо 😀 , могу только заверить автора и заинтересованную общественность, что я на этих обработках не зарабатываю (а отбор в справочниках не использую, сделал исключительно в целях популяризация 1sqlite) и выложил свои не для рейтинга (поверьте на слово), скажете что не нужно — удалю. А уж про (2) в названии это вообще маразм, можно подумать рейтинги по названию ставят.
Персонально для Noy : Ваши обработки я скачивал давно, найти первоисточники здесь не смог (о чем честно написал), меньше всего хотел Вас обидеть, как я уже писал мне платят не за эти «фенечки» — это для души.
(19) Я не хочу снимать… По крайней мере, пока.
Не уверен, что урок будет см. (20)
+(22) В свете (21)
> уж про (2) в названии это вообще маразм, можно подумать рейтинги по названию ставят
Тем более, не хочу…
(23) Не надо снимать.
(24) Соглашусь… Обычно я не соглашаюсь 🙂
Я: Ну уж нет
Раз я пообещал, что сниму — значит сниму
2009-09-23 12:13:50
(тут был ник) :……………..
поэтому необязательно снимать минус. В назидание следующим ораторам, так сказать
2009-09-23 12:11:41
(25)
>(24) Соглашусь… Обычно я не соглашаюсь
Ну слава богу, хоть в чем то мы пришли к согласию, а то уж думал спать неделю не смогу 😀
Все-таки поставлю минус для этой обработки, сделано не так много 🙁
Основная причина минуса — использование чужих доработок без комментариев/плюсов в исходной/оригинальной обработке.
ЗЫ другие разработки автора минусовать не буду.
(27) Уважаемый artbear я согласен с тем , что переделано немного, и как уже мне было сказано, есть подобные обработки несравнимо лучше по качеству, но на нетленку я и не претендовал, как и на рейтинг, где мог я указал авторство, мне (может быть наивно) мнилось что кому-то они пригодятся (не корифеям конечно 😉 ) , что меньше придется тратить свое время. За плюсы перед автором покаялся — надеюсь он меня понял и обижаться не будет.
(28) Лады, нет проблем.
Снял минус 🙂
ЗЫ «Плюс» за ВК и «Минус» за вышеуказанное дали в итоге мой 0.