<?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='\
Отлично получилось. Да, и в УПП работает. Вполне заменяет часть штатных отчетов, вроде как «несколько в одном». Тем более, что в нем не только АВС, но и аналог XYZ-классификации имеется.
А вот насчет ценообразования — если бы в отчете предлагалось не только наименование и количество, а еще и цена номенклатуры? Возможно такое? Вроде информации для этого здесь достаточно.
Было бы неплохо указать для каких конфигураций этот отчет предназначен не только в тексте, но и в параметрах публикации. Тогда его можно будет найти по классификатору.
Еще можно добавить скриншоты.
(1) ценообразование … дааа … проблема … то же думал об этом … )))
(2) сделал …
+ добавил:
1. изменил названия колонок в отчёте с типа «ОстатокНач» на «Остаток начальный»
2. добавил в «заголовок» даты отчёта и в «подвал» — пользователя
… вот …
ЕСЛИ БЫ у меня было УТ или УПП — я БЫ раздраконил твой отчет.
Но у меня нет УТ и УПП , поэтому искренне пожелаю тебе дальнейших успехов.
(4) … жаль … очень … что у тебя НЕт УТ или УПП …
… но Вы можете поставить себе УТ «демо» … и …. и раздраконить мой отчЁт …
… ВоооТ …
Спасибо, отдам маркетологам тестировать.
Вот я и говорю — нужны скриншоты для тех у кого нет УТ и УПП
А почему может возникать такая ситуация?
Если сначала сделать отбор Номенклатура Равно …
Потом этот отбор снять и попытаться сформировать без отбора, то выдает вот такую ошибку:
(7) … хм … скриншоты … ? … сейчас сделаю …
(8) … уфф … вот ведь … сейчас подумаем …
п.с. у меня нормально работает …
… вот …
Очень нужный отчет. Много полезных показателей в одном месте.
Респект +
(9) У меня тоже нормально, но ИНОГДА выдает такое. Или еще — когда меняется период.
(8),(9)
Т8_Итоговая.НормаХраненияМульт
(11) … исправил … посмотри …
(12) … так и есть … !
… вот …
(13) А теперь, после изменений, можно формировать отчет только не раньше 2010 года. Так и было задумано?
(14) … уффф… исправил …
это я специально сделал для своих …
или скачай или в форме «ВыборПериода» в
Процедура ПредыдущийГодНажатие(Элемент)
ТекГод = Число(ЭлементыФормы.Год.Заголовок) — 1;
Если ТекГод < 2010 Тогда
ТекГод = 2010;
КонецЕсли;
ЭлементыФормы.Год.Заголовок = Формат(ТекГод, «ЧГ=»);
КонецПроцедуры
закомментируй «Если» …
(15) да, теперь нормально
(18)
посмотрел ваш профиль, не нашел, о какой разработке речь?пардон, сообразил.
(19) Все необходимое описание — формулы и т.д. — кстати, есть в справке к отчету. Стоит ли выносить все это сюда?
(24) Ну, может быть, в этом Вы и правы, что надо добавить.
… этим отчЁтом в той или иной форме занимаюсь больше полугода …
именно такое такое наличие колонок оправдано для нашё организации …
… раньше был отчЁт раза в два с большим количеством колонок
при работе с этим отчётом и по его данным видно что ОН делает заказ для организации гораздо лучше человека … это видно по сверкам как расчитал отчет и как сделал это человек …
… пределу совершенства нет … условно «открытой» код позволяет его подогнать под нужды своей организации …
непонятно при чЁм тут «планирование» … ? … данный отчЁт работает только по факту и даёт соОтветствующие цифры …
в «моЁм понимание» требуется добавить ценообразование … чтобы как-то назначать цену не с потолка …
… вотТАКмнеКАЖЕТСЯ …
Ура, скриншоты…
Шепот , вот видишь (17)-(20) . И без меня обошлось.
(29) … Ish_2 … ты всЁ время ЗАбываешь … что важно ТВОЁ мнение …
… вот …
хотелось бы конечно по ценообразованию цто-нибудь придумать …
например есть моя статья (в качестве не только рекламы) —http://infostart.ru/public/68862/ + там же ссылка на усебник …
в этой статье — тезисно выбраны всЁ основные факторы влияющие на ценообразование … КАК всё это оформить в «формулу» получения цены ума не приложу …
… вотКТОбыПодсказалБЫ …
п.с. наберите в яндексе что-нибудь на тему ценообразования и вы увидите там Мания1С на первой странице … ОН конечно мог бы наверное просвятить … НО! … но ОН скажет покупайте …
… ВОТ …
усебник.. хи-хи.. Арсипалтя-сан и Сепота-сан 🙂
(32) … а что … ? в чЁм тонкий юмор … ? … вотНЕпонятка …
В УТ работает. однозначно плюс.
Один момент. Сравнил данные вашего отчета и отчета по валовой прибыли из УТ.
Кажется надо итоги по рентабельности и эффективности расчитать следующим образом:
ВЫБОР
КОГДА СУММА(Выручка) = 0
ТОГДА 0
ИНАЧЕ ВЫРАЗИТЬ(СУММА(Доход) * 100 / СУММА(Выручка) КАК ЧИСЛО(15, 2))
КОНЕЦ
и
ВЫБОР
КОГДА СУММА(Себестоимость) = 0
ТОГДА 0
ИНАЧЕ ВЫРАЗИТЬ(СУММА(Доход) * 100 / СУММА(Себестоимость) КАК ЧИСЛО(15, 2))
КОНЕЦ
соответсвенно.
(36) … обязательно посмотрю и сравню … ! вот…
(35) категорически НЕсогласен … даже удивлЁн … и это говорит Eugeneer … !
поясню … есть ещЁ хузе …
1. можно выбрать простой вариант — «Затратный метод» — тогда всЁ элементарно …
2. можно выбрать разные стратегии и методы и статистику и сезонность и параметрический ряд и эластичность и приоритет и много ещЁ чего …
и тогда всЁ не просто …
затратный метод можно даже и не обсуждать … ну разве только в сложных производствах его расчёт и не обходим и сложен ..
а вот обсуждать выбор нескольких парАметров важных для ценообразования и можно и нужно … и пытаться реализовать …
… вотТакаяМысль …
(38) Допустим, выбрали несколько параметров.
Основа цены — себестоимость? Т.е. не расматриваем вопрос продажи себе в убыток?
Тогда задача будет стоять — определить процент наценки с учетом выбранных параметров и каких-то (как их определять — непонятно) коэффициентов. То есть если выбрали параметры приоритет, рентабельность и эффективность, то полученная цена должна расчитываться по такому алгоритму:
Себестоимость + х1*приоритет + х2*рентабельность + х3*эффективность ?
А где брать эти коэффициенты, х1, х2, х3?
И вообще, невозможно высчитать цену с точностью до копейки, об этом уже говорилось.
(40) .. хм ..
Себестоимость + х1*приоритет + х2*рентабельность + х3*эффективность ?
как получать коэфф. Х1, Х2 и Х3 … ?
самое простое это в основу ценообразования положить:
1. затратный метод (самый простой и понятный)
2. статистические данные за исторический период (с учётом инфляции)
2.1. максимизация прибыли
2.2. инвариантность цены
2.3. сезонность
2.4. приоритет оборачиваемости
2.5. эластичность и всЁ что с ней свзано …
… ?
политика предприятия … ?
прибыль:
1 … с цены или
2. … с оборота …
3. … или максимизация прибыли (среднее) … ?
1-2-3 зависит от загрузки мощностей … если производство … !!!
и естественно сырья … стоимость … объёмы … и т.д. и + стоимость предельная … !
+ стоимость предельная = стоимость на изготовления товаров сверх нормы …
+ стоимость еще, зависящая от рынка … и не только …
… ? …
… вотГДЕтоКАтоВот …
(40) Такой отчет вряд ли сможет быть универсальным, его надо писать для конкретного предприятия, учитывая именно его условия. Но, если исходить из того, что универсальность — это зло, тогда, возможно, и получится учесть столько всего, и вывести какую-то формулу, во всяком случае, с известной долей приближения.
(33) Это подразумевается, что все, кроме нас с тобой, игнорируют учебники. Одни — потому, что читать лень, другие — потому, что читать не умеют…
(42) … )))))
… ужжж …
… хотя бы бы определения … ! чтобы америк не открывать и чтоб понятно было …
… (((ВОТ))) …
(43)
А я б Америку закрыл,
почистил
и открыл бы снова (с) Маяковский
Обычный большевистский синдром в условиях развивающегося капитализма. Классовое сознание выше знаний…
(42) Арчибальд с Шепотом читают(читали ?) учебники.
Это , конечно, вызывает уважение … по нынешним временам.
С выходом ,Арчибальд !
(45) Я не вышел, а зашел 😀
Выйду через неделю — мало не покажется 👿
(44)
В детстве читал книжку, почти точная цитата:
Ученики класса 6Б на Совете Отряда решили закрыть Америку, потому как толку он нее все равно нет. Освободившуюся часть карты использовали под стенгазету
😀
Много комментов и нету у меня 8-ки, но имхается вместо непонятного «вероятности продаж» — на чем базируется/считается — нипанятно, былбы введен XYZ критерий «стабильность продаж» — и разложить по матице 3-3 с автораскрывом по щелчку….
(48) а зачем …. ?
п.с. нуууу, разве что только для понта …
… вОт …
… Есть «1С 7» и Есть «1С 8» … «стоимость» разная а «результат» один …. дык зачем же горадить огород … )))
«Понты» — это как удобно представить (матрицей/списком/итд)… 😉
.
А насчет XYZ пристегнуть…? соображения?
я как раз сейчас начинаю работать над абсолютно такой же задачей для планирования закупок (на 7.7).
.
Кстати, кто посоветует достойные материалы по планированию закупок/управлению складскими запасами (инет, книжки) — всякие там оборачиваемости/ликвидности/заполняемости/дниприсутсвия/итд?????
ЧЕ … я вполне серьЁзно …
1. делать ЧНЯ анализ дело хлопотное … а полученная цифра будет коррелироваться с количеством отгрузок … ! … проверено ! … именно поэтому я и отказался от этого анализа в пользу отгрузок …
а считать количество отгрузок просто … !
2. также коэфОборочиваемости — количество / перод … здесь это есть … !
3. ликвидность — здесь отражён как приоритет … !
4. заполняемость — здесь как Достаток и ДостатокПроцент … !
5. здесь НормаХранения …
и т.д.
важный показатель ешЁ это эластичность … но здесь нужна уже и дисциплина и ответственность и желание ЕЁ установить … тогда откроются новые горизонты управления ценой …
сезонный фактор — проще … нужна только статистика …
обязательно нужен расчЁт Инфляци для корректировки основных показателей и их сравнения по различным периодам …
дальше! … дальше! только научное, математическое ЦеноОбразование … это уже и высший пилотаж и архи сложная задача … как комплексное решение дисциплины, творчества, мужества и политической воли … но результат — видимо стоит затраченных усилий …
например … уже писал … у нас на некоторые товары были снижены цены на 15% … что привело к увеличению оборота на 27% а прибыли на 11% … ВОТ …! но не всЁ так радужно … конечно … но повод задуматься огромный …
… ВОТ …
(40) вот где то здесь в ходе рассуждений закралась ошибка:
«самое _простое_ это в основу ценообразования положить:»
если цель простота — зафиксируйте цены — «все по 5 (или по 10, или…)»
если цель эффективность — исключите стратегии простоты и меряйте эффективностью. правда для этого придется цель сформулировать… насколько помню это у вас прибыль. только вот есть проблема — одной и той же прибыли можно достичь совершенно разными путями. И у каждого пути свое ценообразование.
PS А если честно мне кажется, что Вам просто мат.моделирование нравится.
(52) … дык от него и отказываемся …
мат.моделирование —
ЭКОНОМИКО-МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ [economic-mathematical modelling, economic modelling] — описание экономических процессов и явлений в виде экономико-математических моделей. (Иногда тем же термином обозначают также реализацию экономико-математической модели на ЭВМ, т. е. искусственный эксперимент или машинную имитацию, машинное решение экономико-математической задачи — однако это может вводить в заблуждение.)
Как и всякое моделирование, Э.-м. м. основывается на принципе аналогии, т. е. возможности изучения объекта (почему-либо трудно доступного для исследований) не непосредственно, а через рассмотрение другого, подобного ему и более доступного объекта, его модели. В данном случае таким более доступным объектом является экономико-математическая модель. При построении моделей те или иные теории или гипотезы благодаря формализации и квантификации становятся обозримыми, уточняются, и это способствует лучшему пониманию изучаемых проблем. Моделирование оказывает и обратное влияние на исследователей, требуя четкости формулировки исследовательской задачи, строгой логичности в построении гипотез и концепций.
Практическими задачами моделирования являются, во-первых, анализ экономических объектов; во-вторых, экономическое прогнозирование, предвидение развития хозяйственных процессов; в-третьих, выработка управленческих решений на всех уровнях хозяйственной иерархии.
… разве ЦеноОбразование не от Затратного механизма не есть МатМоделирование (найти подходящее уровнение, систему функций описывающих реальную модель) …
… вот …
(53) сорри не прочитал до конца
круто! Молодец!
Спасибо! Прикручу, поверчу 🙂 Подход серьезный