<?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) Со всем уважением к тебе. Но это не Life ! про каких «снеговиков и снежных баб» ты тут говоришь, на дворе лето. Описание сам то смотрел — зачем 2 раза одно и тоже. Где скрины ?
Имхо, в клюшке скрин красивее, чем в бабе 🙂
(1) поправил, что-то не сразу как-то выложилось 🙂
Да, придеца нам мозги наизнанку вывернуть при написаниии в 8.2, все с ног на голову переставлять быдем.
(2) на вкус и цвет, товарищей нет.
(3) описание все равно «двоится» убери лишнее и будет тебе счастье
(4) поправил, спасибо за замечания.
(0) АктивИкс-Мозгодер еще кто-нить может написать;-) Еще ВК-Мозгодер;-) Пора уж для программистов Мозгодер написать, неустанно пишущих мозгодеры для пользователей;-)
(7) точно!
)))))))) (7) ты уже сам с собой разговариваешь — молодЭц !
(8) жара, хотца снежную бабу слепить 🙂 и не только 😀
Утомил…
(10) ты бы для начала скачал обработку хотя бы и запустил, посмотрел код для начала, прежде чем минусовать.
Это первая разборка с внешними обработками 8.2, так что зря ты минусанул. А есчо бы было клево, если бы сам хоть строчку написал под 8.2 да и выложил на всеобщее обозрение как и что в 8.2 делаеца. Можешь попробовать вывести печатную форму сам из внешней обработки, не заглядывая в мою обработку и партнерский форум.
(11)Ты не ругайся (10) сказал тебе по сути названия.
Вот если бы ты написал (как я тебя предупреждал) что это первая обратобка с внешними обработками 8.2 — новый вывод печатной формы смотрите и учитесь…
Поверь у тебя уже плюсов штук 20 было.
Один раз интересно, два-повтор, три — надоедает
(10) Арчибальд, хорошо сказал, одним словом и суть передал:-)
(11) Действительно, заканчивай чужую идею эксплуатировать:-)
Вот можно, например, просто обучаловки-статьи-примеры по 8.2 писать, в конце концов. И тебе респекта больше будет и пользы всем тоже…
(10) Утомленные солнцем 🙂
(12) Кому это надо будет, тот увидит и качнет, посмотреть как и что. А кому попой потарахтеть просто в комментах, тот пусть в тупую их (+/-) ставит.
(13) ужо пишу…
(14) См. 13-й коммент… а то резкий, как понос детский:-)
(15) посмотри в личку !!! и сделай то что я тебе сказал.
(11)Ну, тогда разложу по полочкам.
Tatitutu выложил прикол. Получил от меня плюс.
Ты напрямую перевел на восьмерку и скопипастил описание. Получил от меня критику и плюс. Мотивация: ты сделал полезное дело, обеспечив восьмерочникам доступ к приколу. Перевод функционала, наработанного в семерке, на восьмерку — вполне нужное дело…
Что теперь? В описании опять неряшливый копипаст. Новые возможности платформы (а 8.2. их таки дает) не задействованы, т.е. на иллюстрацию возможностей не тянет. Пользоваться почти некому (тех, у кого есть платформа, по пальцам пересчитать).
ТакоОоеВотМнеееЕеениЕЕ…
(18) Новые возможности платформы (а 8.2. их таки дает) не задействованы
— вот тут ты не прав на 100 %
Ты открой обработку или еще лучше напиши сам такую же.
(11) > Это первая разборка с внешними обработками 8.2, так что зря ты минусанул
Что-то мне вспомнился Тот-Кого-Уже-Нет…
Напишет фигню какую-то никому неинтерсную и гордиться как он круто все загнул в ней.
Имхо, прав Tatitutu в (12).
(20) кому не интересно тот и не минусует и не плюсует, а идет лесом мимо 😉
(21) А вот не надо мне говорить, куда мне идти.
> кому не интересно тот и не минусует и не плюсует
это я исправлю сейчас 😉
(21) какой ты настырный !!! Это похвально но не всегда.
Скажу прямо ты уж не обижайся
только как пример (ничего личного)
лежит куча говна (даже без бумажки) а в ней лежит алмаз
, но про него знаешь только ТЫ.
И вот ты стоить и думаешь, какие люди идиоты и не видят своего счастья.
а вот если бы ты написал
Алмаз хоть и измазанный в ….. это было бы более интересно
ты пишешь мне (из личного)
РеквизитФормыВЗначение(«Объект»).ПолучитьМакет(«Макет»); — догадаться на счет этого не так просто было 🙂 Тем более в документации ни слова про работу с внешними обработками не написано.
Вот это изюминка — этим и гордись что нашел и победил.
(22) ноу проблем, отрицательный результат, тоже результат 😉
(23) с чего ты взял что я на кого-то обиделся 😉 ?
(24) что-то глючит, не могу минусануть. Попробую комменты. Не против?
Исключительно в целях диагностики.
🙂
+(26) упс.. получилось наконец-то…
(26) нет конечно же, не против 🙂
согласен в принципе со всеми, впредь обязуюсь выкладывать более полезные весчи.
ушёл за мороженным 🙂