<?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) Согласен с Вами. Но в инструкции разработчика содержится пароль — который надо ввести чтобы переключиться в режим редактирования правил. Вот те же документы на Google Docs:
Запустил обработку а там все пусто в поле проверок, правила подгружать не даёт, может чего не так сделал?
(4) почитайте документИнструкция для разработчика (администратора, программиста)
Грамотно написанная обработка. Даже инструкция для юзеров. Плюс от меня
По БУХ Корп. есть уже готовый файл с проверками ? В Бух. 2.0 БСП нет, значит и работать будет только начиная с БУх 3.0 ?
(8) Главное, чтобы был регистр сведений «Сохраненные настройки». Если его нет — то понадобится придумывать где хранить данные и допиливать обработку. И еще нужен справочник «Группы пользователей» с предопределенным элементом «ВсеПользователи». В УТ, КА, УПП всё это точно есть, насчет БП не уверен — и нет сейчас под рукой…
Крутая вещь! В избранное!
В прошлой конторе где я работал наши айтишники реализовали еще долбеж через СЭД ответственных за ошибки, а в случае если срок исправления пропущен долбеж переключался на руководство. Это и есть философия пенетрации в действии.
Если в форме настройки правила провалиться по «…» в окно выбора ролей и установить флаги у нужных ролей, а затем нажать «сохранить», то настройка запоминается, НО в разделе «права» в поле «роли» по прежнему пусто… Если закрыть все остальные окна по ОК и открыть заново — имеющаяся настройка все равно не отображается. Есть какое-то техническое ограничение по выводу информации?
Не совсем понятна настройка прав доступа по пользователям. Почему-то при повторном открытии все настройки исчезают.
Андрей, че то слишком сложно… я бы сделал несколько галочек, так проще пользователю и функционал все ровно ограничен…
(14) Так для пользователя там и будет несколько галочек и кнопка «Выполнить», а всё остальное — для разработчика.
(1) Константин С., По внутреннему курсу это 4*4 = 16 рубликов, одна поездка на автобусе. За такую работу и 300 рубликов не жалко. А 4 $m разработчику пригодятся для использования этого сайта…
(9) а где такой регистр сведений «Сохраненные настройки»?
(11) SunShinne, О! Вот это интересно! А где они откапывали ответственных, из документа или выискивали по ролям? А если ответственный давно уже не работает?
(18) В конфигурациях от 1С (УПП / КА / УТ / БП ) он есть. И наверняка — он есть в БСП.
(19) ответ неверный. нету этого уже в 8.3
(20) Вообще-то, это не для 8.3
Для КА 1.1 есть проверки?
Спасибо, помогает наводить порядок)