<?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='\
Тема актуальна, плюс
бух 2.0.12.2 не работает!
Ну дык пока в работе релиз если я не ошибаюсь 1.6 (1.6.24.7)…
релиз 2.0.12.2 бета пока что — так что на ентом релизе не тестил
(4) Обработка помечает на удаление документы в которых поле Организация, не равно выбранному значению, используется Метод «УстановитьПометкуУдаления(Истина)», то есть этот метод делает документ непроведенным!!!
После чего все документы удаляются стандартной обработкой «Удаление помеченных на удаление», вообще писано все на скорую руку — но будет пара часов свободных, постараюсь оптимизировать код и заточить под максимально возможный спектр конфигураций, а так — можете дорабатывать у кого руки откуда надо растут
(3) нет, 2.0.12.2 не бета …
Все придумано до нас
http://www.infostart.ru/public/20396/
Самый простой способ для БП это создать узел по плану обмена по нужной организации и создать первоначальный образ. И документы почистятся, и справочники, и регистры причем очень быстро. Проверено на базе в 40 ГБ., 70 организаций.
А я свое время для этих целе приспособил тивую обработку с ИТС «Поиск и замена значений»… просто добавил кнопку пометить на удаление выбранного и усе… а потом удаление помеченных…
(8) У меня для БП или для ЗиУП не удалось расчленить организации по созданию образов… слишком много мусора получилось во вновь созданных базах… в результате воспользовался свое доработанной обработкой и получилось просто быстрее… 🙂
Я скачал файл без разрешения, поставил .epf не открывает 1с 8.1, это и не архив. Так что это ?
Программа лажовая. Многие документы остаються.
добавил .epf и в 8.2 всё работает !
Да не все удаляет … надо доделать чуть чуть !
Автору спасибо !!!
однозначно плюс, самому писать не пришлось и то что код открытый, а то дописать пришлось что бы и справочники со ссылкой на организацию поудалялись типа Договоры контрагентов
Бухгалтер поставила задачу: нужно было отдать базу БП сторонним разработчикам, оставив в ней только документы по одной организации по выбранным контрагентам (3 штуки).
Пришлось повозиться, причем в основном с поиском готовых обработок.
Для удаления информации по другим организациям использовал эту обработку:http://infostart.ru/public/333528/ (Обработка для пометки на удаление всей информации, связанной с помеченными на удаление организациями. Работает с «1С.Бухгалтерия предприятия» 1.6 и 2.0.). Хотя можно было попробовать и специфическую: http://infostart.ru/public/70660/ (Очистка БД от документов всех организаций (фирм) кроме указанной).
Для удаления документам по контрагентам использовал лучший на мой взгляд общий журналhttp://infostart.ru/public/69707/ (Универсальный журнал документов для 1С 8.1, 8.2 и 8.3 (3.20.1.8))