<?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='\
А скачивать только у меня не дает?
При сохранении батника — ошибка
{ВнешняяОбработка.КонструкторПакетногоЗапуска1С(25)}: Преобразование значения к типу Булево не может быть выполнено
Если ЭлКоманда.Пометка Тогда
(2) + в том случае, если не помечена ни одна команда
Интересное решение.
(2) Аналогичная ошибка. Обработка, увы, сплошной баг.
Господа — это ведь не комерческая версия. Все что от нее требуется она делает.
///это ведь не комерческая версия
ну это конечно, но привести ее красивый-аккурантый вид,и воощее цены ей не будет)))
Спасибо! Супер! Все работает и инетрфэйс удобный.
посмотрела — работает.
1.Но,что такое параметры запуска 1С предприятия ?(работает и с пустым полем).
2.Не работает сохранение BAT.(это наверное подразумевался файл настроек,или?)
3. Не помешала-бы врезка времени начала выполнения.
Все работает, только еще не хватает загрузки из файла .dt.
Но я думаю это не проблема дописать самому …
Спасибо.
Просьба автору добавить ссылку на источникhttp://infostart.ru/projects/2156/
Я что-то не пойму. А где сгенерированная строка запуска? Или bat’ник??? Куда совать файл *.mrs??? 🙁
Все, разобрался. Спасибо большое — очень хорошая вещь!
❗ Обнаружился глючок: если параметр содержит пробел, тогда он передается некорректно в файл. Например когда ИмяПользователя=Фамилия И.О.
должен заключаться в кавычки.
Спасибо большое, очень пригодилось!!!
Мне очень пригодилась эта программа. Спасибо большое! То что нужно.
Вещь просто отличная!!..единственное что 8.1 уже не актуально..не плохо было бы под 8.2 такую иметь
Батники выручают при авто-обмене
Интересная разработка. Только проблемы с кодировкой выходного файла.
Как ИНСТРУМЕНТ — обработка очень «сырая» и неудобная. Просто описание параметров командной строки запуска 1с с парой примеров было бы куда более информативно
Тем не менее, автору спасибо за вложенный труд
8.2 не работает. Надо снять публикацию или доделать.
(20) adapter, Делалась 7 лет назад. Уже и платформа та не поддерживается.
Причем уже 8.3 давно в обиходе.
Раньше работала и очень помогала.