<?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='\
И что в нем нового?
http://infostart.ru/profile/15778/projects/2059/
Здесь намного больше возможностей
(1) зато «всем», безвозмезно (т.е. даром) и без ошибок…
помощь в доработке, равно как и сама доработка не требуется. фунционал полностью соответствует описанию…
…и вообще надо же с чего-то начинать…
(2) Тоже верно, только не вижу смысла начинать с того что уже есть и давно и несколько таких обработок от разных авторов, не в обиду, но зачем плодить одинаковые обработки к тому же состоящие из 3 строчек кода?
Обработка, состоящая из 3 строчек кода, давно написанаhttp://infostart.ru/projects/908/
Вообще, кто Вы все такие чтобы запрещать вольным людям программить, что то полезное, что им хочется, если это не вредит? Помоему, правильнее было бы предложить автору какие-нибудь варианты расширения функционала. Вы пресуете человека, а это аморально. После таких сообщений просто ничего выкладывать не хочется. Прошу прощения у Всех, просто неприятно читать практически одни и теже комментарии к простеньким обработкам. Заранее извиняюсь перед Вами.
Так надо с перенумераторов начинать, как все. Чего велосипеды-то изобретать?
(5) А начинать надо с работы…
Уважаемый Душелов! Скажите Вы свои разработки где нибудь применяли? (Тут тема была в блогах, но её чего то не видно). Мне например намного ближе какой нибуди перенумератор или обработка типа этой потому что она может действительно где то пригодиться. Я ничего против Вас не имею, но мне не понятна Ваша позиция. Почему Ваши обработки ценные, а эта вот не ценная? Ну и что, 3 строки тоже может быть полезно. В типовом ЗиК 77 вообще ничего нет. Перерасчет перерасчета автоматически не перерасчитывается и т.д. На мой взгляд, решение проблемм типовых конфигураций это самое необходимое. Опять же, прошу у Вас прошения. Это просто моя позиция.
(8) А я-то тут при чем?
А если уж меня взять, то я пишу для программистов, а не для пользователей.
Да ладно, проехали… Чего то меня зацепило, простите. 🙁
Автору, в качестве расширения функционала, могу предложить реализовать функцию смены периода по произвольной дате. На практике бывает утомительно скакать по периодам например с даты 01.01.0000. 🙂
Пишите, выкладывайте, обновляйте. Кто воспользуется — плюсанет. На камменты внимания обращать не надо (не конструктивные), и будет вам счастье.
(11) Вот, дельное предложение (хотя это и реализовано, но на инфостарте я не видел или не заметил). Если была выложена обработка с таким функционалом не вопрос, уже понятно зачем. И вообще я просто спросил зачем по мнению автора он ее выложил на что, кстати, автор раскритиковал мою обработку даже не посмотрев (уверен на 90%) это тоже цепляет. А еще цепляет когда что нить ищешь, а тебе в ответ 10 страниц вылетает из которых 8 не по теме, а 1 то же самое что и на 2 причем все раскидано равномерно по всем 10 страницам…. Это моя точка зрения… А вообще 3 плюса уже есть значит это кому нибудь нужно. Молодец автор.
+13 и вообще судя по плюсам на обработках чем проще обработка тем лучше, желательно чтобы на ней была одна кнопка ))))))))
(13, 14) Полностью с Вами согласен. К сожалению люди в ответ начинают тоже пресовать, а цивилизованно за себя заступиться не хотят в перделах своей темы. Но, видимо, это по неопытности. К вопросу о 10 страницах обработок, я тоже с Вами согласен, это трудно.
Просто людям не знакомо свойство Поиск… вот и лепят лисапеды… и такая дребедень каждый день …
Уважаемый Ёпрст! С вашей стороны высказывать такие вещи, просто провокация! На форуме есть правила (http://infostart.ru/rules.php/) и они не ограничевают права пользователей выкладывать обработки, которые здесь уже есть! Если выкладывать их, с вашей точки зрения не правильно, то (ИМХО) обратитесь к администрации форума с предложениями об изменении правил. Не надо тратить свои силы на навязывание своей индивидуальной точки зрения другим людям (видимо, что-то надо подправить в консерватории…).
(17) Мне абсолютно фиолетово, что лисапеды плодятся как мухи, это всего лишь следствие того, что люди не умеют (не хотят) пользоваться поиском вообще. Хотя-бы ради того, чтоб посмотреть, как сделано у других и что можно улучшить.
Вместо этого лепят клоны одинаковых решений с одними и теми же ошибками.
(18) «Вместо этого лепят клоны одинаковых решений с одними и теми же ошибками. »
Это прямое следствие того, что «новоначальному» программисту никто не помогает развиваться.
Сообщений от общественности вообще нет или это просто грубоватые фразы общего характера. Отсутствует обучающий элемент в общении.
Я об этом и говорил в самом начале, что (ИМХО) надо бы вежливо указывать разработчикам на их недоделки и по возможности предлагать свои решения.
Тогда разработчик будет «рости», а на форуме пропадут недоделанные разработки.
Уважаемый Ёпрст! Вообще-то, прежде чем жить чужим умом, нормальный программер хотя бы _попробует_ написать программу сам.
А уж если не получается — пойдет искать чужого опыта.
А по Вашему методу мы так и получим тысячи очередных индийских кодеров, только в области 1С… 🙂
(20) с точки зрения програмера самому написать конечно намного интереснее чем воспользоваться поиском, ну, а с точки зрения работодателя это будет выглядеть как неумение рационально использовать оплачиваемое рабочее время (правда, в редких случаях работодатель об этом узнает, — поэтому, чтоб заполучить в програмере единомышленника, лучше платить сдельно 🙂 ).
(20) Брехня. Никто не говорит про «чужой» ум. Просто нежелание/нехотение/неумение пользоваться поиском… ничего более.
Вообще, в 7-ке сложно что-то написать оригинальное, всё уже давно написано.
Написать — хорошо, а воспользоваться наработками других еще лучше. Почитайте «Совершенный код» С. Макконнелла, много интересного узнаете, хотя бы то, что не стоит изобретать велосипед, а использовать шаблоны и из них уже делать конфетку.
Вообще, на мой взгляд, надо определиться можно ли выкладывать обработки новичкам, можно ли выкладывать копии обработок имеющихся на форуме, можно ли охаивать за это новичков. Это все надо правилами оговорить и реализовать в функционале форума.
Только такой форум нужен будет — копия «Клуб профессионалов 1С». Там все жестко… Не член клуба, все «Гуляй Вася вдоль забора». А заваливать простые обработки своими упреками это все неверно (ИМХО).
(24) > выкладывать копии обработок имеющихся на форум
Выкладывают, с ссылкой на автора, с описанием того, что доработано.
(25) А вот это да, правильно. Но в чужом коде тоже надо уметь разобраться. Возможно это кому-то будет сложно. Но, в целом, это замечание правильное (плюсую). Незнаю, заглядывают ли сюда «Суппорта», хорошо бы им это предложить.
Кстати, наверное имело бы смысл сделать единую базу обработок, чтобы доработанные обработки заменяли их исходники. При этом, мне не совсем ясно, кто будет проверть обработку на функциональность (возможно это должно быть общественным делом).
Например, как на том же «клубе профессионалов», помешать обработку на рассмотрение и каждый «протестивший» должен написать свое мнение. Но главное (ИМХО) избежать такой же закрытости форума как на «клубе профессионалов».
+(26) «Но в чужом коде тоже надо уметь разобраться.» — Пока будут разбираться — будут учиться. Так же имеется возмжность автору вопросы задавать. На лицо обучающий эффект!
Во первых это не тиражный продукт.
Во вторых код удобочитаем (во всяком случае я так считаю, а все в жизни как известно относительно).
В третьих на 100% не работает ни одна обработка, просто если у Вас она работает на 100% то Вы просто не наткнулись на ошибки.
В четвертых а вы попробуйте написать действительно стоящий код. У меня есть абсолютно такая же обработка как Ваша, написанная лет 6 назад, только вот я постеснялся бы ее выкладывать.
В пятых, мне даже интересно стало, кто Вы? Если уже опытный программист, то почему выкладываете такие обработки, если же новичек, то исходя из какого опыта учите других писать код? )))) (p.s. не в обиду, просто мысли)
Вы знаете я тоже не хотел Вас обидеть, по этому не надо просто воспринимать все в штыки, а то что Вы хотели дискредитировать то да, мне так показалось… но если Вы говорите что не хотели то я вам верю.
А что касаемо кода, то разницы между Вашим и своим я не вижу, за исключением отсутствия в Вашем коде комментариев ))))). И к слову сказать оформлять код я всегда ПЫТАЮСЬ как положено, выходит как вышло, так что не судите строго.
А что касается чем закончится… предлагаю закончить спор. То что я хотел узнать в (1) я узнал, сделал для себя вывод.
Какой там код… Примитивщина.
Только вот выкладывать ЭТО не стоит. Причина номер раз: скачать может юзер. А за пользование таким механизмом расчетчику нужно руки обрывать до жопы. Это я вам как старый «зарплатник» говорю.
Причина номер два: если программер не в состоянии ЭТО написать, ему нЕфиг это в руки довать. Рано.
P.S. У меня стоят переключатели на ЖР 😉
Спасибо. Очень полезная вещь.
Спасибо, полезно