Как выращивать разработчиков




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?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='\

19 Comments

  1. uri1978

    А по факту, в отделе из 15 программистов царит лютый хаос.

    Reply
  2. gubanoff

    А что делать, когда все курсы пройдены, книжки прочитаны? Можно, конечно, смежные области осваивать, но если они не приносят дохода работодателю, то это напоминает google.

    Reply
  3. sapervodichka

    (2) gubanoff, заниматься любимым делом

    Reply
  4. starik-2005

    (2) gubanoff, доход работодателю приносит уже то, что такой вот все прочитавший сидит у него, а не у кого-то еще. Что способствует сокращению доступности таких вот все прочитавших.

    Но вообще, конечно, статья хорошая, но на практике вряд ли все так гладко. В Вымпелкоме есть программа удержания ключевых сотрудников — в ней все то же самое до буковки, только в статье Вымпелкома все куда грамотнее изложено. И есть курсы на эту тему (удержания ключевых сотрудников) достаточно неплохие, которые ведет одна дамочка вполне вменяемая. А вот тут более менее академическая статья со ссылками на литературу, а не абы как.

    Все таки на Инфостарте мало академических статей — все больше размышления об утопиях, к практике относящиеся крайне мало. Ибо если на каждого сотрудника тратить столько времени, как описано в этой статье. то руководитель больше ничем заниматься не будет, а его дрючат за совершенно другие вещи.

    Reply
  5. starik-2005

    (1) uri1978, по плюсикам сразу видно, кого на работу брать не стоит )))

    Reply
  6. herfis

    (1) uri1978, Это же не означает, что все 15 одновременно работают над одной задачей.

    Reply
  7. herfis

    (4) starik-2005, Не соглашусь. Мне статья понравилась. Вымпелкомовская не понравилась вообще — жуткий калечащий «корпоративизм», хотя поставленную задачу в какой-то мере решает. Только вот задача там несколько другая. А вот раз в пол-года лично с каждым обсуждать в присутствии топ-менеджмента итоги и планы работы, совмещенные с итогами/планами по саморазвитию — это прямо вау. Настоящее супер-комбо. На первый взгляд звучит очень банально, но решает сразу массу проблем, которые принято недооценивать. При этом инструмент демократичный и не затратный.

    Reply
  8. starik-2005

    (7) herfis, ну тогда зайдите в гугл и поищите там, что такое Z-теория и кружки качества — будет много «вау» с вашей стороны. А потом почитайте критику Z-теории и постарайтесь найти в ней рациональное зерно (в критике). Есть такая замечательная американская идея — мозговой штурм. Так вот там на втором этапе необходимо даже в самой бредовой мысли постараться найти рациональное зерно. Без этого мозговой штурм не работает совершенно. Хотя наша альтернатива мозгового штурма — ТРИЗ — является куда более эффективной, но при этом и куда более сложной.

    Reply
  9. serega_sun
    мы наблюдаем коллапс IT-специалистов на рынке труда – предложение многократно превышает спрос.

    Не понял.

    «Коллапс» — это сжатие, разрушение, остановка. Значит специалистов мало.

    «Предложение превышает спрос» — значит специалистов много, но они никому не нужны.

    Что вы таки наблюдаете?

    Reply
  10. herfis

    (8) starik-2005, Вообще не понял, к чему вы это всё написали. Я много чего читаю и уже знаю много умных слов. И именно поэтому смог по достоинству оценить написанное.

    Reply
  11. herfis

    (9) serega_sun, Тоже резануло глаз. Из контекста выходит, что речь на самом деле об обратном. Типа «предложение работы» имелось в виду 🙂

    Reply
  12. wolfsoft

    Хорошо быть богатым и здоровым (с)

    Reply
  13. starik-2005

    (10) herfis, ну как бы что тут сложного? Вот Вы пишите: «А вот раз в пол-года лично с каждым обсуждать в присутствии топ-менеджмента итоги и планы работы, совмещенные с итогами/планами по саморазвитию — это прямо вау». Т.е. на Вас «вау»-эффект производит социальная значимость управления персоналом, когда топ-менеджер снисходит до аудиенции к Вам, присутствуя на обсуждении Ваших планов, поставленных кем-то третьим на основании Вашего текущего развития. Жалкое, конечно, зрелище, но тоже допустимо. А Z-теория — это то самое мифическое вовлечение сотрудника в управление снизу вверх, а критика ее — как средство сдерживания «вау»-эффектизации от последней.

    А знать много умных слов и понимать суть явлений, ими описываемых, — не одно и то же,

    Reply
  14. herfis

    (13) starik-2005, Вы поняли меня абсолютно неверно, придумав невесть что. Польза от присутствия топ-менеджмента — для самого топ-менеджмента. В статье об этом сказано, между прочим. Поэтому ход вашей мысли был совсем неочевиден. А моё «вау» обусловлено исключительно синергетическим эффектом при решении сразу нескольких важных задач с помощью одной простой процедуры.

    Reply
  15. starik-2005

    (14) herfis, и какие же это задачи? Вот, например, считается, что тестирование в 8 раз менее эффективно, чем инспекции кода (Макконнелл, 2005), А много ли контор, в которых производятся инспекции кода? А без этой технологии CMM 4 лвл не получить, не говоря уже о пятом уровне. Но ведь все начинающие конторы множество времени уделяют именно написанию юнит-тестов вместо регулярных инспекций. Почему? Полагаю, из-за того, что кажется, что так вот лучше. А так не лучше, но, по большей части, куда проще.

    А в статье сказано, что топ-менеджеры якобы что-то для себя решают на таких встречах, но не сказано, что именно. Преамбулой к статье идет тема проблем развития сотрудников в компании, которая в принципе не связана ни с чем далее описываемым. Ну описывается потеря «прозрачности» при увеличении количества подчиненных, но топы тут ни при чем — они вообще куда выше того, у кого в подчинении вместо двух человек стало пятнадцать. Так что проблема «прозрачности» решается для менеджера среднего звена. Дальше идет рассказ о пейсателях, одного из которых по науськиванию второго уволили, а потом этот второй сам уволился. Дальше автор пишет, как они стали решать эту проблему. Ну и дальше идет все то, что в любой другой статье на эту тему отражено более развернуто. При том присутствие топа, которым Вы восхитились, ни коим образом не влияет на ситуацию — он тут не более, чем атрибут ландшафта. Ну какие он для себя выводы сделает из таких вот сотен интервью? У всех разные проблемы, все делятся разным, все хотят разного. Ну сходил он на 10 таких встреч — и все. Все последующие встречи будут вариацией этих десяти. Что он там делает на них? А как ландшафт — да, вау-эффект для тех, кто в теме не смыслит ничего.

    Ну а дальше все как раз по теме удержания ключевых сотрудников, которую решили в Вымпелкоме, и решили достаточно хорошо.

    Reply
  16. herfis
    Reply
  17. baton_pk

    (2) gubanoff,

    А что делать, когда все курсы пройдены, книжки прочитаны?

    валить оттуда срочно!!!

    Reply
  18. rayastar

    еще обучать их еще надо? не много ли чести?

    Reply
  19. starik-2005

    (16) herfis, ну вот хоть кто-то смог в итоге изобразить развернутый ответ. При том этот кто=то забыл, что основной его негатив вызвала моя критика статьи, как повторяющейся, но при этом этот кто-то совершенно не увидел, что в начале моего сообщения была как раз реплика о том, что статья хорошая.

    Что мне не понравилось в Вашем первом ответе — критика подхода Вымпелкома, отсутствие мнения о второй статье (понимаю, не осилили — много букв), также реакция «вау» на наличие топа на итоговых встречах.

    О чем я пытался сказать:

    1. О том, что не все так гладко в этой схеме.

    2. О том, что вау-эффект может быть и от Z-теории, как теории, дополняющей Х-теорию (что все сотрудники ленивые) и У-теорию (что все сотрудники инициативны, креативны и ответственны). И меня крайне удивило, что Вы даже не удосужились в этом разобраться.

    3. О том, что существуют в открытом доступе академические статьи по данной проблеме, которая сводится именно к проблеме удержания ключевых сотрудников (не верю, что в этой конторе и с уборщицами так возятся).

    4. Ну и еще кое о чем, о чем в рабочее время мне достаточно сложно рассуждать — работа…

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *