<?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='\
Вот такая ошибка появилась 🙁
{Форма.Форма(616)}: Значение не является значением объектного типа (НомерСтроки)
стрк = н.Первый.НомерСтроки — 1;
Это серьезно.
Хотелось бы пощупать исправленный вариант ❓
Запускаю на платформе 8.1.14.72
выбираю «Загрузить из XML»
Выбираю файл «Выбор работы»
Получаю указанное выше сообщение.
Смотрю заполнение таблиц
Закладка цель — все заполнено
Закладка критерии — 2 строки — исследование,рост
Остальные закладки пустые
Виноват. Как внешняя обработка действительно не работает. Буду исправлять. А пока можно вставить обработку в отдельную конфигурацию и запускать оттуда.
пока минус ибо с типами данных надо быть внимательнее
строится модель — модель принимает решение …
везде и всюда проблема построения моделей — стоимость, время, повторяемость, идентичность и т.д. … иногда проще принять решение перебором а иногда пренебречь некоторой ошибкой …
вероятность получить: львы рыжи — мы рыжи — мы львы весьма высока …
опять же проблема «наблюдателя» в построении иерархий … здесь видать основная проблема …
спАсибо за идею … будем почитать и посмотреть … вот …
общие математические методы принятия решений:http://www.olap.ru/best/analysis.asp
…вот…
тут:http://www.citforum.ru/consulting/BI/resolution/ …
«Важным требованием, обеспечивающим обоснованность применения метода, является квалифицированность экспертов, принимающих участие в создании структуры модели принятия решения, подготовке данныхRules_DatePreporation и в интерпретации результатовMethodUse_ResultInterpritation, т.е. их способность давать правильную непротиворечивую информацию. Во многом обоснованность решения, принятого с помощью иерархического анализа проблемы, связана: 1) с полнотой учета факторов, определяющих рейтинг решений, 2) с полнотой учета связей между целью рейтингования, факторами и возможными решениями, 3) адекватностью формулировок критериев для парных сравненийAdvice_TwineCompareCriterion тем целям, которые преследуются для построения модели»
«Метод наиболее подходит для тех случаев, когда основная часть данных основана на предпочтениях лица, принимающего решения.»
видимо покупка квартиры (и подобное) это наиболее подходящие вариант применения данного метода …
… вот …
(7-9) Спасибо за критику метода и ссылки!
И все же для многих лучше иметь хоть какую-то модель, чем выбирать наугад или под воздействием «вау»-эффекта.
Ценность МАИ в превращении качественных (субъективных) оценок в количественные показатели. Да и структурирование задачи в любом случае идет на пользу.
(10) … во всЁм с вами согласен… вот …
Выложил версию 1.2: Исправлены ошибки. Добавлена проверка неоднозначности выбора, когда несколько вариантов имеют равные глобальные приоритеты. Добавлены примеры.
где скачать программу
Отличное применение МАИ!