<?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='\
Как известно в БГУ8 введен сквозной показатель — Валюта учета. Какие-то документы без её указания провести невозможно, какие-то можно. Ну а операции врукопашкую заполняемость валюты не проверяют. Плюс — перенос остатков практически не заполняет валюту учета. Таким образом по валютным счетам остатки валютных сумм становятся кривыми…
Перейти к публикации
Да любят бухгалтера ляпать ручные операции, и даже не задумываются об валюте.
замечательная обработка в помощь самим же бухгалтерам.
Только в некотрых ручных операциях была не проставлена валюта. Но быстро все исправили с помощью этой обработки.
Ох и намучились мы после переноса с этой валютой… Спасибо за обработку. Сэкономит время.
Добрый день! Создал операцию вручную в которой поставил сумму, но не указал сумма валюты, ваша обработка при нажатии на кнопку «Заполнить ничего не нашел. Может я что то не правильно делаю? Подскажите в чем моя ошибка. Заранее спасибо!
Спасибо. Сэкономил время.
Скачаю и тоже попробую. Очень нужная вещь!
Спасибо! Но обработка потребовала доработки: не учитывались документы «Сторно» и «Корректировка записей регистров». Плюс по документам с движениями, но запретом проведения, изменения не сохранялись (пришлось изменить запись документа на запись отредактированного набора движений). Плюс были сделаны ещё некоторые доработки под наши требования, но они очень легко легли на предложенный код.
(7) sodrk,
если не сложно, киньте код для «Корректировки записей регистров» с записью отредактированного набора движений.
или mvv1975 просьба отредактировать под реалии 2016 года.
(8) мастеровой, пять лет прошло, и эта штука все еще актуальна… Хм. Логичнее тогда банально пройтись по проводкам валютных счетов и проставить сумму валюты равной сумме документа. Скажем, предоставить выбор периода, перечислить больные документы и тем у которых пользователь уставит галочки заменить проводки… Ну может быть и есть смысл в подобной штуке. На досуге что-нить такое сварганю
(10) получилось? А то попалась база с косяками в валюте, есть сумма, а само субконто «руб.» не заполнено и не стоит сумма. Пока врукопашную исправляют, а так пригодилась бы.