<?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) А вот выводов лучше поменьше, но тоже хороших 🙂
Как то слишком много контролов…
с новейшего отчета, как то попроще будет 🙂
на 8ке у меня вот такой выбор периода:
(3) Зато очень полезные кнопочки по 1 или 10 вперед или назад.
Честное слово, пригаживалось 🙂 не раз.
Спасибо, я посмотрю «Новейший» более детально.
Таких вариантов выбора уже штуки 4 видел.
Я в свое время, еще в 2004/2005 гг. на базе ВК 1С++ и ФормЕкс сделал спец.класс для 1С++, который для текущей в любых формах, в т.ч. и любых внешних обработках, автоматом при открытии любой формы подменял вызов ВвестиПериод на вызов моей собственной формы.
Пользователям очень нравилось и нравится до сих пор.
ЗЫ класс выложен в составе репозитария классов 1С++ на форуме http://www.1cpp.ru
(6) Спасибо за напоминание об 1С++
Очень хорошая штука. Если бы она еще входила в стандартный комплект поставки 1Сv7 было бы просто замечательно.
(4) А на инфостарте он где? 😉
(4) А чего не выложишь в общий доступ?
но контролов и у тебя много 🙂
(8)(9) это выбор периода в подсистемах отчетов тиражного (платного) решения, потому в общий доступ выложено не будет… идея дерева вообще из типовых взята, а такая структура обеспечивает выбор нужного периода максимум в 3 клика (в 95% случаев)
(10) классная идея, жаль не выкладываете в общий доступ эту часть
(10) Как хоть продукт-то называется?
(12)http://www.infostart.ru/projects/3226/ а вообще чот мы от темы отвлеклись
(13) Не страшно, мне интересно 🙂
(4) Неплохая идея, было бы замечательно еслиб ты это оформил внешней обработкай и выложил бы в общий доступ
Не впечатлило (по скриншотам). Поясняю: лично я с налета не понял, что к чему (подозреваю, что многие юзеры так же тупы): с чего это напротив выбора года стоят чекбоксы «с начала года/до конца года»? Такое же супротив полугодия? Усиливало впечатление пропуск после «месяцев»… Того через десяток секунд сообразил 😉 Может, рамочку добавить, а?
А вообще, ИМХО, слижком кудряво. Это чисто «эстетическое», «вкусовое» впечатление, так что прошу не гневаться 🙂
У меня несколько другое решение (идея слямзена у Натальи Васильченко, но переработана): на отчетах псевдокнопки «<<«, «>>», и по жамканью по этим псевдокнопкам определяется тип периода: год, полугодие, квартал, месяц, неделя, десятидневка, произвольно. И соответственно двигаем период…
Да, такой пример, как в сабже — определиться «произвольным». Но обычно юзеров интересуют «регулярные» периоды 😉
С уважением…
Итоговая строка описания периода не совсем корректна.
С начала КАКОГО квартала и КАКОГО года? Это как от забора и до обеда.
В остальном интересное решение, но несколько перегруженное реквизитами.
(15) уговорил —http://infostart.ru/projects/4180/
Однако суппортовский ВыборПериода() поинтереснее смотрится.
Понравилось… Только не дорубил работу по галочке «интевал» много галок, они друг друга перекрывают и по непонятным причинам иногда не срабатывают (всмысле стоит запрет на срабатывание), а мне, даже как прогеру, стало лень разбираться, не говоря уж о пользователях. И интерфейс все таки можно было бы не то что посимпатичнее, но хотя бы поаккуратнее. Например совсем не прикольно смотрится слишком близкое расположение полей к нижнему краю и совершенно излишне оставленное расстояние вверху окна. Но в общем, это все мелкие придирки. Мне понравилось.
Да, и еще к вопросу о интерфейсе. «Кваратал» это тоже надо убрать…
(20) посмотрите еще на этот вариант тогда…
http://www.extforms.ru/support/documentation/1-4.php
(17) >> С начала КАКОГО квартала и КАКОГО года? Это как от забора и до обеда.
С начала года начала интервала. До конца года конца интервала.
Сорри, я думал это понятно. По аналогии ВвестиПериод(). Там понятно? 🙂
—————————————————————-
(20) > Только не дорубил работу по галочке «интевал» много галок, они друг друга перекрывают и по непонятным причинам иногда не срабатывают (всмысле стоит запрет на срабатывание)
Начало года перекрывает начало 1 квартала и первого полугодия. И т.д.
Снова подумал, что это логично.
—————————————————————-
(21) > Да, и еще к вопросу о интерфейсе. «Кваратал» это тоже надо убрать…
Почему? 🙂 По аналогии ВвестиПериод()
—————————————————————-
(21) > совершенно излишне оставленное расстояние вверху окна
Скажу по секрету. Т.к. окно модальное, увидеть маленькое рекламное описание нельзя, если в свойствах формы снять галочку «Панель инструментов». В моей рабочей версии она снята. И вверху окна расстояние поменьше.
—————————————————————-
Всем спасибо за положительные отзывы. И за критику. Буду улчушать.
+19.http://www.infostart.ru/forum/messages/forum1/topic9499/message72563/#message72563
(24) Если я не ошибаюсь, в виде отдельного куска это не выкладывалась?
(25) Выкладывалось Кушниром прицепом к какой-то разработке. Что-то вроде универсального реестра документа… или фиг его знает.. Было точно у Кушнира, где — не помню
Чего это она два раза запостила? Раз кнопку нажимал…
Есть очень старый вариант, еще раньше новейшего отчета, давным-давно выложен на проклабе.
Я именно его аналог использовал в 77 — описал в (6)
(29) Ну я ж и говорю: «сто лет в обед» ;)))
(23)—————————————————————-
(21) > Да, и еще к вопросу о интерфейсе. «Кваратал» это тоже надо убрать…
Почему? 🙂 По аналогии ВвестиПериод()
—————————————————————-
КварАтала я чего-то в ВвестиПериод() не видал… Это я про выпадающие меню.
(24).
http://www.infostart.ru/forum/messages/forum1/topic9499/message72563/#message72563
————————————————————————
————————————————————————
А вот это круто. Хоть и довольно сложно, но кнопками для пользователя полюбому удобнее, чем объяснить ему взаимоисключение галочек, да еще и кнопки наглядно отображают период, который ими выбирается. Интерфейс супер! Реализацию не видел, ничего не скажу.
(31) Купи у Доржи «Новейший отчет» — и увидишь реализацию :))))))))))))
(31) А, понял. Переименую. «КварАтал» 🙂
to Abadonna
Вообще, моя разработка оказалась полезной. Простые пользователи что-то новое узнали. А не только «монстры» 😉
(33)>Вообще, моя разработка оказалась полезной
Я где-нибудь утверждал, что она полезная/ не полезная? 😉
> Простые пользователи что-то новое узнали.
«Простоые пользователи» продолжали плюсовать мой плагиат на меня же под другим ником, даже тогда, когда я ТРИ раза там написал, что это шутка, и уж если хотите плюсовать, плюсуйте настоящего автора.
(34) > Я где-нибудь утверждал, что она полезная/ не полезная? 😉
Нет, не утверждал. 🙂 Сорри, если показалось что я обвинил в этом.
А знаете почему я написал такой вариант выбора интервала?
Работал я в одной фирме. Помимо того, что я был программистом, был еще и администратором БД и занимался аналитикой.
И очень часто приходилось делать отчет за последовательные интервалы.
И мне надоело тупо менять 2 даты, это долго и лениво.
А скольким обычным пользователеям приходится делать это ежедневно по многу раз.
Выложил ещё один вариант, имхо, самый лучший 🙂
(36) Это называется «выложил»? А где реализация?
(38)
(2) Вот и я о том-жеГда выравнивание? В полях ввода?
Это стандартная ситауция, когда числа по правому краю, а текст и даты по левому.
>(2) Вот и я о том-же
В (2) написано про ВЫВОДЫ. Так Вам хотелось мне минус в отместку влепить, что даже не прочитали как следует? 🙂
(38) vadim_p_volkov, что обиделся маленький, про бюст копипастить — это все что ты можешь?:-))) Это ведь ты был, напомни как мне?:-))
(41) Выбирайте выражения, когда пишите. Вы здесь не один.
(41)
> На дрочливых на бюсты я не обижаюсь.
Вау! Так Вы еще и ущемленный 🙂
Кстати, про бюсты это Вы запостили сомнительную статейку, которую потом Администрация удалила.
А вы попробуйте поле ввода Числа выровнять по левому краю. Без ВК 🙂
> А у тебя даже панель в глаза кидается.
Про какую панель речь идет? Инструментов? А коммент (23) Вы читали?
Не осилили? 🙂
(41) Нет уж, лучше скажи все что думаешь, будь мужчиной:-))) Прилюдно так сказать:-)))
(46) !!! Уважайте форум и автора разработки -Altair777
Вам бы понравилось если в подъезде у вашей двери каждый….
писал бы vadim_p_volkov=()() ?
Вы уже надоели флудить. Сайт не той тематики выбрали.
Все и всем. комментарии только по существу данной обработки.
(46) Что будем в следующий раз копипастить (после бюста)?:-))) Да и чужое ты любитель был выложить и не раз, и автора, работу которого использовал обгадить:-)) Вот тебе скриншот одного из твоих шедевров, например:http://www.infostart.ru/upload/iblock/0ce/opisalovo.jpg
(51) Не путайте с Вашими грехами:-))) Советую как бы уже успокоиться — ибо еще и на бан можете заработать….
(51)
http://infostart.ru/about/laws/
to vadim_p_volkov
Как Советник Администрации я предупреждаю Вас о существовании «Правил и законов ИС».
Мне пригодилась. Бухгалтер требовала как раз что-то подобное, я ей подсунул такой вариант, она его немного еще переиначила, буквально, несколько строк кода, украшательства по требованию — и счастливый и спокойный бухгалтер. Хотя, сам, пользуюсь всегда исключительно стандартным выбором временного интервала.
(54) что-то я не заметил плюсик 😉