<?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='\
Мощно. Сейчас пробую и видно не дождусь результата. 😀
Молодец! Побольше бы таких концептуальных решений!
Я бы добавил обработку прерывания. Так и не дождался результата на группе 1.500 позиций.
Шоб я сдох… Великолепная работа!
Правда ничего не понял… 😀
Если б описание методики поподробнее увидеть…
угумс.. и подтверждение гипотезы что анализируемые продажи — случайный процесс (?).
каковы минимальные длины выборок?
как работает на малой статистике?
где описание методики? — сделать качественное — и продавать за деньги!!!
.
вопрос сообществу: вы много знаете своих клиентов/людей которые будут использовать данный продукт осознанно, а не в качестве чернйо коробочки?
(4) Присоединяюсь. Честно прогнал по немалой базе, нихрена не понял, хоть и изучал в своё время упомянутые умные буквы.
(5) ответ: знаю по меньшей мере одного.
(6) по (5) — одного из скольки?
Примерно десяток. Это те, кто активно работает с торговлей.
знч = табТМЦ[индексСтроки-индексВеса].Расход;
Показать
индексСтроки = 0
индексВеса = 1
не доработка однако.
Интересно. Делал аналогичное, но «не взлетело» из-за вариативности поставок (т.е. много аналогов, при поставках заменяется товар другим товаром в пределах одной группы. Причем группы явно не формализованы )
(6) Думаю что тому одному из многих хватит и стандартной надстройки в Ексель 😉
(3) 1500 много, конечно. Обработку прерывания поставить можно.
http://www.gistatgroup.com/gus/) , хотел сделать его, скачал демку, погонял на реальных данных (несколько десятков рядов). Совпадения на анализируемом периоде можно добиться изумительного, а вот в части прогноза — 50/50.
(9) Было такое при периодичности Декада, вроде исправил (в Вашем случае может и не в этом дело).
По поводу практической пользы. Я тоже сильно сомневаюсь, что есть реальный интерес. К тому же, можно выгрузить данные и пользоваться пакетами технического анализа. Хотя, по-моему, и от них будет не много прока.
Мне понравился метод «гусеница» (SSA) (
Цель публикации не столько предложение пользоваться этими методами, сколько дать готовый «инструмент» для выяснения: есть ли смысл ими пользоваться.
(12) Просто дать «инструмент» мало — нужно еще уметь им пользоваться или хотя бы понимать принцип его действия. Вот с этим будет проблема у многих…
Имеется ввиду, что метод восстанавливает с большой точностью пропущенные значения? И при этом слаб на прогноз?
(13) Имеется в виду совпадение фактических данных и данных аппроксимации.
В части прогноза по просчитанным примерам совпадение прогноза с фактическими данными было не очень. Да Вы скачайте демку. Идея метода: анализ матрицы автокорреляции и выделение в ней «главных» компонент (закономерностей). Фактические данные можно грузить из Экселя.
Поставил плюс, хотя считаю, что прогнозирование продаж по историческим данным — не результативный способ. Дело в том, что продажи прошлых периодов — не такие уж значимые факторы по сравнению с известными (и, возможно, имеющимися в БД) параметрами воронки продаж: затратами на рекламу, рекламным покрытием, числом «интересов», числом принятых заказов и т.п. Потом есть цена, день недели, сезон, объем запасов покупателей и другие факторы. Ради интереса попробуйте спрогнозировать тем же методом погоду, курс доллара или акций. Думаю, точность прогноза по тем же причинам будет похожей (низкой).
Без знания «физики», то есть без достоверной модели зависимостей, определение коэффициентов этих зависимостей не имеет смысла.
(15) Согласен, что прогноз «от истории» будет слабо коррелировать с последующим фактом. Тем не менее, заслуживает всяческого внимания и развития принципиальное осознание необходимости математических методов в бизнесе. Когда-то на этом поприще мы были «впререди планеты всей» — имеется в виду Василий Леонтьев. Теперь не то уж…
Круто, у меня от прочтения описания уже мозг вскипел 🙂 попробую на базе. Однознчано ПЛЮС
Тут надо еще книжку приложить, чтоб понять как этим делом пользоваться! Очень умно! +
Глючит однако, еще глюк не выкупил попробую подправить и без бутылки с функционалом тут не разобраться, хотелось бы хелпа. 🙂
… прогнозирование на основании статистических данных … делается не для расчёта «будущих продаж» а для расчёта вероятности такого события и для дополнительных расчётов …
… сезонность … эластичность … к тому же не совпадение расчетной величины с реальной — говорит нам о прохождении экстремума … изменении рынка и т.д. и т.п. …
после экстремумов — можно рассчитывать длинну и пропорции трендов, например … а их изменения, в свою очередь, говорят о динамике ожиданий … равновесности рынка … и куче ещё чего …
один параметр — ничего не значит … только совокупность … изменения нескольких парметров — уже говорит о многом … уже диагноз … !
… вот …
п.с. тенденции важнее абсолютных значений … ! … ОДНОЗНАЧНО … !
…
(20) да уж… видеть сквозь цифры тенденции — это и есть тот инструмент который позволяет сколотить состояния. Обычно те кто умеют — инструменты используют самые простые. А ТЕ КТО НЕ УМЕЮТ — ИМ даже такие мега-перфораторы не помогают…
но мы уже как то об этом говорили 🙂
(21) … ))) …
… хм … к сожалению есть ещё понятие «конкуренция» и «конкурентная среда» … отсутствие таких полей в области «экономическоая деятельность» приводит к тому , что устраняется и сам механизм принятие «экономических решений» и сама — «экономическая деятельность» …
… поэтому на поговорку: «если такой умный, то почему такой бедный» есть ответ — «сам дурак» …
… вот …
(22) ну не хочется поднимать вопрос о курице и яйце, но все таки. Что первично в успешном бизнесе? Мозг или инструмент принятия решений? Вот в моей личной практике — я обычно приходил к людям которые и так на «чутье» всегда принимали более/менее точные решение. И когда ты им рассказывал про эффективность, оборачиваемость и прочий АВСХУЗ и они это понимали, давал инструмент…. — вот тогда бизнес взлетал.
А бывает придешь… втираешь-втираешь про оптимизацию… на тебя смотрят… типа … ты чё? учить нас вздумал? кхе… и катятся по накатанной схеме уже лет 10 ничего не меняя и тоже ведь не дохнут гады.. хотя внутри нифига такого нет 🙂
(22) … ))) …
… ммм … хм … ? … Вы спросили или Вы ответили … ? …!
… вот …
(22) … принимать «на чутье» … это профессионализмь выше среднего …
… но любая автоматизация — бЬёт любую попытку «массового» профессионалиЬма …
… «кадры» решают ВСЁ …
… излишняя автоматизация «убивает» передовые технологии …
… излишняя «стандартизация» есть Погибель …
… вопрос «золотой середины» … в исскустве существует «золотое сечение» кто сказал что исскуство не повторяет жизнь … ? … ! …
… если НЕТ течения — то получается болото …
… уффф …
п.с. так или иначе «сегодня» выгоднее банально-воровать чем индуктивно-производить … следовательно система состоит из уравнений с одним неизвестным — т.е. имеет … однозначные ур»о/а»внения … т.е., по факту не является системой уравнений а является набором «простых» уравнений …
… такГДЕжеКОНКУРЕНЦИЯвот …
п.с.2. глубина и ширина «ВЫ»ставляемых обществом или производством задачЪ — требуют соотвествущих инструментов и методов а так же требуют определённую категорию выполняющих … выводы соответствующие …
п.с.3 … от военных пришло (или наоборот … ) — чем больше ложных целей выдал противнику — тем эффективнее и эффектнее победа … манёвр — самое эффективное оружие … гыыы … кажется НИоЧЁМ — но на самом деле экономика — есть оружие и в ней манёвр как и централизация — сверхВажное оружие
… вотМИКРОскопВОТ …
…
Мхм…Михаил, разве метод Холта-Винтерса не предполагает сглаживание с тремя параметрами?
Еще должны учитываться сезонные колебания?
Да, математика это сила.
Вещь стоящая, но для склада сложность не нужна.
Нужно учитывать стоимость хранения, сезонную зависимость покупки.
А так МНК — это конечно тема.
Очень надеюсь на развитие со складским уклоном, там статистику ABC прикрутить и взлетит.
Также сглаживания в складском учете не очень интересно, лучше как раз скачки анализировать, а то далеко от реальности получится.