<?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='\
замените файл рисунка на файл обработки
Да, обшибся маленько.
Заменил.
организация не подставляется в поле «Организация» печатной формы. так и задумано?
Исправил.
А у меня не заполняется печатная форма там, где адрес организации и куда выезжал…
(5)
Адрес организации и телефон (в графе «Наименование организации, адрес, номер телефона») не заполняются потому, что все вышеперечисленное не вмещалось. И я оставил только наименование.
А адреса в таб. части у вас не заполняются судя по всему из за того, что они должны быть заданы «в формате КЛАДР», а у вас похоже забиты вручную.
Добрый день!
А как же быть с печатью? В печатной форме тоже не заполняется правая сторона. А ведь нужно.
(7) Я же уже ответил Вам в 6 сообщении. Чтобы заполнялась правая сторона — адреса контрагентов, к которым ездил водитель, должны быть введены в «формате КЛАДР».
Обработка хорошая…
А нет случайно для БП 2.0? Очень хотелось бы 🙂
(9) Я не знаком с БП 2.0, но если там есть регистр сведений «Сохраненные настройки» то, я думаю, будет работать… Если нет — могу и подкрутить — за соответствующее вознаграждение 😉
а у меня всё работает, всё прекрасно… спасибо! это щастие! 😀
Пожалуйста 🙂
Как мало оказывается надо для щастья 🙂
Пожалуйста 🙂
Как мало, оказывается, надо для щастья 🙂
Хочется на платформе 8.2 😀
(14) Я думаю — ничего сложного переделать не будет…
Не знаю только — где там можно будет сохранять необходимые данные…
Какой нибудь аналог регистра «СохраненныеНастройки» там есть ?
Спасибо. Помогло.
(15) Да, в БП 2.0 есть регистр сведений «Сохраненные настройки».
Не нужно никакой переделки, достаточно просто сконвертировать обработку под конфигуратором 8.2.
У меня всё работает, спасибо за обработку — на ее базе сделаю документ и вообще подсистему путевых листов, с регистрами и отчетами. Не пойму, почему разрабы не предусмотрели это штатными средствами.
Спасибо! Пригодилась
Обработка хорошая…
А нет случайно для БП 2.0? Очень хотелось бы
Очень нужная вещь. Кто-нибудь тестировал в конфигурации Бухгалтерия предприятия 2.0?
Отлично, то что надо!
полезная обработка!
Пригодилась, просто для себя подправил немного)
даешь еще десяточку)
Странно, скачивается как «PechatjPutevogoLista.ert» при этом ни 8.1 ни тем более 7.7 (судя по расширению) не открывается. Что за чудо? Можете перезалить?
(25) Что то не то у Вас скачалось… Файл называется ПечатьПутевогоЛиста.epf
Только что сам его скачал — в 8.1 открывается.
Было бы удобно если путевые листы можно было бы сохранять во внешнем файле. Нет ли такой обработки?
(27) При необходимости все можно сделать…
Хорошая обработка, допилю под себя малость) Сделаю Таблицу куда едим ввиде журнала, добавив поле дата и водитель с машиной, а еще вид топлива, чтоб удобней свести инфу вконце месяца. В целом гуд одобряю))) Простенько и совкусом, автор молодец!!!!!!!
Добрый день!
Возможно ли сделать эту обработку, как ВнешняяПечатнаяФорма к Авансовому отчету?
Да возможно, при и наличии программиста под рукой)))
Спасибо, ждем обработку для 8.x…
Зачем ждать ?
Можно и самостоятельно дописать.
Код открыт 😉
отличная обработка. мне очень облехчила жизнь
отличная обработка. мне очень облегчила жизнь..большое спасибо разработчику
отличная обработка. мне очень облегчила жизнь..большое спасибо разработчику
Так все заполняется нормально или нет?
Хорошая обработка, допилю под себя малость) Сделаю Таблицу куда едим ввиде журнала, добавив поле дата и водитель с машиной, а еще вид топлива, чтоб удобней свести инфу вконце месяца. В целом гуд одобряю))) Простенько и совкусом, автор молодец!!!!!!!
А Вы переделывали ее под себя или нет?
Странно, скачивается как «PechatjPutevogoLista.ert» при этом ни 8.1 ни тем более 7.7 (судя по расширению) не открывается. Что за чудо? Можете перезалить?
Скачала, у меня тоже нигде не открывается.. В чем дело? кто может подсказать с помощью чего открыть? или с помощью какого документа?
Должно быть расширение epf и все будет работать
(18) Спасибо за подсказку! 🙂
Открылась обработка в БП 8.2.
И еще одно спасибо автору!!
Обработка помогла, спасибо. Жалко нет возможности печатать раздельно 1 и 2 сторону.
Путевые листы для легковых и грузовых автомобилей отличаются. Здесь только одна форма — для легковых?
Печать на двухстороннем принтере?
(42) Да, форма только одна. Для каких автомобилей — не знаю. Какую дали — такую и нарисовал )). У нас с этими путевыми листами ездят мини-грузовики типа газели.
(43) На одностороннем.
Понятно. Спасибо.
спасибо разработчику нужная обработка бухам облегчила жизнь..большое …..
использую в работе спасибо
Вы обращали внимание из города в область неверно считает. Если по городу — то все ок, а если выезжает из города в область считает только до окраины (Нижегородская область). Что может на это влиять (Адреса все из КЛАДРа)
(48) На это влияет мерзкий сервис Карты Мэйл ру — который неправильно считает километраж.
В Москве и по городу считает не правильно.
Я писал им в техподдержку — они не отвечают.
Надо бы обработку переделать на Яндекс Карты — они хорошо работают даже с адресами в произвольном формате…. да все как то не соберусь…
Подскажите, знающие люди.
Версия 8.1., версия 8.2 один результат — при подтвержении адреса доставки пишет «Преобразование значения к типу Число не может быть выполнено». (Адрес из КЛАДР, КЛАДР обновлен).
Что может блокировать расчет расстояния?
(52) При расчете адреса программа обращается к интернету — к сервису Карты Мэйл ру. Если у Вас есть какие либо ограничения с интернетом — может возникать ошибка.
Вообще расчет расстояний у Мэйл ру — работает ОТВРАТИТЕЛЬНО (как впрочем и все остальное у Мэйла). На него нельзя ориентироваться. У себя на работе я переделал на Яндекс.
Яндекс — молодец — он правильно считает даже без КЛАДРа.
Сюда Яндекс не выкладывал — т.к. обработка не универсальная — надо допиливать — чтобы в любой базе работала.
Если с интернетом все в порядке — пришлите адреса — откуда куда едете — я проверю у себя на компьютере.
Ограничений с интернетом нет.
Вставляю этот блок из Расчет расстояния между адресами в формате КЛАДР
«Российская Федерация, государство» — не всегда в ответе бывает надо добавить (обратите внимание)
//%%% SolarGard — начало
ДанныеСКоординатами=СтрЗаменить(ДанныеСКоординатами,»; ‘, CntrLat: «,СимволРазбиения);
//%%% SolarGard — конец
пишет «Ошибка в адресе», посчитать не может, убираю его — беда с преобразованием в число …
адрес в поле с КЛАДР выглядит
,350001,Краснодарский край,,Краснодар г,,им Фурманова ул,3,,