<?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='\
Попробовал — работает. Довольно неплохое и функциональное приложение получилось…
Пригодился RAS хоть для тестов, а то поставил — хотел посмотреть как оно из командной строки и понял, что никак!
Идея отличная! Надо будет попробовать
На версии 8.3.9.2170 64бит не работает приложение, выходит ошибка «com._1c.v8.ibis.service.V8ServiceException»
(3) Это не платформа… У меня такая же и то-же х64. И работает.
А какие еще могут быть причины ошибки из (3) ?
У меня несколько серверов на разных версиях платформы. Ни к одному не смог подключиться.
(5)
У меня несколько серверов н
Сложно сказать без дебага. В каком момент кидает ошибку? Киньте полный текст ошибки и настройки подключения к RAS
Спасибо за статью и прогу! +100500 в карму
(7) Можете отзыв на маркете оставить )
вчера выложил 5 версию.
(6) А можно ссылку на первоисточник, если есть? Мне хотелось бы почитать поподробней про ras
(9)
Конечно, но вам понадобиться доступ к ИТС
https://its.1c.ru/db/v838doc#bookmark:cs:TI000000189
Также, теоретически, описание должно быть в книжке по администрированию, которая идет в коробке с платформой.
(10) Спасибо
Скажите, а как с безопасностью?
Как ras общается с сервером?
Через REST запросы?
(12) DroidRAC общается с ras версий 8.3.x через «Administrative Service API» по бинарному протоколу, который не шифруется. Но даже если бы и шифровался — все равно не стоит выставлять ras «наружу», т.е. в небезопасные сети типа Интернет.
Отсюда вывод: пользоваться такими инструментами лучше в локальной сети либо через VPN.
Rest API будет в версии 1С 8.4
Класс! То что нужно мне под линухом и для скриптов
(12) RAS использую постоянно для работы с сервером под Linux, в интернет ничего не выкладываю, работаю по SSH — это о безопасности. И
(1) можно указать флаг -daemon — запустить как демон!
А где можно почитать про «Administrative Service API» на русском языке?
1с-dn.com но там на английском 8o а для скачивания ещё и регистрироваться надо 🙁
Пока я нашёл только вот тут
(16) Не видел нигде на русском. В архиве есть Javadoc, естественно на английском. Подразумевается видимо, что знание Java предполагает знание технического английского.
(17)Просто для меня это странно, чтобы компания 1С выпустила разработку для платформы, без поддержки русского языка, даже выложено это, видимо, исключительно на англоязычном сайте и ориентировано не на российскую аудиторию. Всё это для меня необычно очень. Даже в новостях нигде не проскакивало (по крайней мере, я не заметил), на 1С: ИТС инфу я тоже не нашёл. Тихой сапой выложили — не для всех — а лишь для избранных. Если бы не эта Ваша публикация, так я вообще бы не узнал бы об этом. За это Вам большое спасибо. А сделать большую русскоязычную статью, по мотивам данной SDK, и выложить её здесь — было бы очень познавательно для продвинутой аудитории. А если показать как это всё синтегрировать с платформой 1С: Предприятие 8 (большой и мобильной) — так вообще было бы очень круто!
Сделал тоже надстройку ГУИ:
https://infostart.ru/public/876329/
(19) Встречайте DroidRAC2!
(19)https://infostart.ru/public/591608/ а ссылку то забыл)
(21) так работает как? В локальной сети только? Если база опубликована будет работать?
(22) Работает через ras-сервер — к нему должен быть доступ по ip. Rest-api от 1С всё ещё нет. Только в 8.3.14 добавили администрирование из самой 1С
(23) у админа не получилось его установить службой. Кстати не в курсе это функциональность КОРП или ПРОФ версий в связи с обновлениями политики лицензирования?
(24) плохой админ, негодный. По поводу ПРОФ и КОРП — часть настроек кластера заявлены как доступные только в КОРП. Вероятнее всего при попытке их менять ras будет бросать ошибку. Но что реально отключат будет понятно только в сентябре. Очень уж важные настройки хотят отнять
ссылка на droidrac битая
(26) Поправил. Со времени написания статьи DroidRAC потерял актуальность, вышел DroidRAC2. Подробнее о второй версии
https://infostart.ru/public/591608/