Как подготовить инструкцию для подчиненных




Принцип обмена данными из 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='\

7 Comments

  1. CheBurator

    Текст отфарматирован бяково!

    Reply
  2. skalex

    Пишу инструкции, таким образом, уже ни один год. Пришел к этому из-за большого количества территориально разбросанных пользователей, а также большой текучки персонала. Полученные изображения предварительно обрабатываю в графическом редакторе. Разработал определенный стиль форматирования и написания. Также стараюсь предельно доступно излагать материал. Но, не смотря на все мои старания, столкнулся с рядом проблем.

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

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

    Писать на эту тему можно и далее. Для решения проблемы можно лишь посоветовать, изначально построить работу так, чтобы рабочий персонал (для которого данная инструкция пишется) понял, что «спасения утопающего дело рук самого утопающего», ну а нам надо им в этом «помочь» (порой просто не помогать им лично в тех ситуациях, которые описаны в инструкциях). Кроме того, можно проводить некое подобие зачетов на знание инструкции. Разработать систему поощрений и наказаний и использовать ее при оценке знаний персонала.

    Reply
  3. ExugHa

    Мне понравилось следующее

    «Возможно, в самом запущенном случае пояснения даже придется начать непосредственно с этапа включения компьютера, с указание цвета кнопки на системном блоке и того, что пользователь должен увидеть на мониторе после завершения включения. Ничего страшного.»

    Знаете, а когда они при приеме на работе в графе владние ПК пишут — «Да», это что?

    Раз принимаете человека на должность требующую умение работы на ПК, то и принимайте действительно умеющего а не того кто только видел ПК.

    По поводу обучения работе с ПО, есть курсы для специального ПО, включая и курсы по ПО 1С, есть книги, есть справка по F1 в конце концов.

    Инструкции следует писать только к каким-то своим специфическим действиям, к самопальному ПО и т.п.

    Reply
  4. mihmih

    ООО, да автор, ты просто изложил мои мысли! Я тоже так делаю.

    >>когда они при приеме на работе в графе владние ПК пишут

    Маааладой, человек! (устало) Не смешите меня — у нас люди с ДВУМЯ высшими образованиям (а без высшего вообще не берут) ищут пробел на доп. клавиатуре и не могут ввести с первого раза пароль…

    (2) to skalex:

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

    >>По поводу обучения работе с ПО, есть курсы для специального ПО- НЕА НЕ ТО! Эти мануалы пишут кто угодно — но по ним нельзя научиться работать ОБЫЧНОМУ ЮЗЕРУ

    А инструкции в картинках — это тру. Почему? Потому что при правильно написанной инструкции (да, да с нажатием кнопки «ВКЛ»)

    можно взять на работу при _прочих равных условиях_ человека, скажем так, менее образованного, то-есть на меньший оклад! Он (человек попроще) и понтов меньше кидает, и к ЗП претензий меньше и заменить его ЛЕГЧЕ!

    Reply
  5. AndrewEv

    а я инструкции подшиваю к тем отчетам и обработкам, которые создаю. Делаю кн.с вопросом, интрукцию в HTML и читайте на здоровье…

    Reply
  6. Душелов

    А привыкайте «справочную инфурмауию» использовать в своих разработках… Она — HTML — и картинки будут и прочее… И подшивать ничего не надо, за исключением места, где картинки эти хранить.

    Reply
  7. asisdes

    Ох, не удержался, тоже на крапаю коммент.

    Инструкции нужны в первую очередь руководству и спускаться должны сверху вниз. Да, да, с самого верха… т.е. Директор должен расписать начальникам отделов, что они должны делать и за что получат свои деньги, начальники отделов в свою очередь расписать своим рабочим.

    1. Дело в том что, при не выполнении своих обязанностей, должные инструкции это документ от которого можно будет оформить замечания сотруднику и если таких замечаний накопиться более 3 штук, легко уволить сотрудника или принимать меры, которые будут справедливы.

    2. Руководство при приеме на работу обязательно должны будут ставить условие что, кроме корпоративных правил и трудового кодекса, есть еще и трудовые инструкции и при нарушении их сотрудника могут наказать, вплоть до увольнения

    3. Ну, и конечно при разборе косяков, на основе инструкции легче раздавать люлей чей все таки это косяк. т.к. без четких правил и обязанностей очень сложно предъявить рабочему, он тупо скажет Что это не входит в его обязанности.

    Reply

Leave a Comment

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