<?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='\
Ошибка при вызове метода контекста (Выполнить): {(7, 30)}: Несовместимые типы «ССЫЛКА»
В УПП8.1.14.72 конфа 1.2 (1.2.24.2) ошибки.
ГДЕ Об.РегламентнаяОперация <<?>>ССЫЛКА БизнесПроцесс.РасчетНДС И ВЫРАЗИТЬ(Об.РегламентнаяОперация КАК БизнесПроцесс.РасчетНДС).Ссылка есть null И Об.РегламентнаяОперация <> Значение(БизнесПроцесс.РасчетНДС.ПустаяСсылка) ИнформацияОбОшибке
Ошибка при вызове метода контекста (Выполнить): {(7, 30)}: Несовместимые типы «ССЫЛКА»
ГДЕ Об.РегламентнаяОперация <<?>>ССЫЛКА БизнесПроцесс.ЗакрытиеМесяцаУСНДоходыМинусРасходы И ВЫРАЗИТЬ(Об.РегламентнаяОперация КАК БизнесПроцесс.ЗакрытиеМесяцаУСНДоходыМинусРасходы).Ссылка есть null И Об.РегламентнаяОперация <> Значение(БизнесПроцесс.ЗакрытиеМесяцаУСНДоходыМинусРасходы.ПустаяСсылка) ИнформацияОбОшибке
РегламентнаяОперация — какой у нее тип?
млин) вчера было надо..
а механизм по удалению восстановлению, не будешь прикручивать?
у меня в регистре сведений была ссылка на строку, в которой не было регистратора (а должен) это как пофиксить?
кстати запустил в типовой БП-вылетело
Ошибка при вызове метода контекста (Выполнить): {(7, 9)}: Поле не найдено «Об.Валюта»
ГДЕ Об.<<?>>Валюта ССЫЛКА Справочник.Валюты И ВЫРАЗИТЬ(Об.Валюта КАК Справочник.Валюты).Ссылка есть null И Об.Валюта <> Значение(Справочник.Валюты.ПустаяСсылка) ИнформацияОбОшибке
Хорошо, посмотрю
Очень нужная вещь, спасибо!) 😉
нужная обработка. Спасибо
(4) исправил
(8) cпасибо!
А если это не регистратор, а скажем Партия, то механизм работать не будет?
спасибо, то что надо.
хотел только попросить для первоначальной проверки возможность добавить все типы, но потом увидел, что двойной клик по группе добавляет все типы группы 🙂
Спасибо, действительно здорово!
P.S. Первым делом добавил открытие объекта источника для просмотра по двойному клику на нем 🙂
Вторым делом добавляю возможность восстановления удаленных объектов прямо из этой обработки, с целью затем использовать поиск и замена значений… 🙂
Обработка очень помогла при переходе на БП 2.0 уж очень много битых ссылок скопилось
давно ждал эту обработку
Спасибо! очень удобно — можно быстро посмотреть, какие битые элементы справочника засветились в документах. Маленькое замечание: недоступна кнопка открытия объекта, содержащего битую ссылку, из-за флажка «Только просмотр» в поле табличного документа.
(12)
или можно просто снять флажок «Только просмотр» с поля табличного документа, начнет работать кнопка открытия объекта