<?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='\
(0) красава)
Есть еще куда расти в части качества материала статей, есть. Иначе бы все эти разъяснения не понадобились…
Ты уже вроде увеличивал выработку вдвое. Только запала на месяц хватило. Опять?
Образно выражаясь, у автора не плохо так подгорело с комментариев к прошлым частям. Оно и понятно — о реальных практиках писать выходит на порядок хуже, чем полу-сказочные истории.
Похоже на балльную систему ПФ РФ.
ну пока очевидно одно — при помощи «баллов» можно эффективность подогнать под любую цифру. Это все какая-то абстрактная хрень.
(6) да, когда эффективность БИЗНЕСА оценивают не по прибыли, это наводит…
Напомнило классику жанра: Петя получал 10000$ в месяц, а Вася 500$. В среднем Петя и Вася получали по 5250$ в месяц. Ну и вторая классика: у Пети было 10 яблок и он их съел, а у Васи было 0 (ноль) яблок и он не съел ни одного яблока. НО!!! В среднем Петя и Вася съели по 5 яблок. С цифрами можно играться по разному.
(8) Есть же прекрасное «по данным статистики у человека в среднем одно яйцо и одна сиська».
(8) Так надо медиану использовать, а не среднее :))
Вот вы циники) Надо порадоваться за человека. что у него есть какие-то сдвиги в работе. И сказать спасибо, за то что делится своими мыслями и наработками.
Зачем размазывать статью на 4 части? Напоминает индусский код. Краткость сестра таланта.
Вывод по всем статьям этого цикла лично для меня: меньше «тупи», больше работай. И будут тебе баллы и профит. Однако, когда загоняешь себя в непрерывный цикл разработки — очень сложно потом возвращаться к нормальной жизни. Теряется полезное умение расслабляться и отдыхать.
Наконец-то что-то полезное в сфере управления франчем 1С. Автор молодец!
Отличная статья. Спасибо.
Возможно я что-то упустил. Но покажите пальцем принцип деления реальных задач на абстрактные баллы. Пока что непонятная единица измерения единственное, что оставило вопросы и не даёт сформировать законченное мнение о цикле статей
(16)Побально, похоже так (не ручаюсь за правильность, как понял):
Раньше:
Разраб 1; Тип задачи 1; 1 час
Разраб 2; тип задачи 1; 1 час
Итого 1 балл на Тип задачи 1;
Теперь;
Разраб 3; Конультант Разраб 1; Типз задачи 1; 0,3 часа.
Возможно еще 0,2 часа будет от Конультанта плюсоваться, но всё-равно прирост!
(16) более подробно система измерения была описаназдесь , прям первый раздел статьи.
Задача не делится на баллы, а оценивается в баллах.
Например, решили вы, что разработка простого отчета (один оборотный регистр, вывод всех измерений и ресурсов, установка формата сумм, никакого УО) стоит 3 балла.
А отчет по двум регистрам — например, остаточному и сведений, не очень сложно соединенным — будет стоить 5 баллов.
А вот отчет с несколькими пакетами, несколькими источниками (регистры, справочники) и использованием макетов для настройки будет стоить 8 баллов (или даже 13).
Вот эти выбранные оценки — типа константы. Они не должны плавать, особенно в сторону увеличения. Вы должны научиться выдавать их на автомате, как совокупную оценку трудозатрат на решение задачи.
Ну дальше понятно. Сейчас вы решаете, например, задач на 100 баллов в месяц, а сможете на 200.
(13)
ну, для этого вывода не надо статьи читать — он очевиден.
Вопрос в том, как именно надо больше работать, что делать, а чего не делать.
(19)Иван, у меня природное чутьё))) Приходится зачастую бороться с ленью и прости господи…прокрастинацией) Если мой движок разогнать — мне уже трудно иной раз остановиться. Поэтому и отметил, что умение расслабляться и отдыхать для эффективной работы также важно, как и умение настраиваться на работу. Жаль, что об этом пока никто подробно не пишет((
(20) могу я написать, на заказ.
В планах есть решение для управления балансом времени, рабочего и личного.
Ну и структурой личного времени.
(18) По поводу баллов — споры возникли по системе постепенного развития дорабатываемого функционала.
Т.е. есть простой отчет 3 балла. К нему добавлено 2 колонки, которые требуют обращения к регистру сведений. Всего с нуля это 5 баллов, но если брать за основу первый, простой отчет — то само приращение функциональности — 2 балла.
Если есть соответствие затрат времени баллам — то возникает вторая проблема. Недобросовестный сотрудник потратит полчаса времени на добавление к простому отчету и время, которое он бы затратил на написание с нуля простого отчета — будет бить баклуши.
Обсуждается целесообразность написания с нуля простого отчета второй, третий.. десятый раз, которая вполне за месяц может сложиться в 100 баллов дополнительно, за которую: а ) (не) будет оплачивать клиент-заказчик б) (не) будет оплачивать руководитель проекта со стороны франчайзи.
Когда клиент понимает, что он ВСЕГДА платит за развитие уже существующего функционала — проблем договориться о ценах обычно не возникает.
Современная тенденция разделения труда в фирме франчайзи на методистов/консультантов и программистов позволяет получить значительный эффект именно за счет контроля за производительностью программиста (тимбилдинг, база разработок и компетенций) и работой внедренцев с клиентами (так же тимбилдинг и база накопленной себестоимости разработок, доходность). Интересна будет тема себестоимости и рентабельности 1 балла в среднем по больнице
(18) Спасибо, получается баллы это просто интегральная оценка трудозатрат. Мы использовали похожую схему, но считали по старинке в «плановых человекочасах», где каждый тип задачи имел определенную стоимость. И результаты сопоставимы с изложенными в статье после перехода на разработку API вместо решения каждой задачи индивидуально.
Но опять же это действительно был средний результат. Какие-то задачи ускорились в десятки раз, какие-то сохранили трудоёмкость, а некоторые стали дольше. Но среднее время на выполнение тех же задач сократилось примерно вдвое.
Кстати потом победили и те задачи которые стали выполняться дольше — довели их в среднем до плановой стоимости, переходом на итерационную разработку API.
(13) В этом случае мне помогла Библия. Каждый раз в 18:00 я вспоминаю слова которыми Иисус исцелял больных параличом — «встань и иди». А чтобы не забыть, я ставлю напоминалку.
P.S. Да не воспылают гневом религиозные фанатики, ибо истинно верующие возрадуются чудесному превращению занудного офисного эксперта в любящего мужа и отца.
Осталось только дождаться, когда Иван осчастливит хоть какой нибудь франч своим присутствием)
(25) школота покусала только автора)) додуматься написать об «золотом франче» не проработав во франче не дня, это серьезно)) Назвал бы он это «золотой разработчик типовых решений» стеба было бы на порядок меньше)
(28) откуда инфа, что «не проработал во франче ни дня»? Автор вроде как более 4х лет во франче был
(27) Окнософт разве не франч? Приведенные графики результатов — не результаты применения методики в отдельном франче?
(30) окнософт не франч.
(31) странно, видимо на сайте 1С ошибочно включили в список аттестованных франчей:http://1c.ru/rus/partners/franch.jsp?id=34548
(28) А разве Окнософт не франч? Что за глупый наброс?
(32) 1С тут не авторитет, в треде полно экспертов, кто лучше 1С знает кто франч, а кто нет =)
(32)
(34)
В этом списке несколько тысяч ИП из одного человека, описанные выше рекомендации однозначно озолотят эти франчи xD
(24) лично мне не нравится (уже) оценка в плановых часах. Вообще, когда есть две оценки в каких-либо часах, всегда есть подсознательное желание их уравнять, с одной или другой стороны.
Я за баллы, или пойнты.
Рад, что у вас получилось. Много у кого получается, только никто, почему-то, не делится результатами и практиками. А это, вроде, важнее техники.
(23) вы описали проблемы недовнедренной системы, когда людям ничего не объяснили, не согласовали мотивацию, не донесли цель и смысл, а просто заставили оценивать задачи в незнакомой единице.
Так тоже можно, только нужен хороший дежурный — вероятно, в описанном вами примере его нет.
Вы не одиноки, внедрение того же Scrum так обычно и заканчивается. Причем, его разработчики с этим смирились, написали манифест, где изложили: «делайте, как мы сказали, и все будет хорошо. Нет, ничего хорошо не будет. Не важно, делайте».
(11) не, мне «спасибо» не надо. Мне надо, чтобы вы пробовали и достигали успехов.
(12) по двум причинам:
1. Следующая часть зависит от реакции на предыдущую (не только в комментариях ИС);
2. Нужно много объяснять по ходу. Хотелось бы просто дать алгоритм, но его должен хоть кто-то в команде понимать.
(8)
можно, если есть такая цель.
У меня нет.
(7) я где-то оценил эффективность бизнеса?
По одной прибыли вроде никто не оценивает. Иначе наемный менеджер прекратит развитие компании.
(6) ответ есть в статье.
(5) не знаком, но спасибо, изучу.
(4) так и не смог понять, о чем вы написали. Что значит «подгорело»?
«На порядок хуже» — это в 10 раз? Как вы оценили?
У кого можно поучиться? В вашем профиле пока не нашел опубликованных статей.
(3) приятно, что следите за моей судьбой.
Увеличивал, и вдвое, и вчетверо. И свою, и чужую.
Но в условиях, описанных в статье, увеличением выработки занялся впервые. Там сознательно нет цифр о моей выработке — только общая и ключевого разработчика. С разработчиком такого уровня работал впервые.
(2) и того, что написано — мало. Вы ведь даже пробовать не будете.
Но статья не для вас, разумеется. Тут полно молчунов, которые никогда не пишут в комментариях.
Но на Business Programming Days мест свободных не было.
(46) Комментарий был про то, что многие тут совсем элементарных вещей не понимают, от того пишут в комментах откровенные глупости… По сути методики я нигде против не высказывался, вполне годная методика, ибо здравому смыслу ни в чем не противоречит.
(46)
А сколько всего было мест? Ну так что бы понимать масштабы события.
(44)
Просто метафора, которая, на мой взгляд, отлично описывает вашу реакцию. Судя по наличию +, оценил не я один. ИС не то место, где надо разводить дискуссии на тему метафор и интернет мемов — для этого есть профильные ресурсы.
(44)
Если бы у вас была техническая статья и речь шла о том, что некое значение на порядок отличается — вот тогда действительно в 10 раз. А тут речь о том, что «значительно хуже». То, что вы придираетесь к словам, вас совсем не красит.
(44)
В моем профиле «статей» нет. И что с того? Нельзя критиковать статьи не будучи автором аналогичных? Ясно, понятно.
А относительно того, у кого можно поучиться, вы уже сами себе ответ дали:
(49)
да я не против, просто понять не могу эту метафору. Можете другой метафорой ту же самую мысль выразить?
да кто вам запрещает-то, критикуйте на здоровье.
Просто понять хочу, у кого лучше, раз у меня хуже.
(35) Есть два вида людей имеющих собственное суждение:
1. Опираются на факты, которые обобщают и интерпретируют
2. Опираются на фантазии.
Вот второй пункт как раз проиллюстрирован 31-м и попытками оправдаться в 35-м посте
(51) факт в том, что на франч не аттестуются, а заключается договор. Его может заключить кто угодно, и это совершенно не значить, что эта фирма будет выполнять работы которые подразумевает бизнес «франчайзи 1С». В этом списке есть государственные университеты, крупные заводы и еще куча всяких разных фирм. Но 90% фирм занимается вполне конкретными работами.
И кстати среди аттестованных хоть по одному направлению Окнасофт нет.
(52) А по существу, почему вы считаете, что описанное автором работать не будет? Только по тому, что он не франч?
(53) почему не будет? Я выше уже писал, что будет, но только в отделах по разработке тиражных решений или в узкоспециализированных отделах (частично). Это все прекрасно работает там, где конфигурацию не изменяет никто, кроме твоего отдела разработки.
(52) Посмотрел список внедренных решений на сайте 1с. Во-первых — он есть. Во-вторых, там фигурирует какая-то тиражная отраслевая, судя по всему разработанная Окнософтом. Чем не франч? Впрочем, специализированный, тут согласен.
Друзья, прошу прощения за спам — поучаствуйте вголосовании .
Кстати, график стоимости балла (единицы работ) теперь доступен в онлайне —https://business-programming.ru/flowcon/diagram?grid=3
Там последняя диаграмма показывает, сколько часов мы тратим на производство единицы работ.
Можете за нами следить.
(57) Поясните, пожалуйста, как считается показатель «Затраты на производство единицы работ».
(58) оцениваем задачи в баллах, делаем работы, записываем потраченные часы.
Полгода назад тратили почти 1 час на производство одного балла работ.
Сейчас тратим 15 минут на один балл работ.
Один балл — это единица измерения работ.
(59) А насколько подробная фиксация потраченного время с вашей точки зрения оптимальна?
(60) она не подробная, даже по задачам не расписана. Просто валом — время.
Для франчей это не проблема вроде. Время там в любом случае фигурирует, в листах учета времени.
Теперь достаточно добавить к задачам оценку в баллах, применить рекомендации «Золотого франча», и все получится.
(60) если же вы не франч, а фикса, то можно фиксировать просто рабочее время — я так делал в беспощадной автоматизации.
Тогда показателем будет количество баллов в единицу времени — в день, в час и т.д.
Можно, конечно, не фиксировать время вообще — просто смотреть на количество баллов. Но там же есть отпуска, отгулы и т.д.
(62) Теперь понятно. Спасибо.
Ато я решил, что стоит по каждой задаче время расписывать.
(63) не, тут котловой метод.
Главное — ввести оценку в баллах. Потому что часы только все путают, особенно во франче.
Там всегда минимум две оценки — сколько потратил, сколько оплатили. И обе — в часах. И надо как-то оценивать, как одно с другим соотносится.
Хотя, в экономике как-то разобрались. Одно назвали затратами, другое — ценой продажи, и считают прибыль.