<?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='\
Спасибо, все выдает на пять +
Ура !
(2) Ну ты сказал 😮
и уже подредактировал для УСН-77 (см.ниже — прикрепленный файл)
(4) Все равно пристанет. Не найдет в Лайфе 😐
Арчибальд всё донкихотствует . По заказу дам.
Отнюдь. Я не дон Кихот. Просто благородный дон.
© Стругацкие. Трудно быть богом.
(6) А самому-то слабо!
Дам боимся :{}
(8) Пристыди его в личке дополнительно 😉
(8) Доня , Вы должны знать .
Я развлекаю дам умными разговорами — Арчибальд развлекает дам ВПФ.
Другого рода развлечения может представить Абадонна.
Вместе мы сила !
(10) Вместе ? 😳
Вряд ли Абадонна будет сотрудничать 😀
(11) Почему не будет ?
Вперед пустим Абадонну , потом я развлеку умной шуткой и как финал -ВПФ от Арчбальда.
Хм.. вот это настоящая презентация печатной формы от Арчибальда.
Уверяю , кавалер «три в одном» должен даме понравиться.
Твой же подход : «нате вам ВПФ !» смотрится местечково, провинциально и без изюминки.
Если появляюсь я — там уже кавалеры не требуются 😀
Наоборот, надо еще дам подтягивать 😀 😀 😀
Арчи, жаль, что в лайф. А то можно было сделать еще:
просто запрос к бухитогам по 10 счету
просто запрос к бухитогам по 50 счету
просто запрос к бухитогам по 51 счету
просто запрос к бухитогам по 25 счету
просто запрос к бухитогам по …………..
РЕЙТИНГ бы набрал ❗ 😉
Дамы, открою страшную тайну, где-то у меня валяется моя универсальная
Просто запрос к бухитогам по любому счету, с разворотом по всем субконто, какие есть у счета 😉
(13) Вот что-то подобное я и имел в виду в (11) 😐
(14) Бухгалтеры — это наша среда обитания. Их лелеять надо (здесь не уточняй 😉 ❗ )
(15) Не прокатит 😀
Ты бы еще универсальный бух отчет с ИТС предложил 😉
(17)не прокатит, точно! это была моя функция для внутреннего потребления, возвращала ТЗ заполненную, а самое страшное — ничего не печатала красиво. и не было форм цвета хаки 😉
(18) А в использовании купоросного цвета тебя замечали 😉
(19) зато там, на купоросе, ни единой красной строчки 😉
(13),(14),(15) Ага !
Арчибальд , а ты заметил , что в (10) употреблено слово «представить» , а не «предоставить» ?
(21) Кого на ламера пингуешь? 😀 😀 😀 😀 😀 😀 😀
(22) А того и пингую..
Чую завалишь ты «тройную» презентацию. Не дотерпит она до Арчибальда.
Скажи честно … ведь перво -наперво скажешь даме :»А те двое за мной — полные чмошники.. !» .
(23) Не прав! Я свято чту мужскую солидарность 😉
(24) Ок !
Вас читать — сплошное удовольствие 🙂
(26) Это мы еще не в ударе 😎
(27) Ты в личку заглядываешь когда нибудь?
(28) ❓ ❓ ❓
А дамы молчат!
Эй, где дамы? 😮
Кавалеры оказались разговорчивее.
И эти люди запрещают мне ковыряться в носу? (с)
Ни внятного описания ни внешнего вида. Что за кот в мешке? Не конечно если рассматривать инфостарт, как файлопомойку, то тогда пойдет
(31) Так и есть. Запрещаю .
Это Life . Даме понравился «кавалерский» отчетик — и это главное.
Оличная штука, спасибо ставлю+
Спасибо!А нельзя ли сделать расшифровку сумм прописью? 😳
(34) Это в каком же месте?
Спасибо! Отчетик +. А если бы столбик «Начисления» расшифровывался в том числе и по Видам начисления, было бы очень здорово. Если можно, доработайте пожалуйста.
Спасибо огромное за такой отчет! Постоянно выписываем такие справки, очень нужная обработка!
Спасибо большое очень выручили.
классная штука, давно хотела написать спасибо, но вот с опазданием