Что нужно женщине или досужие мысли об автоматизации




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

40 Comments

  1. venger

    (0) В дополнение к моим постам (61-му и 64-му) в статье O-Planet’а «Чтобы такого не случилось…» [ http://infostart.ru/blogs/1068/ ] ,хотя и miksla (пост 88-м) и Сhe Burashka (посты 70-72, 74, 76, 77, 81, 82, 87) тоже, ИМХО, очень хорошо освещают там в той статье эти нюансы.

    Reply
  2. venger

    (1) Вчера просто не успел выложить:-)))

    Reply
  3. anbxp

    И этот кто-то третий споётся с тем, кто будет резать — и они вместе того, чей материал будут резать, обуют по полной программе:)

    Reply
  4. venger

    (3) Или наоборот:-) Но суть в том, что планирования на перед, оценки ситуации и разработки проекта и его полной стоимости, до начала работ и уже потом принятия решений и финансирования, а потом и контроля по выполнению, явно не хватает, чтобы такого, о чем речь в статье O-Planet’a не было:-)))

    Reply
  5. venger

    (0), +1, Забыл добавить, что еще и в дополнение к постам, все в той же статье O-Planet’а, larisab (посты 25, 28, 45, 55) и Maniac (посты 56-58), fgremlin (пост 67), sound_kurgan (пост 69).

    Reply
  6. miksla

    Да, картинка идеальная. Но на практике третья сила сильно увеличивает стоимость. Иногда в разы. Часто до начала работы автоматизаторов должны поработать психиатры. 🙂 И самое главное — если любому из нас предложат проект в котором явно ответственности мало, а деньги будут — врядли кто-то откажется из идейных соображений. Однако рассказывать об этом, лично мне, было бы неловко… 🙂

    Reply
  7. biv75

    (6) Сразу видно опыт огромный в автоматизации, полностью согласен.

    Reply
  8. Свой

    заикнуться им о ТЭО (технико-экономическое обоснование), а потом получить на практике все те результаты, которые там будут посчитаны и описаны.

    — вещь очень хорошая, потенциально может резко повыситься процент удачных внедрений, но повышающая стоимость

    часто ЛПР (лица принимающие решение) ТЭО прокручивают только у себя в голове и выдают однозначное решение

    Reply
  9. biv75

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

    Reply
  10. venger

    (8),(9) В общем, как говорится, измени то, что можешь, прими то, что не можешь изменить и … про себя любимого не забывай, все-равно все будет как есть, плюс-минус:-))))

    Reply
  11. vip

    (9) А ты никогда не задумывался, почему эти люди, вообще не смыслящие в экономике и мыслящие на уровне купи-продай, платят тебе, а не ты им?

    А?

    Ну как так получается, что блестящие экономисты, планирующие все на сто шагов вперед, зависят от каких-то лавочников?

    А?

    Может, все дело в консерватории?

    Reply
  12. motogon

    (11) Как-то не корректно поставлен вопрос.

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

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

    Вот по этому так плохо и живем, а Вы спрашиваете почему?

    Reply
  13. motogon

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

    Но с другой стороны, подобные вещи есть, в том или ином виде, на самом деле. У тех же программистов и разработчиков, больше ценятся специалисты хорошо знающие предметную область, которую автоматизируют. Они получается уже ближе к консультантам, а не просто программисты и разработчики. Опять же, в командах на крупных проектах разделение труда, когда есть программисты, а есть постановщики задач, а есть руководители проектов, которые тоже уже ближе к консультантам, а не занимаются программированием. Да и есть консалтинговые фирмы, это тоже применяется. Но перед ними встают теже проблемы, что и у крупных фирм автоматизаторов и франчей, т.е. не получается наладить пока и поставить на конвеер ни автоматизацию предприятий, ни всю отрасль программирования и умственного труда вообще. Иначе б, тот же Китай, также сейчас, как и в производстве, начал бы клепать ПО и разрабатывать проекты на заказ, в больших масштабах, как он это делает с ширпотребом тем же и вытеснять всех с рынка.

    Reply
  14. fgremlin

    Не надо забывать, что третья сторона должна оценивать работы, материалы и прочее. Большинство [IMHO] будут оценивать по ценам «своих» поставщиков, и на работы привлекать «своих» исполнителей… так и зачем это 3-е звено? Сложно найти по настоящему независимого проектника…

    Думаю просто нужно тщательно выбрать грамотного внедренца и не пороть горячку в принятии решений.

    Reply
  15. venger

    (14) Так можно тендер устроить на поставщиков и исполнителей, уж где закупать технику (когда четко ясна вилка плюс-минус) и заказывать работы, когда уже есть хорошее ТЗ, — это не обязательно у одних и тех же:-) А принимать работы будут те, кто гарантирует результаты и разрабатывал проект. Это может быть и собственный отдел, и сторонняя фирма.

    Reply
  16. venger

    (14) +15, мне как-то препод рассказывал, что работал какое-то время на заказах из забугра программистом сидя тут. Так говорил, что ТЗ так расписаны, что просто нудно становится, просто сиди и кодь, особых мозгов не надо, просто знания языка хорошие.

    Reply
  17. Арчибальд

    Все-таки третьей стороной должен быть кто-то, безусловно лояльный к автоматизируемому бизнесу, сугубо в нем разбирающийся, и знающий толк в автоматизации/системотехнике. Для среднего бизнеса это может быть собственний ИТ-шник, которого, конечно, следует лелеять (не факт, что платить). Крупный бизнес, в принципе, может держать для этих задач целую экспертную команду, но в крупных компаниях лояльность давно в красной книге — у нас отнюдь не Япония.

    Reply
  18. venger

    (17) В целом согласен. Просто улыбнуло вот это:

    > следует лелеять (не факт, что платить).

    Орлы! Вы ведь орлы? Да! Значит птицам деньги не нужны:-))

    Деньги настоящего спартанца только расслабят, злость его растворится, кусать и гавкать перестанет, и вся автоматизация провалится:-)))

    Reply
  19. vinsentfire

    (0) Мечтать не вредно;) Так выпьем же за красивую и хорошую мечту о счастливой автоматизации;)

    Reply
  20. Арчибальд

    (18)Большинству птиц деньги нужны, конечно. Исключение — куры, денег не клюющие 😉

    А вообще было бы здорово иметь повсеместно экспертные фирмы, могущие реально определить квазиоптимальное направление автоматизации. Полагаю, и рынок для этого созрел. Однако пока тон задают франчи и прочие ЦКП, которые знают заранее, что нужно внедрять, не заморачиваясь исследованием ситуации.

    Reply
  21. venger

    (19) Андрюха, делу время, Инфостарту — час (в день) 🙂 Отпиши на почту как устроился, Ок? Всем приветы;)

    Reply
  22. venger

    (20) Это бы подвинуло в сторону многих франчей, наверно.

    Reply
  23. Abadonna

    (11)>Ну как так получается, что блестящие экономисты, планирующие все…

    Так называемое знание экономики — обычные интеллигентские штучки.

    [Как выражается мой знакомый доктор наук и профессор: «Я не интеллигент, у меня профессия есть». Гумилев, кстати (который Лев), на вопрос, числит ли он себя среди интеллигенции, решительно отвечал: «Да боже упаси!»]

    Reply
  24. kitminsk

    Прочитал статью, а затем перевел взгляд на календарь, где у меня всякие мудрые фразы каждый день.И что же я увидел : «Чем человек ленивее, тем больше его труд похож на подвиг» :)))

    Reply
  25. venger

    (25) > итак отношения клиент- программист работа равно = деньги программисту!

    > отношения с посредником работа равно = чуть меньше денег программисту +

    деньги (нехилые) посреднику.

    > Хм… и как тут узнать где дешевле?

    Немного не точно, как раз в контексте, описанной Вами ниже ситуации:

    Клиент->Программист = ДеньгиПрограммисту * РискиНевернойОценкиВзаимопониманияПроектированияИТД;

    Клиент->Консультант->Программист = ДеньгиПрограммисту + ДеньгиКонсультанту/РискиНевернойОценкиВзаимопониманияПроекти­рованияИТД;

    Тут уже видно, что далеко не всегда стоит обращаться к консультанту, но когда риски велики (это могут быть разные риски,а может быть и банальное понимание того, что собственный персонал на данный момент не готов формулировать и оценивать, а также видеть целиком ситуации по учету, автоматизации и 1С), то стоит и обратиться, а т.к. неверное проектирование и понимание ситуации будет ложиться накладными расходами именно на консультанта, то ему ой как не захочется гнать халтуру, но тут стоит учесть, что если консультант берет на себя эти риски, то ему стоит дать и власть по реализации его идей. Это все в общих чертах, конечно.

    Reply
  26. Арчибальд

    (26)Когда риски велики, следование советам консультанта типа «надо делать так» эти риских увеличивает. Консультанта можно выслушать, когда он говорит «так делать нельзя, потому-то и потому-то».

    А риски на себя он по-любому не возьмет. Это уже не третья, а вторая сторона будет.

    Reply
  27. venger

    (25) > качество работы зависит в 90% от программиста ибо не понимая зачем что-то нужно сделать это удобным и функциональным- очень тяжело.

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

    Reply
  28. venger

    (27) Странный у Вас консультант получается, как нельзя знает, а обозреть ситуацию, как она в реальности, разобраться в ней и подготовить свои мысли и план действий как лучше и системно это реализовать, он не может:-) А сотрудники, которые в разработке и программировании в 1С, а тем более в проектировании, не очень разбираются в разговоре с программистом, который многие нюансы на фирме не знает, даже банально какие люди на каких местах работают и кто как загружен, могут значит?

    Кстати, вот тот программист на данный момент и выступает в роли такого консультанта зачастую, только заинтересованного и так сказать мастера на все руки:-))))

    Reply
  29. Арчибальд

    (28) Когда я слышу/читаю «программист», как-то не по себе становится. Вроде «дерни за фурыкалку, крутани колобашку, прикинься ветошью и не отсвечивай». Или «кто такой этот пАтерпевший?…».

    ЭкспертПоАвтоматизации-непрограмист=0. Программист-экспертПоУчету~=0.

    Никакой совместной работы не будет, если партнеры не владеют общим языком.

    Конечно, от программиста зависит немного. Много зависит от Программиста.

    Reply
  30. Арчибальд

    (29)Ежели отсутствует перс, который в ситуации на фирме разбирается и может это донести до внедренцев, провал гарантирован. И если фирма своим «программистам» (см.30) не позволила/не заставила владеть ситуацией, провал вероятен.

    А «странные» консультанты — обычное дело. Не то обычно, что он знает, как нельзя — это уже хороший консультант; — а то обычно, что он «знает» как нужно делать, причем разбираться в реальном бизнесе ему не требуется.

    Reply
  31. venger

    (25) > НО самое важное это то что они четко сказали что хотят… Но по готовности они же поняли что хотят другое…

    И к (27) относится.

    Я проводил эксперименты в конторе в прошлом году. Тут хочу оговориться, я не пытаюсь сказать, что супер-пупер мега крут. Но просто хочу обрисовать поле деятельности и подходы для таких консультантов и фирм. Я в какой-то момент взял за привычку, когда речь шла о разработке какого-то блока для какого-то куска деятельности, не слушать пользователей, как что должно быть в базе 1С и как оно в 1С должно работать, а смотреть на изначальную ситуацию, как оно в реальности все происходит без 1С, как кто что делает, как между отделами все это циркулирует, смотреть изначальные первичные данные, в том числе и те файлы Excel и Word, которыми пользуются, и по обязанностям смотрел и по тому, какой отдел с частью какой инфы работает, а потом думать как это алгоритмизировать, улучшить и для чего, и что это даст, и что сделать в 1С для этого, как построить все это в 1С, а что оставить как есть или немного улучшить, но в 1С не переводить (попутно уточняя нюансы, но без привязки к 1С), после чего решал с очень ограниченным кругом ответственных людей, рассказывая свои соображения, слушая их соображения и доводы, что это надо так сделать, а это будет так, а это будет делать тот пользователь, а это этот пользователь, с учетом того, что некоторых пользователей нельзя подключать, а придется этих подключить и т.д., порядок будет такой, последовательность такая, потом был человек, который, когда все готово и протестировано, md’шка стала на сервер, ходил по пользователям, рассказывал что кому и как делать, первое время проверял их, напоминал что где как, помогал первое время пользоваться, сообщал, если кто-то артачится и не хочет, причины, чтоб приняли меры, надо административные, надо, тогда что-то переделывали, а потом все шло по накатанной, после чего результаты были очень неплохими.

    Это все к тому, что автоматизация и учет — это не только программирование, более того, собственно программирование лишь малая часть, на самом деле. Поэтому и не надо все сваливать на плечи узкоспециализированного программиста. По моему банальная мысль и всем известна….

    Reply
  32. venger

    (31) > Ежели отсутствует перс, который в ситуации на фирме разбирается и может это донести до внедренцев, провал гарантирован.

    Знать, как что поисходит на фирме, не всегда достаточно, еще бывает нужно знать, что вот так лучше, это даже не об 1С, а вообще, по организации любой работы…. И Вы хотите сказать, что подавляющая часть мелкого и среднего бизнеса имеет у себя таких людей, который хорошо могут организовать работу фирмы, даже без привязки к 1С? А с этого надо начинать, а 1С или любая другая СУБД это один из шагов в этом направлении, но далеко не единственный, это как карандаш, да он будет писать на бумаге, но вопрос в том, есть ли что записывать? А от крутизны карандаша и умению им владеть, далеко не всегда будет зависеть написанный им текст…

    Reply
  33. Арчибальд

    (32) Ну вот, сам взял и подкрепил 27-30-31 личным примером.

    А чего возражать-то было?

    Есть специалист по автоматизации — успех вероятен. Нет специалиста — успех проблематичен. А если юзать вместо специалиста одноэсника («программиста», франчайзи, ЦКП, далее везде) — риски возрастают.

    Reply
  34. Арчибальд

    (33)Уже длительное время мы утверждаем одно и то же слегка разными словами.

    Конечно, системотехников на большинстве фирм нет. Фирмам для сбственной безопасности к этому стремиться надо. Ну, «лелеять» и т.д….

    ВооооОоотт…

    Reply
  35. SLAVKA_80

    Действительно, досужие мысли…..

    Reply
  36. venger

    (36) А уж какой досужий пост:-))))

    Reply
  37. venger

    (35) Вот, кстати, момент, почему на «своих» тоже не всегда положиться полностью можно:-) [ http://infostart.ru/forum/forum1/topic9901/messages/ ], т.е. имея даже своего «системотехника» и пусть даже и хорошего, ему может противостоять «своя» же менеджерская братия:-)))) И наступить им на мозоли он может не захотеть, ибо работать с ними еще не один год предстоит в одном коллективе:-)))

    Reply
  38. Арчибальд

    (38)В «лелеять» входит и крышевание от менеджеров…

    Reply
  39. venger

    (39) Ниче себе, для этого надо и руководство все эти моменты понимающее, ведь если нет, то «системотехник» зарвется и будет лапшу на уши вешать, превратится в менеджера, да еще и умного, да еще и защищаемого руководством:-)))) Т.е. еще хуже может быть:-)))

    З.Ы. Это я так, в полете свободной мысли…:-)))

    Reply
  40. Арчибальд

    (40) Ну, известно, что самую большую подлянку может кинуть только свой. Это не в автоматизации, это по жизни ;-))

    Reply

Leave a Comment

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