<?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='\
Однозначный плюс уже за постановку задачи
А какая технология проверки?
А можно еще проверку модулей организовать? ЧтобВотТакойВотТекст могла распарсить и проверить?
(2) Системные требования: MS Word.
(3) Она уже есть, нужно выгрузить модули и проверить. Но это будет крайне не информативно, т.к. проверяться будут абсолютно все слова.
(4) Для тех, у кото ворда нет, можно использовать мою проверку орфографии.
А проверять в модулях можно строковые переменные.
(5) имена функций тоже неплохо бы проверять, хотя бы определения
Исправил код для независимости от конфигурации.
(5) Изучу, странно поиском смотрел не нашел по проверке орфографии обработок.
(5) а ссылку не дашь?
+(6) думаю для проверки модулей нужно:
1) найти регекспом все определения методов (ищем по ключ. словам Процедура или функция) и инициализации переменных (все, что в правой части содержит = , брать переменную только после точки, например из «Рек1
(9) Ошибки в названиях переменных, методов не столь важны для продукта.
Если и делать, то проверку строковых значений.
(8)http://infostart.ru/projects/3397/
(10) у меня часто бывают ошибки из-за неправильно набранной переменной, которые всплывают в лучшем случае через месяц… Строковые значения по идее вообще не должны фигурировать в коде, вместо них должны использоваться именованные константы ( не для 1С это правда =( ).
АВтор, а аВатар проверял?
(13) это ж специально
(14) Оно понятно. Но афтор прочтет, что это йад для него — и пройдет мимо :)))
(0) а можно в результат проверки добавить колонку с вариантами правильного написания? и проверять еще по английскому словарю, а то он мне на слово Word ругается…
аватар очень подходящий
По-моему, проверка орфографии модулей, форм и справочной информации — это часть функционала типовой 1С:Автоматизированная проверка конфигураций (http://users.v8.1c.ru/ACC.aspx)
(18) вполне возможно
На первом же скриншоте первая же фраза: «заголовОки надписей». Аффтар, начни с себя 🙂 🙂
(20) Эта ошибка давно исправлена, а скриншот остался старым.
Здесь только проверка в конфигураторе, не в предприятии?
Хайль спеллчек!