<?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='\
насмешил 😀 , какая следующая статья будет «… как его понимаю» ❓
а ослик на картинке причем?
гыы…все ссылки уже помечены как прочтенные (:
Шепот, на самом деле показан очень конкретный пример… Вместо больше равно может быть и меньше равно… в зависимости от целей…
Но для тех кто изучает сложное на примерах (как я например (% ) зер гуд…
Я очень рад, что моя статья вызвала-таки наконец ряд статей по теме.
А то если что и есть в инете, то только основы. Мне пришлось очень долго копаться прежде чем нашел упоминание об ограничении нарастающих итогов в запросах — большие объемы данных начинают существенно тормозить.
А уж метод обхода этого ограничения — это был вообще алес… ограничить выборку…
З.Ы. Предлагаю название изменить… Двухпальцевые нарастающие итоги и нумерация строк в запросе… Всё-таки если быть последовательным и логичным, то «понимаешь» ты в статьях, а вот обработки у тебя «двухпальцевые». Это без иронии.
(2) а ослик, потому что «душераздирающее зрелище» эти нарастающие итоги в запросе….
… БОЛЬШОЕ видится на расстоянии, а начинается с МАЛОГО …
… если ВЫ умеете делать это в МАЛОМ то сделаете это и в БОЛЬШОМ …
…
п.с.
Около ста пятидесяти лет назад возникла новая область научного знания — учение о подобии явлений.
Гениальное предвидение этой науки было высказано Ньютоном в 1686 г. Но только в 1848 г. Член французской академии наук Жозеф Бертран впервые установил основное свойство подобных явлений, сформулировав первую теорему подобия, теорему о существовании инвариантов подобия.
Подобными называются явления, происходящие в геометрически подобных системах, если у них во всех сходственных точках отношения одноимённых величин есть постоянные числа.
… писать «нарастающие итоги» — это доставать кость попавшую в горло через задний проход …
… при помощи простого Запроса+ТаблицаЗначений = Результат любой сложности … эффективнее и проще и предсказуемо …
… ВОТ …
(5) хранение информации в текстовом виде намного проще и предсказуемо.
Уже было говорено, что абсолютно эффективных решений не бывает.
(6), (1) Шепот прав в одном — что опубликовал свое мнение по поводу нарастающих итогов.
Правда в том , что подавляющее(подчеркиваю , подавляющее) большинство пользователей ИС не знают , не умеют использовать запросы.
Шепот схватил это — и молодец !
Весь вопрос в том , как лучше подать материал о элементарном и с примерами и иллюстрациями :
«Запросы … как я их понимаю» или проще «Чайник — для чайников»
где просто и доступно было объяснено «на пальцах» ( а кого стесняться?):
1. Внутреннее соединение
2. Полное соединение
3. Левое…
4. Правое..
5. Соединение по неравенству+ Нарастающие итоги.+ соединение по двойному неравенству и т.д.
6. Сумма с условием , Оператор Выбор и т.д.
Т.е. на мой взгляд полезен будет целый цикл статей . Шепот — молодец !
Что касается самой обработки — я её пока не смотрел. Но посмотрю обязательно.
…хм…
… итоговая сложность расчёта результата не должна быть выше самой максимально простой операции используемой при вычислении этого результата …
… вопрос знатокам «нарастающих итогов»:
например, требуется вычислить 2*3 = …
как ВЫ ? думаете ? как компьютер получит результат … ?
… вооот …
Продолжаю. Теперь о недостатках.
Считаю недостатком отсуствие иллюстраций — рисунков.
Две Простенькие таблички — и стрелками показано какая строка из первой талицы соединяется со строками из второй таблицы. И тогда вся суть соединения по неравенству была понятна даже непосвященному.
Считаю недостатком отсуствие текстов запросов в самой статье.
Текст должен быть на рисунке и разбит на секции :
Поля выборки, условия соединения и т.д.
Т.е. такие статьи для начинающих нужно делать максимально подробными и иллюстрированными.
Перечисленные шаги 1-5 мало ,что дают непосвященному.
Т.е. если бы я был изучающим, я бы твоей статьей не заинтересовался.
Надеюсь след. статья о запросах будет подробной и иллюстрированной.
Давай , Шепот ! Жми !
(8) Шепот , ты не увиливай.
Давай обсудим текст твоих запросов. Чуть позже.
Ish_2 …
декларативный язык запросов — один из самых «дурацких» языков программирования …
придумывался как «для всех» — оказался для «посвщЁнных» …
объснить его работу, словами, по-этапно — не возможно … в лучшем случае картинками … т.к. построение запросов это не язык «логики» а язык «желания» …
.. увиливаешь обычно ТЫ … ответь на (8) …
Так ведь в корень смотришь !
Именно так и нужно : диаграммки и картинки.
Я ж тебя подбиваю…
придумывался как «для всех» — оказался для «посвщЁнных» …
не вижу темы для обсуждения.
Шепот я пришел к тебе в тему . По-честному.
Обсуждаю ТОЛЬКО содержание ТВОЕЙ статьи.
Тема : Запросы.
Ты же меня хочешь затащить в обсуждение некорректных или допускающих бесконечно много толкований рассуждений.
Не-а. Не затащишь.
Только текст ТВОЕЙ статьи. Только текст ТВОИХ запросов.
Обработку не скачал . Скачаю дома .
Угрожаю : долбить буду по -взрослому.
Ish_2 … ты меня удивляешь …
1. по взрослому мне бы хотелось в твоих статьях …
2. я же уже высказался по поводу нарастающих итогов в запросах -в серьёз это обсуждать можно только в философских поисках о границах языка запросов но не для практики … или приведи примеры …
3. именно поэтому и придумали «новые» костыли в виде — СКД … соединив запрос и ТЗ …
4. рисовать рисунки и чертить схемы на такие примеры — уж совсем дело последнее …
5. понимание в запросах приходит только через «ручки», в основном …
… вот …
всЁ таки, мне гораздо интереснее (8) …
… вотТАКмнеОЧЕНЬкажется …
Долбежка откладывается. К сожалению.
1. Страраюсь.
2. Статья Anig99 как раз и переводит фил.вопос о границах использования языка запросов в практический вопрос : Как правильно использовать язык запросов для вычисления нарастающих итогов ? Именно в ней и говорится о том, что «в лоб» применять запрос для таких вычислений не стоит.
Нужно применять вычисление нарастающих итогов для небольших таблиц.
Как последовательно получать эти небольшие таблицы сказано сначала у Anig99 , потом у меня.
Шепот , ты этого просто не понял.
3. Нет . Шепот, СКД придумали совсем не для этого. И проблему трудного вычисления нарастающих итогов СКД НЕ РЕШАЕТ.
4. Жаль
5. Согласен.
6. Не заманишь, хитрец…
(15)
1. Ага.
2. Прочитай статью Anig99 там есть ссылка на реальный отчет который работает в конкретной базе 120Гб.
3. В частности. СКД позволяет делать то , что не позволяет делать постоитель отчета — произвольное группирование колонок отчета, произвольное количество таких группировок.
Пример : В БП 1.6 есть отчет «Обороты счета» и сделан он «вручную» с тяжкими преобразованиями. В СКД такой отчет делается гораздо проще.
СКД — не костыли , а требование времени.
4. Умничаешь ?
5. Умничаешь ?
6. фундаментальные вопросы так не формулируются.
Впрочем , ты же у нас бравируешь отрицанием важности формы, тебе же главное -содержание. Про единство формы и содержания мы поговорим в другой раз.
(16)
1. … слова … слова … слова … как много в них НЕ сделанного …
2. … нууу … онанизм — пусть даже и цифровой то же кому-то приятен …
3. любая ТЗ позволяет группировать — и вдоль — и поперЁк — и «о-боже» даже по-диогонали …
4. нет …
5. ага …
6. чем фундаментальнее вопрос — тем ОН проще … например, почему Земля крутится ? …
п.с. НЕсогласен.
… я говорю о единстве, о гармонии — «формы» и «содержания» … вот …
1…
2….
3. Шепот , СКД надо изучить.
4. Да.
5. То-то.
6. Твоя статья — про запросы.
P.S. Ну вот и хорошо.
(18)
3. ну… ну, да … да … «я эту книгу не читал но по поводу её содержания могу сообщить следующее … » …
4. уломал …
5. ага …
6. ??? … моя статья — срубить «плюс»-ов по лЁгкому …
… но, как видишь … «нарастающие итоги» нафигникомуненужны … ))) …
Ты просто не умеешь их готовить.
(20) .. нууу конечно же … кто жжжеее спорит ….
назвать надо было типа:
1. Пять шагов постижения …
2. Запросы и нарастающие итоги …
3. Метдика решения нарастающих итогов в запросах …
…
.. ну и ещё всякой були-були поднаписать … и обязательно указать много-много ГБайт, жути нагнать рисунками и графиками … и обязательно должны быть непонятные слова типа «глбоко-детальный анализ показывает», «после использования ограничения выборки в таблицах», » скорость получения таблиц результатов при использовании данного метода увеличена в 4-5 раз», привести кучу таблиц с замерами …
… ага … ага …
(21) Кухню свою раскрываешь 😉
(19) По легому срубить не получается, как видишь. 🙂
(0) Слабовато, для начинающих этого мало 🙁
Минусую
Простой вопрос: на какую категорию пользователей ИС ориентирована сия статья?
Профессионалы, как видно из комментариев, в подобной информации не нуждаются, а у новичка (1 скачивание в день) в силу сумбурности описания желание скачать отпадает.
(24) … хм …
вопрос: «на какую категорию пользователей ИС ориентирована сия статья? »
ответ1.
… явно для вас …
ответ2.
… явно не для них…
ответ3.
… ну ни шмог, ни шмог «я» …
ответ4.
… затрудняюсь ответить …
ответ5.
… другое …
п.с. выберите ответ который вам подойдЁт …
… вотРиторическийОтветнаНеМенееРиторическийВопрос …
(24)(25) И тем, и тем это интересно.
Новичкам — как сделать. Опытным — а на фуа это собственно надо.
(26) … зАстрелил … ))) … (: …
Занимательно, но очень долго отрабатывает. Для программиста — не оптимизировано. Для пользователя — быстрее вставить результат отчета в Ексель и там пронумеровать строки. Полностью согласен с (26).
(28) … уписаться можно … ииии с чем ВЫ собственно согласны в (26) и почему ? …
…рекомендую посетить ветки товарищей: anig99, Ich_2, I_G_O_R по теме запросов … там есть и мои комментарии по поводу и нарастающих итогов в том числе …
… вопрос не в том что долго или быстро … вопрос можно или нельзя … и зачем это нужно … ???
ответ: — можно НО не нужно …
… вообщем за что боролся на то и напоролся … ))) … это о себе …
… нуууу тогда бы и оптимизировали бы заодно ужжжж … и нам бы показали …
… нуууу или свой «нарастающий итог» напишите …. нам покажите …
… вот …
(29)
Вот с этим согласен. Я не говорил, что статья никому не нужна и абсолютно бесполезна и не говорил, что нельзя, потому что долго. Для каждой задачи есть своя реализация, зависящая от необходимого результата. Можно — и это хорошо, но в данном случае каждый уже выберет НУЖНО это ему или нет. Вы проделали работу и показали результат и как его добиться. Я всего лишь высказал свое мнение по поводу нюансов при выполнении такого запроса.
(30) … принято .. спасибо … вот …
Сломайте пожалуйста кнопку с точкой у Шёпота теней. Пожалуйста!
Или пусть Dushelov напишите ему драйвер клавиатуры, который будет троекратные нажатия кнопки «точка» заменять на однократное нажатие.
Я не понимаю зачем нужно писать так коментарии:
… бла-бла … бла-бла …
… бла-бла … бла-бла …
… бла-бла … бла-бла …
… ВОТ!!! …
Учитесь уважать своих читателей.
Спасибо за внимание.
(32) тут многие пытались…даже банить хотели. Только смысл? Уж лучше он так пишет, чем матом ругается или имена коверкает.
(32) … у всЕх свОи тАрАкАны … простите ужжж и Вы мои … вОт …
(33) я его не провоцирую
сказали поставить +
http://www.infostart.ru/public/62105/?PAGEN_1=1#comm332007
… Через четверть года идея пригодилась в одном интересном решении, спасибо.
Обобщение по шагам — это всегда результат большой предварительной работы на практике.
Люблю я такие обобщения вначале документов, ибо сразу видны трудозатраты и естественно повышается ценность и желание поглубже вникнуть в смысл статьи особенно для новичка который пока не ориентируется в мире 1С.
Прошепчу спасибо, чтобы не нарушить покой теней Ж)
(39) … очень рад если каким-то образом помогло … вот …