<?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='\
А чем стаднартная обработка «Удаление помеченных объектов» не угодила?
На диске ИТС есть такая же «Удаление помеченных объектов_8.1.epf»
(1) А попробуй удалить когда в базе есть пользователи
(2) А я его видал? 😉
(1.2) При ходит наш восьмерочный программист (я семерочный) и говорит: «НИГДЕ не могу найти разработку для удаления помеченных в немонопольном режиме». У него и ИТС и все остальное, однако говорит — «НИГДЕ» .
(4)
Не верь плохим восьмерочникам. Он диск ИТС либо не открывал, либо плохо искал.
Ваще-то он достаточно ленивый, чтобы день поискать, чем за час написать 😉
Но я не в накладе — порулил на 8-ке немного :)))))
Было бы интересно, если можно было удалать объекты и их ссылки (и объекты с этой ссылкой) , например почистить справочник Организаций
(7) там доделать под себя — как два байта отослать 😉 код открытый — дерзай. мне пока без надобности, мы еще на 7-ке сидим
Добавлен файл УдалитьПомеченныеОбъектыAdv.erf.
Отличия:
1. Сразу блокируются все объекты из помеченных
2. Производится попытка установить Монопольный режим, в случае успеха производится штатное удаление объектов
3. Добавлена возможность установки блокировки доступа к базе
Мммм… Аркадий, а я помню кто-то очень ругался на 8ку 🙂
А теперь смотрю и сам на ней пишешь.
(10) Не пишу, а тренируюсь. А так: ваще любое 1С — говно, хоть 2, хоть 6, хоть, 7, хоть 8
Подскажите, кто-нить особо одаренным откуда мона скачать файл (обработку). Шапку таблицы вижу, а нижней части таблицы нет, везде потыкался, не вижу нигде.
Даю подсказку: Ставь плюсару и Абажонна восстановит файл для скачивания.
(13) Не дури, Кушнир 😉 Листер действительное полезная вещь, а эта обработка — проходняк. Чуть лучше перенумератора
(14) Но если кто-то качает, значит кому-то это нужно….
(15) Листер из зарегенных на сайте смогут написать 5-10 человек, эту лабуду — любой неленивый
(16) Дык неленивые и не качают…
(13) Плюсару поставил, прошла уже неделя, однако Абадонна почему-то молчит и не реагирует, как-будто он здесь ни при чем!!!???
Абадонна, может прояснишь, наконец, ситуацию?
(18) Погодь, а я разве должен отвечать по идиотским кушнировским шуткам? (13)
Давай мыло, в личку скину, а насчет восстанавливать — дык я еще на тропе войны, пока не собираюсь
(19)
Тропа закончилась?
так захватывает, прямо сантабарбара… уважаемые, а мжете подсказать где почитать про начало войны ? 🙂 жуть как интересно!!!
(22)>Только непонятно, чем два файла отличаются друг от друга, напиши в описании.
В продвинутом (adv) добавлено блокирование объектов, помеченных на удаление (сразу после построения списка), и блокировка входа в базу (по желанию). Плюс в adv производится попытка установить монопольный режим, в случае успеха просто производится штатное удаление
Показать полностью
А удалить организацию можно этой обработкой или нужно писать другую обработку? Ответьте пожалуйста. Заранее спасибо!
Для удаление организации пользовалась другой обработкой. Все прошло успешно.
Можно взяьб за основу, но….
Обработка конечно хорошая, однако следует четко осозновать что удалаешь, так как контроль ссылочной целостности теряется
(29) Как раз НЕ теряется, так как не станет она удалять объект, на который есть ссылки. Иначе какой бы в ней прок был? Тупое удаление можно было проще написать
Не очень продуктивна обработка. Долго удаляет, можно использовать и стандартную, а эту если сидят пользователи
(31) Кхм… А зачем тебе использовать ЭТУ, если пользователи НЕ сидят? Ясен Арафат, что если они НЕ сидят, надо стандартной.
И кроме того:
Хорошая и удобная обработка, постоянно ей пользуемся, бухи ее очень любят) Только вот, если есть по удаляемому объекту записи в каких-нибудь регистрах сведений, то ничего не удаляется, приходится самой чистить регистры, потом снова удалять объекты..
а для 8.2 подойдет?
(34) xten, вообще-то я и на 8.1 не шибко её пользовался 😉 Но, думаю, просто открыть в конфигураторе 8.2, согласиться с конвертацией — и все должно заработать.