<?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='\
исключительный…
Реклама по PR-правилам. Неважно, хорошо или плохо говорят, главное, чтобы говорили.
а у меня складывается впечатление, что УПП никто нормально внедрить не может…
имхо
Мы у себя внедряем УПП. Просто главное почти не менять код в главном функционале!»!!!!!
И подстраивать пользователей к программе!
Ещё на этапе выбора системы в зародыше подавил все заявления типа «нам бы УПП…».
Сейчас юзаем БП на которую навернул бюджетирование (так как это нужно НАМ), сдалал модуль управленческого учёта (так как это нужно НАМ), сделал систему отчётности перед головной орагнизацией для консолидации (так как это нужно ИМ).
В итоге переписанная БП, которую поддерживаю в актуальном состоянии (сейчас на 1.6) + ряд механизмов внутреннего учёта и бюджетирования. В УПП не специалист, но из того что я видел, могу сделать вывод, что один человек, за такие сроки и в таких объёмах не внедрил бы даже того, что у меня есть сейчас.
Вывод: предварительная оценка должна осуществляться не по рекламным буклетам. 7 раз отмерь, один раз отрежь.
Согласен на 100% Причины кроются как в отсутствии опытных кадров, так и в недопонимании между заказчиком и исполнителем
Да короче…
Внедрение без проблем не бывает — это аксиома.
Человеческий фактор всегда сыграет свою роль.
И не стоит утверждать, что у Вас на предприятии все просто замечательно, и такого никогда не случится…
А случай — действительно показательный…
Нехорошие ВДГБ ужасно подошли к проекту и провалили его… НО!!!
Пришли хорошие господа-аудиторы и все наладили!!!
Обращайтесь!!!
И смех и грех…
Все зло кроется не в недопонимании или отсутствии кадров, а в плохой постановке жестких рамок ведения проекта как для Заказчика, так и для Исполнителя…
100% уверен, что условия и задания по ходу работы менялись 10000 раз, и Заказчик до сих пор не в состоянии точно ответить на вопрос — а что же он хочет в итоге…
Имхо вполне предсказуемое развитие событий для ВДГБ. И дело здесь не в сложности УПП и не в отсутствии кадров, скорее в способе ведения дел.
Они легко могут себе позволить «кинуть» своего партнера. О клиенте и говорить нечего.
(8) Что хочет заказчик я давно по своему опыту понял.
Звучит примерно так:
«Я не знаю, что мне надо, но чтобы все работало! Желательно само по себе» 😉
(10) И нефиг мучить заказчика разными расспросами….
(4) Не у всех получается «прогнуть» все БП под УПП. Тогда приходится менять код. Но вместо УПП я бы рекомендовал ИТРП 🙂 Понятней и для внедренца и для пользователя.
(8) Скорее всего план проекта был, потому как оцененые работы (менее 15%) от чего то таки плясали 🙂 В том что этот план был размыт и не формализирован, возможно факт, но тогда как чел. получивший сертифика «Руководитель проекта» (обязателен для ЦКП) смог допустить такое.
В общем говорится о том что поднятая 1С планка для франчей в виде ЦКП себя не оправдала. Ведь внедряется УПП фрилансерами и будет внедрятся. Просто ЦКП в 3 раза дороже 🙂 и с авансом в 100%.
кнопка «Пыщ!»-программист, даешь понятный интерфейс)))