<?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='\
Плюсовать не буду из принципа (надеюсь всем уже известна моя позиция по плюсам в блогах, да еще не авторских вещей), но понравилось 😉 +1 в уме
Человек старался переводил. Тем более это у него первый блог. Он зарабатывал честным путем :).
К тому блог отличный, тут + однозначно
Кажется похоже на Лу Гринзоу из книжки «Философия программирования для Windows»…
Но все равно +
клево
Ребят, внесу ясность. Я не переводил это, ссылка на источник дана.
Не видел высказываний Abadonna по поводу плюсов в блогах, но считаю, что мешать плюсы за программы и за блог некорректно. По себе вижу сколько времени нужно, чтобы поставили плюс за разработку, а тут повесил текст в блоге и за день 16 плюсов — приятно… но не честно 🙂
Вообщем можете минусовать блог. Мне хватает плюсов за свои разработки 🙂
вообще-то п.10 изначально (в середине 80-х) звучал так: бессмысленные комментарии, например:
GOTO M; //переход к метке М
..
для мну очень, критичен, например п.9
..
п.7 — это вообще не про наших «манагеров»…
..
ну и п.1 — это истинная правда…
подписываюсь за п.8 и п.3 абсолютно точно
еще раздражает слово «компьютерщик»
9, 8, 3 и 1 — это даже не в точку, а прям по печени… Как реально…
Да это про нас родимых. (+1)
Скучно, чуть не уснул…
Впервые смотрю в монитор и меня тянет спать!!!!
Дочитал до конца, и… слишком много «не нужных слов», для программиста!!!!!!!!
п.4 — только что вытащил из машины одну из трех 256М-линеечек… заработала хрюня 🙂
правда, забыл обратно вставить батарейку 🙁
пoдпиcyюcь. п. 3, 6, 7, 9
п.1 Как хорошо что я не один такой:)
(5) То, что плюсуют — говорит о том, что народ еще думает, а не только что-то качает…
ПС Абадонна всех напужал 🙂
+ Вот сейчас сижу и матерюсь, что клиент в готовой работе просит всего лишь поменять штриховку линии в некоторых секциях таблицы! Для него — это всего лишь другой тип линии, а для меня добавление новых областей в прототип, смена алгоритма в порядка десяти
(5)>ПС Абадонна всех напужал 🙂
Планет, ты глянь авторский пост (5).
«По себе вижу сколько времени нужно, чтобы поставили плюс за разработку, а тут повесил текст в блоге и за день 16 плюсов — приятно… но не честно :)»
Он это не писал, он это не переводил, а рейтинг ЕМУ идет. Так что при чем тут «что народ еще думает»?
НЕ ДОЛЖНЫ ТАКИЕ ВЕЩИ РЕЙТИНГОВАТЬСЯ — вот и все, а право на существование они безусловно имеют. По-моему мысль настолько простая, что даже и обосновывать её как-то неловко
(16) Почему не выставить счет, если это действительно занимает много времени. А на отказ оплачивать привести все аргументы. Если и после этого он отказывается, то говорим: «Берем в руки линейку и карандаш и обводим штриховую линию в сплошную (или им волнистую нужно)». Пусть задумается 🙂
P.S. Хотя, не мне вам объяснять 🙂
Обращаю внимание z-alexey на необходимость более тщательного выбора темы для публикации блогов, объявлений о поиске работы и т.п. При чем здесь «Юмор»? Здесь скорее подходит «Подстава» или, на крайний случай, «Грусть».
про коментирование — это про меня. Когда писал задачки на заказ студентам. Просто вапче ниче не знали, ну просто вапче ниче …
11-й и самый раздражающий фактор. Берем, к примеру, АЛьФа:
________
ВК без регистрации в реестре — 32
Inserter — 38
Открытие внешних отчетов 1С:Предприятия 7.7 из Проводника -58
____________________________________________________________
А эта лабудень копипастенная уже 118 набрала. И самое забавное, что сам АЛьФ к такому положению дел руку приложил, или наоборот — не хочет приложить, чтобы как можно скорее положение исправить.
2 Abadonna
Кстати да… стал замечать, что реально полезные АВТОРСКИЕ разработчики получают рейтинг<30. То что делал 1 человек… вкладывал душу и работал можно сказать за идею…
А разработки где написано «Взял часть от туда» или «Основано на разработке такого то чувака» растёт в рейтенге…. Хорошо хоть что авторы честные и пишут что это не их…. но всё равно я считаю надо ставить балл тем, кто выложил базовую разработку а не тем, кто на этой базе сделал рейтинг )))
2 Greymem. «растёт в рейтенге…. » Слушай, где-то по весне я под ником Annobad внаглую выложил свою же разработку DBFViewer, нигде не указывая, естественно, что Annobad=Abadonna. После того как рейтинг дошел до 20 я честно написал что и по чем и дал ссылку на действительно авторскую (Абадонновскую). И что ты думаешь? Нашлось еще как минимум пяток идиотов, которые и после этого Annobad_у плюсы поставили.
2 Greymem, Abadonna
http://infostart.ru/projects/2453/
Вот один из последних примеров
Публикатор честно дал ссылку на первоисточник и при этом получил свою долю рейтинга. Профанация конечно, но расстраиваться по этому поводу не стоит. Важнее не то, сколько плюсов, а кто этот плюс поставил и за что.
Хе-хе… На первом, кажись, розыгрыше призов главный приз пришелся на убогенькую поделку. Да еще с методическими ошибками…
Ну и что? «Плюсовали» за нее такие же по квалификации.
Я так обратил на нее внимание только после розыгрыша. Из-за любопытсва. Ибо подобных заготовок у самого много.
P.S. Уточнять не буду. Лень ковырять поиск. Здесь, и на Т1С. Если в архивах существует.
Для того что бы не раздражала проблема 1 (собственный код) я задействую принципы коллективной разработки даже когда один. В комментариях писать чего хотел, использовать хранилище как историю изменений, задумываться над архитектурой (проявляется связность отдельных включений).
Кстати, часто приходит такая мысль, что не просто написал алгоритм для зачета, а придумал микроязык, с помощью которого будут выражаться мысли в данном модуле, классе задач. И такой язык совершенствуется от задачи к задаче.
Было у меня лет 15 когда я не то что бы не мог вспомнить кто написал код (хоть это был я сам), но я даже не мог понять что вообще автор хотел этим кодом сказать, какую мысль выразить. Все конструкции написаны на языке программирования, который я знаю и от которого есть документация, а что этот код хочет сделать не понятно. Слава богу больше такого не повторялось, на самом деле даже приятно открывать старые разработки.
Отвечать пользователям на «У меня программа не работает» надо так: «Вы в отладчике посмотрите что не так» 🙂
Хоть и перевод, но все равно зачетно!
(27) opx, Я бы послал такого программиста