<?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='\
Спасибо, полезная штука 🙂
Пишет при проверке GUID:
Поле не найдено «Спр.Код» Спр.<<?>>Код,
(2) Предполагается, что у справочника должен быть реквизит «код», во всех типовых конфигурациях он есть. Какой справочник пытаетесь анализировать?
Реквизит Код есть всегда :)) Это обязательный реквизит справочника. Странно, посмотрел код обработки — должно работать, найду причину — отпишусь
Вещь полезная, помогает понять принцип этих обменов, спасибо
а какое практическое применение??? не вижу полезного ничего
(6) О практическом применении написано в описании. Если полезного не видится,
никто скачивать не заставляет :).
специально скачал, перед тем как писать комент, и так и не понял че делать с ее помощь, одно только полезное увидел — удаление записей в регистрах если нету ссылок, но когда они быают??? если конфа криво написана, тогда да или план обмена тоже также составлен…
Типовая помощней будет. Единственно, что отвязывать главный узел не умеет.
http://infostart.ru/projects/2639/
Типа этой:
спасибо, очень помогло при обмене глюк исправить
плюс авансом 🙂 надеюсь работает как описано, очень нужная вещь 🙂
Скачал и опробовал обработку для разъединения РИБ большого объема, обновления каждой почки независимо и последующее объединение. Интерфейсная часть выполнена приемлемо, все возможности обработки доступны и легко используются
авансом плюс! Удачи!
Спасибо, очень полезная штука. Помогла в критический момент
Регулярно пользуюсь, благодаря динамическим обновлениям и их глючности )
Часто после применения изменений на удаленных узлах, центральный отказывается принимать обмен пока не накатишь cf-ник в ручную.
Очень нужные обработки, т.к. штатными средствами это сделать намного труднее.
А тут весь функционал, за пару нажатий — все можно сделать, отсоединить-присоединить. Установить Главный узел и прочее.
Спасибо!
Хорошая нужная обработка. Очень проста в использовании, решает сложные ситуации с РИБ. Спасибо
Спасибо, очень помогла! А как насчет доработки функционала?
(18) vprus, какие будут пожелания?
Спасибо!
год уже 2014
обработка стоит дата 2013, платформа 8.1. Кому она нужна сейчас, если она не работает на 8.2
(21) communist, Все легко конвертируется и работает также в 8.2, откройте файл в конфигураторе…
При открытии выдает «ошибка подключения внешних метаданных, внешние метаданные не могут быть прочитаны». 1Розница, редакция 2.0.8.12, поатформа 1С:Предприятие 8.3 (8.3.5.1428) . Открываю Файл-открыть. Она не подходить или я что то не так делаю? Сделал конвертацию через Конфигуратор. Теперь при открытии пустая форма.
Разобрался, переключил пользователя в обычное приложение
у Вас в арсенале не будет такой же для 8,0 / ут 10.2 ?
если что пишите element_ooo@mail.ru