<?php // Полная загрузка сервисных книжек, создан 2026-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. (не по существу). Зачем в обработках прописывается «//@version: Версия 3 (4 февраля 2014 г. 18:50:38)». Это как-то автоматически обрабатывается или это только для своего визуального контроля ????
2. Как в обработке 1 была сделан макет «xsd_man»?
3 Если приходят файлы с заголовком
<?xml version=»1.0″ encoding=»windows-1251″?>
<data xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»>
то как принято вставлять строку xmlns=»http://пример1″ ???
или как вообще обрабатывать такие файлы?
(1) Это скрипт к снегопату. Проставляет версию и дату последнего изменения. Автоматически не обрабатывается (зачем такое было нужно? обработка — это не только код, но и форма, но и макеты), Кстати, пользуясь случаем — Александру огромное человеческое спасибо за то что раздает бесплатные версии и отвечает на вопросы
(2) Создан пакет в 1С потом экспортирован в файл. Затем содержимое файла сохранено в макете
(3) В общем случае — такого быть не должно. Но жизнь несовершенна, поэтому сперва читаем хмл, затем вставляем строку, затем получившуюся строку снова скармливаем в ЧтениеХМЛ Такой изврат мне был нужен всего 1 раз за все время работы, но думаю что существуют и другие способы (но там надо уже DOM крутить, что лениво)
Простите, автор, в статье описано именно создание xsd-схемы «на лету», или всего лишь создание фабрики и/или объекта XDTO с её помощью?
а вы точно всю статью прочли? какое из слов у вас вызвало непонимание?
(8) Я никакой статьи не вижу. Я вижу 2 абзаца описания и обработку, которую предлагается скачать. Статья-то где?
Исходя из «в статье описано именно создание xsd-схемы «на лету», или всего лишь создание фабрики и/или объекта XDTO с её помощью? » я предположил что вы прочли статью. Какую — не знаю. Конкретно здесь — немного расширенный пример к синтаксис помощнику. Он находиться в обработке приложенной к заметке.
(10) Автор, цитата из вашей публикации: «Построение XSD схемы на лету или любите СП источник знаний». Так? Так. Ниже сказано про создание фабрики. Поэтому подозреваю, что какая-то часть текста лишняя, или я чего-то сильно не понял. Кроме того, в СП нет и не было примеров построения xsd «на лету», по крайней мере в 8.2
И часть лишняя и, и примеров не было и фигня весь этот хмл, СП и 1С 🙂
Дружище, по твоим комментам убедился — ты нереально крут и все эти пересказы СП — не для тебя. Так что если тебя что-то напрягает — ты скажи — исправлю все, переделаю, перепишу, посыплю голову пеплом и удалю обработку нафиг, а публикации новые обязательно буду согласовывать с тобой. Не надо держать в себе все — вредно для нервов 🙂
И да — не моя вина, что 1С придумала свои обозначения для уже существующих терминов. Вот и путаюсь иногда.
Вот эта тема! Так можно назвать каждую вторую публикацию…
(12) Автор, прошу не паясничать и не переходить на личности. Я задал вполне чёткий предметный вопрос, интересующий, по идее, каждого читателя — «о чём публикация»? Повторяю свой вопрос и прошу внятно ответить. Публикация про xsd или про фабрики XDTO?
Если бы вам был нужен ответ — вы бы уже посмотрели код. Раз этого не произошло — значит ответ вам не нужен. Но что бы не быть невежливым и не оставлять вопросов без ответов — «Четкий и предметный ответ — все в обработке — открываем и смотрим.»
(16) Т.е., чтобы получить ответ, надо потратить sm и скачать публикацию? Т.е. вы предлагаете кота в мешке?
(17) Yashazz,
Используется СоздатьФабрикуXDTO. В архиве файл Вариант-1.epf
Вариант 2
Используется конструктор для ФабрикаXDTO В архиве файл Вариант-2.epf
Есть еще вариант №3 – основан на построении схемы – но мне этот вариант никогда был не интересен, поэтому оставим его добровольцам.
имхо ответ дан в описании.
Если для вас это единственный путь — то да. Если нет — то нет.
HINT : иногда адрес зеркала указывается в личной карточке 🙂
(18) Тогда фраза «Построение XSD схемы на лету или любите СП источник знаний» совершенно не в тему.
(19) Мы сейчас конкретно на ИС и говорим о действиях средствами ИС. И стартмани за скачанное вслепую тоже окажутся на ИС. Считаю, за кота в мешке, т.е. за уход от ответа (то ли по незнанию, то ли по нежеланию ответить), можно лепить минус.
Да ты и так его поставил 🙂 Успокойся уже.
Прошу прощения! Это обработка или статья? Если статья то текст в студию !!!
Сверху написано —
Тип: Внешний отчет (ert,erf)
Вывод — это ни обработка ни статья, а отчет. причем внешний
Виноват перед всеми пользователями ИС — неверно выбрал классификатор. Согласен понести справедливое, но заслуженное наказание. За то что всех ввел в заблуждение — приношу извинения.
К сожалению желания исправлять конкретно эту публикацию — не имею. Поэтому — желающие 1. пофлудить,
2. высказать свое фи и пхе,
3. похвастаться «ежедневным тяжёлым освоением каждой детали личным опытом, пробами и ошибками, вдобавок вообще без какой-либо методической литературы от 1С, только общими сведениями про xml как таковой в сети»
4. рассказать о своих професиональных 22 см —
ВЕЛКАМ
Таки скачал. Теперь стало ясно, почему мы друг друга не поняли. Да, формально в опубликованном epf действительно есть создание фабрики по схемам и работа со схемами, но совсем простая — схемы элементарно читаются из текстового макета. Понятно, что и макет можно «нагнать» текстовыми операциями, но меня интересовало настоящее динамическое создание xsd, работа с объектом СхемаXML. А фиксированную схему сунуть в макет — да, несложно, и воспользоваться СП для этого — тоже, и в ряде задач этого более чем достаточно.
Есть еще вариант №3 – основан на построении схемы – но мне этот вариант никогда был не интересен, поэтому оставим его добровольцам.
а еще в файле Вариант-2.epf та же схема строиться программно
Нечто подобное делал
Если нет предубеждения то для создания схемы можно воспользоваться более мощным инструментом
Гляну. Спасибо.
Если знаешь Net, то проще сгенерить описание классов, перечислений и динамически скомпилировать
Затем используя XsdDataContractExporter создать схему.
Кстати динамическое создание схемы прекрасно подошло бы для КД. Суть то там таже создается описание класса и алгоритмы конвертации (сериализации)
При этом если выгружать все в обработку используя схему проще отлаживать алгоритмы.