<?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) .. исходя из минимизации работ… если использовать обработку, почему бы и нет, можно и еЁ, вы записываете документ потом переписываете и потом проводите… часто документ записывается, проводится, потом обработкой презаписывается и затем ещё раз проводится… даже если принять во внимание самый короткий вариант то предлагаемый вариант как минимум сокращает одно действие… не говоря уже про то, что эту обработку надо запускать или автоматизировать еЁ запуск, хотя конечно в этом нет ничего сложного… просто в предлагаемом случае пользователь видит куда система записала документ .. при использовании обработки сначала документ записывается на одно время а ночью или ещЁ когда на другуое время… что то же вобщем неудобно…
если принимается предложение «запись по расписанию» данное предложение автоматически приводит запись документа к необходимому диапазону времени …
вооОооотТакоеЕстьМнение…
(2) + … гыЫыыы разволновался мальчишка (это я о себе)…. последнюю фразу читать так:
если принимается необходимость «запись по расписанию» — то данное предложение, автоматически производит запись документа к необходимому диапазону времени …
вооОооотТакоеЕстьМнение…
Имхо, лучше разделить на обработку и статью, а то тяжело читать…
(4) … скорее всего ты права… кАк всегда… воОот…
(5)+ …учту в следующий раз… спасибо larisab… вооОооот….
ыыы… муууу… А мОжно шрифТ читАбельный сдЕлать? …ВоооООооот…
(0) да, подобные механизмы иногда нужны. но плюса не будет. много написано, но мало понятно.
по поводу шрифта могу сказать следующее — вставляю везде один и тот же шрифт … если это тАк нравится разработчикам сайта то пусть тАк и будет…
…с одной стороны пользователь всегда прАв (т.е. читатель) — с другой стороны заниматься «творчеством» со шрифтами нет никакого желания…
…впрочем куда я денусь… попробую сделать….
(8) дело ведь не только в «+» дело и в критике — а ваше сообщение весьма непонятно … что..? где..? … возникают смутные подозрения…
… воОотГотоВОсОшрИФтом…
(9) я по заголовку понял о чем речь, ибо делал один в один тоже самое. но далее идет много текста, из которого сразу и не понятно, что, как, зачем, почему
(10) в ваших талантах нет сомнения господин Rebelx… и пока не могу принять вашу критику по поводу «не понятно»…
… то, что ЭтО кто-то когда-то делал сомнения нет… и я не претендую на открытие «америки» — наоборот ищу тех кто этим уже озадачивался, ищу сомышленников и учавствующих критиков…
…просмотрев «историю» этого вопроса не нашЁл тАкого решения вооот и решил поделиться и заодно выслушать мнение коллег по цеху…
…если вы эТо делали — значит имеете опыт -вот опытом и поделитесь — думаю все только выиграют от этого…
воооОооооттАкоемАленькОемнЕние….
(11) попробую объяснить по другому: в описании очень много воды. сократи описание в три раза. (… он же писатель, а не читатель …)
могу ответить тАк: всЁ что ни сделаешь — всЁ будет плохо… то «воды» мало… то «воды» много… всЁ таАак относительно товарищ Rebelx, что из простой вредности оставлю всЁ кАк Есть…
если у вас есть желание можете текст сократить как Вам хочется и считаете нужным — прислать мне на почту, адрес есть в личной карточке, и мы добавим его в сокращЁнном варианте… если он уж «совсем» будет талантливым, в смысле «краткость сестра таланта» можете это описание продемонстрировать в следующем своЁм комменте…
воОооооттаАакоЕЕстЬпрЕдлОжЕниЕ…
Понятая мной суть статьи :
проблема правильного размещения документов на временной оси
решается при помощи механизма подписки на события (событие «Запись» для документов) , в регистре же сведений указывается время записи для конкретного вида документов.
Замечания:
Неплохо бы явно указать , что решение рекомендуется программистам, работающих в организации на постоянной основе.Также неплохо бы явно указать ,что такое решение обеспечивает правильное размещение документов лишь в течение дня.
Шепот Теней, в своей борьбе ты решил ударить по нечитающей публике длинным текстом.
В этой борьбе я тебе лишь робкий и пугливый попутчик.
(14) … ничего … ты же прочитал … можно взять твой текст и вставить в предисловие к обработке если не возражаешь … мне понравилось … воооОооот…
Возражаю.Оригинал есть оригинал (и текст статьи и автор)
Венгер или Венгеровщина … ?
Доколе можно терпеть и не иметь возможность либо избежать общения с некоторыми товарищами …
Доколе будем терпеть и не иметь возможности отвечать на хамство, откровенные оскорбления, матершину …
Предлагаю на ИС организовать «черные список» пользователя … ТоварищЪЧи в него попадающие не смогут остАвлять свои комментарии в ветках пользователей отказавшихся от их мнения …
У нас же есть списки друзей … Пусть бУдут списки Нежелательных лиц …
Прошу организовать модераторство «своихВеток» …
Официально прошу товарищЪЧа ВЕНГЕРА не посещать мои вЕтки и не оставлять свои комментарии …
Прошу администрАцию, если есть техническая вОзможность оградить меня от общения с ним в моих «ветках» … я в его не «полезу» …
Также прошу удАлить все его «+» выставленные в моих работах, статьях и комментариях …
… ВОТ …
… странные дЕла Творятся …
… наверное Я не буду слишком НЕ точен если выскажу мнение что НЕтовариЩЧЪ упомянутый мною в (93) — является основным «оскорбителем и посылателем» в простонароДе — работником флудА и по-совместительству основным Хамом …
… и что жЕ МЫ видИм — ОН ещчЁ и «Советник Администрации» …. вОзникАет вопрОс… а КАК же Совет и Администрация собираются бороться с «флудом» есЛИ основные его поставщИки находятся у власти …
…хм…
видимО как у клАссиков — сами себя …
… вОООбщем не Совет а «Татупед»ство (по М.Задорнову: Депутат — Татупед) …
… не Модератер а ФЛУДератор …
…. ВОТтакоеМНЕНИЕотНАРОДА …
Ваше решение обеспечивает правильное размещение документов лишь в течение дня?