<?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='\
Ну хотя б скрины чтоль
Видимо скрины вылаживать щас не в моде
Автор, в чем преимущество перед ->http://infostart.ru/projects/3114/ ?
Да, очень интересно, в чем преимущество перед моей?
О преимуществах говорить некорректно, различия как минимум в том, что у вас сканируются внешние каталоги а в этой обработке Дополнительные внешние отчеты и обработки прикрепляемые к базе.
Интересно!
Когда на этом сайте перестанут появляться обработки бесплатные!!!???
ВСЁ К ТОМУ И ИДЁТ?
Никто и не спорит о полезности вышеозвученной обработки, но прочтите внимательно еще раз ее описание «…сканируется каталог, в котором находится обработка и рекурсивно перебираются каталоги и файлы…»?!
Где хоть слово сказано про Дополнительные отчеты и обработки самой базы?
Относитесь уважительно к любому труду! А право выбора у Вас к счастью всегда есть!
И у меня похожая обработка есть, только она использует дополнительный регистр сведений для контроля над доступом к внешним отчетам и обработкам различными пользователями, потому и не выкладываю. А то шо всем юзверям все дополнительные обработки и отчеты давать для запуска? ну уж нет. Каждому свое.
(4) Мда… Стоило сказать «Где хоть слово сказано про Дополнительные отчеты и обработки самой базы?» негодующему автору аналогичной обработки про их принципиальные различия, как он тут-же «Релиз 1.0.004 от 16.04.2009 1. Добавлены возможность использования в качестве источника справочник «Внешние обработки»» добавил в свою функционал данной обработки… Ну мы ответим тем-же, в данной версии добавлена возможность формирования списка отчетов и обработок вне инф. базы! В следующем обновлении будет список часто используемых обработок! В перспективе будет реализован механизм СКД…
Да ради бога, малыш. Никто и не думал негодовать, мне все равно кто и как использует функционал типовых решений (даже выдавая его за свой). Можешь добавлять чего хочешь, никто тебя в плагиате обвинять не станет. Это не «функционал» как ты выражаешься, а небольшая доработка, тем более, что скриншот формы настройки твоего «шедевра», где в заголовке написано «Настроки: Палитра внешних отчетов и обработок v1.0.1», а настройки исключаемых путей содержат 3 пути, вместо того, чтобы сделать хотя бы табличную часть для их хранения, выдают руку студента, работающего год, максимум 2 с 1cv8. Я тебе уже предлагал закончить меряться, если это твое решение — выносить всю грязь на обсуждение — твое право. В любом случае, решать пользователям, которые могут свободно и бесплатно скачать лучшее по функционалу решение здесь:http://infostart.ru/projects/3114/
=-) Ха дядя, давно не ведемся на высказывания индивидумов не гнушащимся плагиатничать… Быть может тогда скажежешь, почему такой крутой спец как ты, у которго конечно за плечами лет 20 работы с 1С 😉 делает такие ляпы и гордо выставляет их на всеобщее п
Вообще эти проекты, по моему мнению, гораздо удобнее для работы с внешними обработками (и бесплатные к тому же):
http://www.infostart.ru/projects/1472
http://www.infostart.ru/projects/3667
Слушай, студент, реально достал. Отвяжись уже, не смешивай хобби с работой.
Да, все проекты имеют право на жизнь, тем более хорошо реализованные, чего нельзя сказать о проекте Дяди Тома-а =-) у которого ляпов в разработке больше чем функционала…
Кстати в моем проекте тоже используется построитель, так вот вопрос, может кто(речь не о дяде томе) подскажет как можно в построителе запросом сформировать дерево по файлам системы, не нашел способв кроме СКД?!
Дядя Том, не доставай студента, скоро на пенсию, нервы нужно беречь…
Плохо смотрел, там есть и дерево значений.
Дядя, Том, не путай сдудента, ну раз такая пьянка, то скажи, а лучше продемонстрируй =-)) как построителем создать дерево по файлам?! А то умничать все горазды…
Не работает построитель с файлами — учи матчасть. Можешь взять дерево значений с путями к файлам и использовать его в качестве источника построителя — это уже не раз обсуждалось.
И призадумался дядя Том, а как же правда сформировать запросом дерево по файлам… =-)) Жду с нетерпением варианта решения!
=-)) и даже вариант решения есть?
(13) Спасибо за ссылки, очень интересные разработки, вот только не очень красиво свою там перечислять, ну да ладно, обработка действительно хорошая…
Пять баллов «модераторам», вот так взять и обрезать интересную ветку обсуждения! Все больше и больше убеждаюсь в нездоровой коалиции и сговоре владельцев ресурса…
22 беру обратно свои слова, пока никто не обрезал, просто движек сайта сбойнул повидимому у меня…
(0) А чего демо-то? Думаешь так сложно закомментировать, например,
ЭлементФормы = Форма.ЭлементыФормы.Добавить(Тип(«Надпись»),»НадписьDEMO»,Истина);
ЭлементФормы.Заголовок = «DEMO»;
(39) Abadonna — при желании все что угодно можно взломать, тем более, что ты именно это и сделал причем с помощью чужой обработки по декомпиляции защищенного модуля… Есть чем гордиться!
Думаю самая лучшая защита 1С разработок от таких как ты — это сложность разработки для понимания таких индивидумов. Потому как найти в интеренте всякие прсеры и ломалки не составит труда не занимающимся ничем полезным людям а посему имеющим массу свободного времени для самовозвышения своего эго… =-))) Пора взлослеть! Обещаю следующие разработки создавить невозможными для понимания кода таким индивидумам.
Всех благ…
(41) Да уж, где уж нам уж выйти замуж…
=-))) from «manserg» to «Александр Иванов: Вы внесены в черный список» 2009-04-22 05:41:59
Во дети… Высказать глупость и чики-домики…
(41) А ты вместо комментов глупых предоставь свою разработку — или только поливать грязью чужие горазд?
(43)Автор! В дурь-то переть не надо! Прилично надо себя вести!
(43)>А ты вместо комментов глупых предоставь свою разработку
А в профайл заглянуть трудновато?
А можно сделать произвольное число исключаемых путей?…
=-)) Прикалываешься? Я читал твои разработки по кодированию, думаю ты и сам понимаешь что можно. Я решил это на СКД делать с откупом на пользователя любых всевозможных настроек…
(44) При всем уважении, готов отвечать за все что делаю, а просто заниматься демогогией некогда…
скачал для понимания работы панельки, спасибо большое за труд