<?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='\
Конечно желание бухов «закон» и формировать взаиморасчеты по Бух.регистрам «правильно», но это УПП и проводки в ней вторичны.
За создание аналитического отчета плюс.
Хороший отчет Вот бы еще секция ИТОГ была
Подскажите, плиз, выгрузить в Эксель возможно?
Да, можно. Вверху есть кнопочка «Режим копирования». Её надо нажать, тогда можно или записать в файл через меню файл — сохранить как… или можно выделить мышкой и скопировать в буфер обмена Ctrl-C , перейти в эксель и там вставить Ctrl-V
(5) Спасибо за ответ. Так и думала, что предусмотрены стандартные способы выгрузки… но ничего из указанных способов не работает. В режиме копирования не активны: файл сохранить, файл сохранить как… . Выделить мышкой дает но копирование тоже не активно — что я могу делать не так? Спасибо.
(5) Дружище! только что скачал твой отчет, спасибо конечно, но КАК СОХРАНИТЬ результат! я финансирование на эту обработку попросил лично у своего руководителя… и как пардон я теперь объясню ему что мы скачали красивый отчет, который невозможно использовать по назначению?!
Устрани эту ошибку или мы запросим деньги обратно!
Написал уже на личку, но повторю здесь.
Вверху слева есть кнопочка надпись Режим редактирования. Когда её нажимаешь, то отчет можно сохранять или выделять мышкой и копировать, но выключаются расшифровки. Еще раз нажимаешь — включаются расшифровки, но сохранять и копировать нельзя.
добрый день! а как быть если организация большая, и вначале мы получаем банально сырье и материала а потом спустя некоторые время приходят документы и уже на основании этих документов бухгалтера делают разноску
я так понимаю это промежуток до разнесения не будет учтен в отчете?
(8) Уважаемый разработчик, «галочка» и «кнопочка» не работает. нажимаешь ее — и ничего не происходит, поле «сохранить как…» в меню «файл» остается неактивным… ты уж прости если что не так, и я еще раз пишу об имеющейся проблеме, но факт есть факт. если бы все работало, я бы и не писал здесь. достаточно пытливая у меня мозга, я то уж все там перещелкал и так и сяк — но не работает….
Скачал, проверил, на УПП 1.3.105.2 работает.
Спасибо, помогло.
А копирование, действительно не работает.
ВНИМАНИЕ! Чтобы работало скопировать-вставить, нужно в процедуре ПриОткрыти() заменить в 36 строке Защита = Истина; на Защита = Ложь;