<?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='\
Автор — МОЛОДЕЦ
Очень жизненно, прямо читал и плакал, плакал и смеялся — короче улёт!
Очень похоже на работу программера… просто класс…
Просто копия нынешней моей работы, дал прочесть напарнику — до слез…
Качество программы, как и дома определят клиент, а не программист или архитектор. Поэтому ненадо ныть!
BOB’у:
Уважаемый, зрите в суть — это не жалоба на качество, а постановка задачи.
Вы текст-то читали? С проектами когда-либо работали?
Автору пять.
Супер!!!
Я плачу!
Автору — пять однозначно.
Пять с плюсом, очень похоже.
12 баллов!
Штормит от слез и смеха! Вот она вся наша работа господа программеры, особенно жизненнно про то шо не тока лучше но и дешевше 🙂
Рыдала. Очень
это специфика работы такая.. что вы плачетесь все, если бы нельзя было работать по другому, не работали бы
но смешно 🙂
Бывает и наоборот.
Архитектор: Да, вы сказали, о желании разместить в Вашем доме плазменную панель, но вы не говорили, что хотите чтобы ее _удобно_ было смотреть.
:))
Хм… Прикольно, прикольно, батенька.
Довольно точный портрет внедруна (или внедренца?). По сути, это характеристика того, кто мы еси. Подгонка (заточка?) уже чего-то готового под требование заказчика (порой маразматическое — СПАСИБО автору!!!) — это ли можно назвать программированием? И не от того ли у заказчика такие требования потому что внедрун не сумел толком объяснить ему, что предсмтавляет собой устанавливаемая система и, что если заказчик полный м***к, то пусть хоть немного скрывает это.
Вообще-то, читая статью, хотелось бы хохотать навзрыд, но больше почему-то было второго (навзрыд)….
это Тз от клиента, однозначно
Да, это то, что от нас хотят те кто пользуется 1с предприятием. Хочу то не знаю что, а ты хоть тресни пополам а сделай!!!!
От души написано
а кто автор то?
автор неизвестен
Мдя..
Как то очень близко к жизни
Слезы аж до смеха..
Вот у меня с клиентом сейчас именно такая ситуации, когда работа уже полностью выполнена и ему надо платить.
Постоянно с таким изначальным ТЗ встречаюсь. 🙂 Приходится показывать визуально нормальное ТЗ, хотя не всегда помогает: «Что вы мне показываете!? Я в этом ничего не понимаю. Мне всего-то надо чуть-чуть».
Теперь еще буду показывать и эту статью. Спасибо автору. 🙂
Это вещь!!! Встречается сплошь и рядом! пять баллов =)
Очень похоже 🙂
Я ржал!
Пожалуйста, не беспокойте меня мелкими деталями. !!!!!!!!!!!!!
Прям как в жизни 🙂
Точно!!!
Отлично. Прям как в жизни 🙂
Они бы повесились
Автор жжот и попал в точку. Однозначно плюс. Дата публикации статьи 03.02.2006, на дворе 2012г. ситуация нисколько не изменилась. Печально…
Вот точно как оно и есть. И мне от этого почему-то обидно и горько. То ли отношение к программерам, как к бездельникам, то ли уверенность, что всё это так просто, не знаю… Но у меня получился смех сквозь слёзы…
Ахахаха, жесть, как она есть!
Если бы строители строили так, как программисты пишут программы, то первый залётный дятел разрушил бы цивилизацию (с)
Ребята, нам необходим специалист, полуштатный. Готовы работать по тз, оплата как за тз, или оклад, все обсуждаемо. Работы много, хватит на долго. Вопросов много, нужен специалист, готовый не только объяснить что не так, но и исправить. Офис в Тюмени, предпочтение кандидатам из нашего города (присутствие в офисе, хотя бы частичное) Я сам руководитель, а разговаривать надо и с бухгалтерией и с отделом продаж, поэтому пишите- назначим встречу.