<?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='\
такая обработка очень хорошая штука в работе 🙂
У меня у самой такая.
В вашей понравилась идея списка журналов 🙂 А то в моей по умолчанию зарплата и все.
ТОлько вот если нужен январь 2000г. замучаешсья давить на кнопочке. Можно сделать период по дате. В окошке просто писать дату, например 17.01.00 — установит январь 2000. Удобнее и тыкать не надо на кнопочки.
> ТОлько вот если нужен январь 2000г. замучаешсья давить на кнопочке.
При написании обработки предполагалось, что исправляться будут периоды полгода-год назад. Т.к. она писалась второпях, проще было написать так как есть.
Помогло в работе, спасибо +1
Спасло!!!
Ура!
Ребят, вы что тут прикалываетесь что ли? на 1с.proclub.ru есть обработка «Редактор журнала расчетов» и смена периода в нем это скорее 1% функционала! Я бы советовал автору не зарабатывать себе популярность на обработке написание которой занимает менее 30 минут.
Спасибо, выручили.
Спасибо!
молодцы
Спасибо огромное. Спасены расчетчики от гнева главбуха.
Спасибо ..сработало как нужно
Даж удивлен ..быстро и просто 🙂
Спасибо ..сработало как нужно
Даж удивлен ..быстро и просто
Тупеют адинэсники просто на глазах… Писец…
Вот сделал для себя что-то подобное, только в моем случае смена периода происходит сразу, при нажатии кнопок << или >>
Спасибо.очень-очень помогла
Спасибо! как раз занимаюсь поиском подобного решения, т.к. необходимо из за смены ставки страховых взносов делать перерасчет зп с января месяца
ну хорошо, откатились без потери данных, исправили что-то, всё равно же придется перерасчитывать, т.к. данные поменялись, и как тут быть? все расчеты изменяться за старые периоды, в чем тут радость?
Как раньше без неё жили? Спасибо.
Спасибо ..сработало как нужно
Даж удивлен ..быстро и просто
ну отличная обработка, если только не злоупотреблять ею )))
(6) romankoav, ссылочку сможешь дать?
(21) romankoav, спасибо =)
«Ребят, вы что тут прикалываетесь что ли? на 1с.proclub.ru есть обработка «Редактор журнала расчетов» и смена периода в нем это скорее 1% функционала! Я бы советовал автору не зарабатывать себе популярность на обработке написание которой занимает менее 30 минут.»
Ребята не надо критиковать ,мне здорово пригодилось, автор старался, между прочим и для нас тоже. была скачана -осталась на работе обработочка, а дома поработать взялась и другие обработки не понравились, пусть я потеряю денюшку ,н оскачаю второй раз и воспользуюсь тем ,что мне очень понравилось.
Спасибо!!!
+++ спасибо за обработку
Завтра будем проверять
спасибо помогла
супер-полезная вещь, даже ссылался на нее в своей статье про ЗиК:http://infostart.ru/public/313564/