<?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С, ни крестика, ни «ок» «
(1) vano-ekt,
Кнопки и крестик убраны осознано, это не от 1С зависит. Тут важно было создать условия, при которых начало работы с программой — это гарантированный переход к списку задач. Чтобы нельзя было сказать — я не заметил, окно не то было на экране.
Поэтому само окно модальное, и пока не кликнешь на ссылке «Перейти к списку задач» начать работать не сможешь. Но это только тогда, когда на складе ожидают получения поступившие товароматериальные ценности. Первую минуту видеоролика посмотрите, там это хорошо видно. На всех прочих окошках все кнопки и «крестики» присутствуют 😉
Не отображаются картинки.
(3) ashvik,
Спасибо за подсказку, для моего хостера количество заинтересовавшихся этой статьей стало откровением 😉
Перенес картинки на Инфостарт, подправил статью.
(2) nimus, коллега иронично это сказал 🙂
интересная задумка, нужно будет где то как то реализовать))
(0) Замечательная мысль. Только для практической реализации, чтоб охватить множество возникающих задач, нужно уже целую подсистему какую-то организовывать. Под один алгоритм точно не получится все впихнуть.
Аналогичные подходы использую у себя
Работает
На мой взгляд допущены две принципиальные ошибки
Первая
Начиная со вторго предупреждения у пользователя присутствуют альтернативы что позволяет ему не выполнять свои обязанности -иначе не было бы третьего экрана
Единственным приемлемым вариантом который гарантирует в достаточно высокой степени выполнение нужных действий является » блокирование» работы до тех пор пока не будет выполнено требуемое действие, например если пользователь не выполнил второй экран то через десять минут снова этот экран не выполнил через пять минут снова экран И так далее
И контролирующие органы лучше уведомлять без напоминания исполнителям — внезапный вызов на ковер или лишение премии вдруг -они оказывают благотворное влияние
(8) CheBurator,
Осознанные альтернативы, действительно, присутствуют. Но в схеме предприятия отказ от потребности проходит согласование в электронном виде через контролирующие службы и директорат + требует обязательное пояснение причин изменения потребности. Т.е. не очень приятные альтернативы…
Напоминание раз в 10 минут — это слишком жестко. А что если задержка вызвана отсутствием спец.транспорта для перевозки закупленных ТМЦ?
А в части контроля без предупреждения, также ранее так считал. Но время показывает, что в реалиях крупных предприятий персоналом и его отношением к работе стоит дорожить. Депремирование не повышает уровень мотивации, а убивает его. Но тут от решения топ-менеджера. Мы осознанно пошли по описанному выше пути.
И очень приятно было прочитать ОСОЗНАННЫЙ комментарий. Спасибо!
+ за идею
Один мой знакомый в 2001-2002 годах взял за работу у одного регионального ГазПрома 60 тыс.руб. Внушительные тогда деньги в те годы. За то, что в 1С, тогда 7.5 сделал систему предпреждения и обучения. Бухгалтера предприятия были просто с
(10) в общем согласен
Но имею собственное мнение
Конечно многое зависит от частностей
Главное что отмечено — следует дорожить персоналом
Согласен
Но каким персоналом?
Дорожить следует теми кто осуществляет или имеет навыки управления и организации работы персоналом
Остальных то есть Исполнителей -их сейчас как грязи
Даже если они называются громкими словами типа менеджеров и прочего
Както вот так
И нефиг ими дорожить
Если дорожить такими раздолбаями которым по три раза напоминать надо- откуда управленцы получат внятный линейный персонал на который можно опереться?
(11) CheBurator,
На крупных промышленных предприятиях «раздолбаев» большинство ) Обычно — подавляющее ))
Оба варианта имеют право на существование. Применяемый подход осознано должно выбирать первое лицо. У нас выбор был в сторону «мягкого» метода, но еще лет 5 назад я бы тоже очень рекомендовал «жесткий».
В свое время занимался коммерческой разработкой решения по учету зп. Скажу, что пользователи со временем начинают работать с программой на автомате и перестают читать сообщения системы. Указанный подход при этом имхо хорош, но я бы добавил к второму окну таймер, чтобы окно в принудительном порядке при первом появлении висело перед глазами пользователя некоторое количество времени и пару кнопок по которым пользователь сразу мог выбрать некоторые варианты действий.
По опыту работы в одной торговой организации я бы предложил отказаться от третьего предупреждения, заменив его ежедневным отчетом для руководителя, в котором бы выводились просрочившие время выполнения процедуры грешники списком, с указанием времени просрочки.
Про депремирование стоит отметить отдельно, если процедура и сроки доведены до всех и сроки в которые надо уложиться для выполнения задачи выполнимы, то депремирование будет иметь хороший мотивационный фактор. Ведь при невыполнении условий каждый работник будет знать, что косяк лично его и у него были все возможности не напрягаясь избежать наказания.
Под УПП 2.0 надо так же.
Всё это хорошо, но есть ли какие нибудь рекомендации по реализации всей этой прелести?
Ведь просто так взять и запустить систему информирования не так то просто.
Идея хорошая но в наших условиях работать не будет. У нас какой менталитет что на все ети сообщения большиннству трудящихся просто наплевать. Хотя идея хорошая. Автор так держать.
Я считаю, что предупреждать о передачи информации в компетентные отделы нужно во втором окошке, а в третьем разместить единственную большую кнопку «Распечатать бланк заявления об увольнении» 🙂
17 Это уж слишком, а если человек в командировке, в отпуске, и т.д.
Но в больших предприятиях очень много таких ситуаций, не всегда зависящих от сотрудника и это целая большая подсистема
На предприятиях бывают разные подходы к управлению и разделению ответственности, главное, чтоб при описанном Выше подходе, когда пользователя хотят приучить к списку задач, не было обратного: «Я не сделал, потому, что у меня в задачах такого не было…».
Не плохо бы еще реализовать напоминание через подключенное оборудование, например, электрошок.
По собственному опыту знаю, что «юзеры» 1С в большинстве своём крайне эгоистичны и не любят выполнять действия, которые напрямую не приносят им пользы. Например, менеджеры по продажам, делая всё возможное для увеличения продаж, мало заботятся о правильности бухгалтерских проводок своих документов, или правильности формирования налоговых накладных, или правильности движения и учета товаров на складе… Безусловно есть исключения, но сознательные исполнители попадаются очень редко. Потому и нужно придумывать инструменты и механизмы, подобные описаным в статье. Автору «плюс».
А если и электрошок не поможет, то стрелу выпускать ему промеж глаз. В назидание другим, чтобы не повадно было.
А если серьезно, то Автор статьи прав и, полагаю, подобные методы напоминания должны работать.
Хотя, если вдуматься, что мешает сотруднику все сделать вовремя. Возможно недостаточная мотивация. На мой взгляд, если в течение первого месяца работы сотрудник вовремя не выполняет поставленных задач, то это легко исправляется, как раз именно теми методами, которые предлагает автор статьи. Если же в обязательность и ответственность это не конек ваших сотрудников и это никак им не прививается, то вопрос уже в правильности применяемых KPI и мотивации сотрудников. Либо вопрос к кадровикам.
(22) — кадровые службы крупных промышленных предприятий — это почти всегда клоака. Да простят меня те кадровики, где это не так. Иногда кажется, что куда более важной задачей, чем найти кандидата, является отказать кандидату. И второе. Новые сотрудники сразу привыкают к схеме автоматизации. Но часто автоматизируется предприятие, где по 40 лет сидят кладовщики, которые категорически не хотят ничего нового. Вот тут всё это и выручает.
А по сути комментария — всё по делу, со всем согласен.
Во всей компании не нашлось руководителя с твёрдым Х(арактером) чтобы поставить спящего кладовщика на место?
Все боятся вступать в конфликт? А так, если что, никто ничего не говорил, это программа сама кляузу написала, автоматом.
Какой грозный кладовщик, всех застроил. Без программы не обойтись.
это попытка заменить административное воздействие автоматизацией. Столько сил впустую. Автору респект, потратил, написал, описал, думал, НО.. там где это не надо никому…. а компьютер не включил? у меня ваш монитор не показывает! каких СИЗ? у меня ваша программа не работает :))
Как зонтичная реклама основного продукта публикация хороша 🙂 Все правильно, коммерческие то публикации имеют совсем другие требования
Нельзя так строго с пользователями. Больше всего русский человек ценит свободу. ))) Иначе нет творчества, нет фантазии, нет азарта.
Забыли как раньше сами всего боялись, и программисты 1С были самые неуверенные люди на свете: «Вы уверены, что хотите закрыть программу?», «Вы уверены, что хотите провести этот документ?» и т.п.
А как уверенность пришла, так и над пользователями можно диктат устроить? ;-)))
(26) adapter, Это не реклама, продукт не продается. Всё тривиально и без меркантильности. Просто обмен опытом.