<?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='\
Для этих целей есть прекрасная программка. setupb1c.exe . Пользуюсь уже много лет. Поставил всем своим клиентам.
http://www.aqtech.com/ru/download.html .
http://www.effector.com.ua/ . Мне больше нравится релиз 2.06.39.
Ограничения — dbf и размер архива — до 4 Gb.
Для SQL и больших баз — saversetup
Утилиту от aqtech я тоже знаю, но юзаю её только для автоматического бэкапа по расписанию. А Zipacker задумывалась как переносная маленькая утилита, которая всегда с собой на флешке, либо по горячей клавише упаковывает базу из ОпенКонфа (как-то так). Да и вообще… хотелось просто сделать что-нибудь полезное для себя (а возможно и кого-то ещё) своими руками.
Скачал и установил Для SQL и больших баз — saversetup http://www.effector.com.ua/.
При настройке архивации — добавить файлы для сохранения выбираю папку с данными 1с
Касперский обнаруживает троян Exploit.Win32.CVE-2010-2568.I
Может глюк Касперского(базы обновляю ежедневно), но пришлось прогу удалить.
Касперский всегда отличался «умом и сообразительностью», и зачастую обнаруживает много лишнего. Просканируй файлы другим антивирусом, если ничего не обнаружится, внеси прогу в исключения Каспера. ПопробуйCureIt .
Уже 53 скачавших, а толковых комментариев и оценок практически нет 🙁 Не молчите.
хм… Cobian BackUp фриварная и нормальная, +теневое копирование, распиание, очередь, скрипты до и после, и еще всякого — юзаем в двух офисах для дбфных баз и прочего. скульное архивируем штатно
вот если прикрутишь к конфигуратору — тогда будет смысл… типа в конфигураторе жмакнуд кнопку — задал коммент к архиву — сделалось…(либо с неограниченной вложенностью архивов, либо ограниченный стек — ПО ВЫБОРУ!!!!) — тогда удобно будет!!!!!
С Новым годом! Неплохо бы паковать из открытых баз т.е. сохранить в ТЕМР, а затем создать архив. А так просто и элегантно..
вот если прикрутишь к конфигуратору — тогда будет смысл… типа в конфигураторе жмакнуд кнопку — задал коммент к архиву — сделалось…(либо с неограниченной вложенностью архивов, либо ограниченный стек — ПО ВЫБОРУ!!!!) — тогда удобно будет!!!!!
Попробую сварганить чего-нть.
С Новым годом! Неплохо бы паковать из открытых баз т.е. сохранить в ТЕМР, а затем создать архив. А так просто и элегантно..
Постараюсь реализовать, но это будет иметь смысл в прикрутке к конфигуратору.
Спасибо за комменты.
Кстати, приблуда понимает ключи:
«Путь к базе в кавычках»
-s — silent mode
Вот тут поддерживаю на все сто. В любом случае, лишняя утилита лишней не бывает 😉
У себя главную базу архивирую так:
1. Средства скуля -> rar в файл с началом имени ГГГГММДД.
2. Сама база(папка) — тоже rar с добавкой к имени «cgf»
Я использую скрипт на VBS, но для рядовых сотрудников не плохо.
Еще добавить параметр куда складывать, все архивы.
Еще добавить параметр куда складывать, все архивы.
Резонно. Попробую добавить.
Вот и правильно! Не надо изобретать велосипед, когда есть WinRAR! А для тупоголовых: почитайте справку WinRAR. Лично я ЗАМУДОХАЛСЯ восстанавливать из нерабочих архивов вышеписавших мудозвонов! Которые пишут всякие дебилы, и берут за это с клиентов МОИ деньги! Так вот, такие архивы работают только до того момента, пока они не понадобились!!!!!
(14) Пока ставлю на вид, что подобный тон абсолютно недопустим на ресурсе. Правила никто не отменял даже по случаю праздников.
Это первое. Второе:
1. Рар стоит денег, а если автор зипует бесплатной ВК — есть смысл задуматься.
2. Поддерживаю высказанное — если автор прикрутит обработку к 1С, обещаю твердый плюсик.
(14)
Уверен, что твои? Может это ты еще должен клиентам доплачивать, чтобы они соизволили тебя пригласить?
Еще раз такие высказывания — и отправишься в баню, т.е. на бан
Кажись,14 товарисч не на тот форум попал.
Еще добавить параметр куда складывать, все архивы.
Реализовано в v.1.5 Спасибо за идею.
вот если прикрутишь к конфигуратору — тогда будет смысл… типа в конфигураторе жмакнуд кнопку — задал коммент к архиву — сделалось…(либо с неограниченной вложенностью архивов, либо ограниченный стек — ПО ВЫБОРУ!!!!) — тогда удобно будет!!!!!
Испытываю идейный запор — need help! Каким образом реализовать.
(0) Попробую на своих базах. Для разработчика — нормально.
Хочу ещё сделать, чтоб можно было редактировать список баз, да руки всё не доходят.
(0) Пользую только для архивации текущих разработок. В других режимах хуже : остаются процессы.
(22) kompas-dm,
Поподробнее давай, недопонял…
(23) Win 7, 64. Стартую базы монопольно (несколько), выхожу. Повторный запуск — завис или каталог пользователя занят. Смотрю диспетчер — остался процесс …
К сожалению, у меня нет возможности проверить работу проги на х64, так что давай ещё подробнее — процессы чего висят — Зипакера или 1Ц?