<?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='\
Проще прописать команду.
/С ЗапуститьОбновлениеИнформационнойБазы
Прикреплен скрин, где ее можно ввести.
p.s
«С» после слеша Eng.
ДА действительно куда уж проще
этот параметр работает только в монопольном режиме
(1) lotan,
/C «ЗапуститьОбновлениеИнформационнойБазы»
замени в сообщении /C на латинскую C. А то я копирнул от Вас, и долго парился с параметром, а оказывается на русском она))))))
не работает…
(5) elian, какая версия конфигурации?
Если конфигурация нетиповая. Сильно нетиповая. Ничего не слетит? Откуда вообще такая ошибка появляется?
Как увеличить размер картинки?
(7) setre, обработка обновляет только справочник Идентификаторы объектов метаданных, ваши доработки не будут затронуты, если доработки не затрагивают этот справочник
(8) tomi84, о какой картинке идет речь? картинка вторая к публикации — это окно сообщения об ошибке, для исправления которой предназначена обработка. Просьба если у кого-то не работает обработка, указывать номер релиза
Скрин со второго сообщения у меня не открывается, поэтому в списке баз, на нужной базе, щелкаем настроить, щелкаем далее до конца и там в дополнительные параметры запуска вставляем: /C ЗапуститьОбновлениеИнформационнойБазы
Раньше я как помню в справочнике идентификаторов была кнопка «Обновить», проблем с этим вообще не возникало, зачем убрали не понятно(
В чем отличие от обработки ИнструментыРазработчикаОбновлениеВспомогательныхДанных.epf из Инструментов разработчика поставки БСП?
(13) ColaKola, не смотрела обработку из БСП, просто написала обработку с вызовом процедуры обновления Идентификаторов Объектов Метаданных
Молодцом +1, пригодилось — отработала 2я кнопка для поздних версий Розница 2.1
Спасибо.
Для тех кто использует в более новых релизах, начиная с 3.0.44.xxx необходимо исправить функцию в модуле формы иначе рабтать не будет.
добавлен параметр «Полный», так же возможно указать «Частичный»
(16) Sergeevich,
Тоже исправил в модуле процедуру
Огромное спасибо, очень помогли. Ситуация возникла после переноса справочников стандартной обработкой ВыгрузкаЗагрузкаДанныхXML83.
С параметром «/C ЗапуститьОбновлениеИнформационнойБазы» обновление работает
Исправил на латинскую «/C»
Обновлял КА-2.0 после наложения своих наработок : новый вид документа был добавлен
Good большое спасибо
Запустил, пишет:
После обновления версии программы возникла ошибка: Неверный формат хранилища данных.
Что делать с этим?
Мне вот ничего из вышеперечисленного не помогло. Сильно вникать времени не было, так как проблема была в редактировании (не открытии а именно в редактировании) некоторых элементов справочника внешних обработок пришлось их удалять и добавлять заново. При обновлении сменился состав подсистем и новые элементы не прописались в объектах?
1С:Предприятие 8.3 (8.3.13.1513)
Аренда и управление недвижимостью для «1С:Бухгалтерия 8», редакция 3.0 (3.0.65.84/3.3.3.125)
Канитель случилась после обновления и платформы и конфы, 3 релиза подряд ставил с выполнением всех обработчиков, но что-то не срослось.
(22) такое можно почистить групповой обработкой. В элемент справочника были записаны старые подсистемы из-за этого обработка перестала открываться через элемент. Я просто удалял все строки в таблицах и проблем не было!
(23)А как удаляли?
(24) там даже удалять не надо просто очистить идентификатор в одной из таблиц. Закинь скрин скажу точнее. По памяти не скажу.
Вот мне нужно все помеченные удалить. Иначе ругается на ненайденную ссылку…
(26) укажите конфигурацию и версию
(21) напишите какая конфигурация и версия платформы. И приложите скрин ошибки, если ещё актуально.
БП 3.0 Версия 3.0.60.59
(3)
Создайте кнопоку на форме.. «ВыполнитьПересчетМетаданных»
Показать