<?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='\
прикольно:)
!!! я хочу команду в контекстном меню, чтобы он рандомную фразу говорил, не только при старте обработки, но и когда я ее хотю
Ну или хотя бы — по двойному щелчку.. а то он просто взял и уснул =(
я туд работаю, а он — уснул..
В книжке «1С: Предприятие 7.7/8.0. Системное программирование» довольно подробно рассматривается работа с этим агентом. Советую.
Да и в моей проходной, еще с версии 7.7http://infostart.ru/profile/3975/projects/2617/ давно он используется довольно успешно для проговаривания сообщений.
(5) конечно, с точки зрения технологии ничего умного, но развлекуха 🙂
(6) Просто операторам работать приятнее психологически.
(7) я про текущую обработку
Боянчег. Ещё «где-то в 2001 году» статья была:http://www.mista.ru/articles1c/hare/article.16.html
(9)на мисте фраз прикольных небыло
Дарю фразу: «И жили бухгалтерша и программист долго и счастливо, и умерли в один день. Когда упала база…»
Да вы чо? Миста прям кишит прикольными фразами.
Как-то он очень быстро фразу говорит — и смывается. Читать не успеваешь
(10) Ну вообще-то эта статья не с мисты а, сhttp://hare.ru/ Миста у себя его хранит как архив.
(12)мне понравилось:
От перемены сапог ноги не меняются
Хороший 1с ник должен разбираться во всем…
Ага, дали контроль над формами — теперь и не поймешь, где природа, а где силикон…
…как раз тот случай, когда теорию вероятности опровергает обыкновенный закон подлости…
Эксперимент временно приостановлен, так как подопытные добрались до экспериментаторов.
Нет, мы будем требовать обоснованной рыночной цены! По 80$ за тысячу кубометров сала.
…времени нет на творчество… с этой водкой стакан вина выпить некогда…
Кесарю кесарево, а курам курево…
Площадь ног (подошв) у нормального человека меньше проекции тела вниз — однако тем не менее когда едешь в метре или автобусе в час пик — ногу некуда поставить. А это просто ОНИ не поджимают третью ногу, а ставят ее на пол — чтобы отдыхала…
Вот ещё вставь…
Как найти площадь Ленина?
Надо ширину Ленина умножить на высоту Ленина.
лучше так:
Как найти площадь Витковского?
Надо ширину Витковского умножить на высоту Витковского.
Ну если только в мою честь площадь назовут, тогда да.
И с Ленином проще зашел с рулеткой и померял,
а меня поймать еще надо.
а Витковский это твоя девичья фамилия?
Да не берут меня туда…
Просто псевдоним.
Такой же как и «МятежникX»
Делал я такое где-то примерно месяца 4-ре назад. Для более медленного произношения там в функции есть параметр с какой задержкой в МилиСек долны произносится слова. Но как не отлаживай все равно его с выражением разговаривать не научишь
интересно, в какой функции? вообще он должен в тексте разные теги понимать, но не понимает
Не,не, не ребята, неверно мыслите.
Автору плюс однозначно.
Но шуточную форму ведь можно реализовать в реально полезную =) У нас в базе механизм полезных советов. Т.е. куча фраз типа «Если вы хотите увидить товар на вашем складе откройте такой-то отчет…» ну и т.д. Один рэндомный совет в день при старте базы ООООчень спасает от всяких тупых вопросов «А как …?» пользователей, особенно новеньких.
Поржал, спасибо 🙂 плюсану
Добавил возможность MS Agent’у использовать модальные диалогиhttp://infostart.ru/public/63156/
Клево!