Что общего между 1С и BMW




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

35 Comments

  1. Арчибальд

    Да… УЖ!

    Взгрустнулось…

    Reply
  2. СергейКа

    Прикольно. И реклама в меру воткнута 😀

    Однако сравнение с BMW мне кажется не совсем корректным.

    На мой взгляд, точнее будет сравнение с какой-нибудь иномаркой российской сборки: база отличная, но корявые руки сборщиков…

    Reply
  3. Spartan

    Ну про скрытую рекламу упоминать не будем… 😎 Как говорится, хозяин — барин. А вообще довольно интересно — есть у автора определенные литературные таланты. 🙂

    Reply
  4. GSoft

    Таланты есть у всех))))

    как говорится кто-то умный, а кто-то талантливый))))))

    Reply
  5. fAngel

    интересные специалисты на собеседования приходят не знающие простейший shell DOS я в шоке 😮 , это же не к серверу unix не подключиться, ни почту настроить все только через кнопочки 🙂

    PS мое мнение 1С должен знать бухгалтерию, как администрировать, настраивать компьютеры и программировать на 1С и скриптовых языках программирования.

    Reply
  6. GSoft

    ситуация такова что большинство молодежи при нулевом опыте хочет получать много а при этом не то что ничего не делать но даже и учиться ничему не хочет 😮

    Reply
  7. СергейКа

    (5) Позволю себе не согласиться 😉

    мое мнение 1С должен знать бухгалтерию, как администрировать, настраивать компьютеры и программировать на 1С и скриптовых языках программирования

    Забыли еще сварить-принести кофе и стриптиз станцевать…

    И швец и жнец и на дуде игрец… Именно из-за таких мнений и пестрят порталы вакансиями, где хотят за одну зарплату 3-4 специалистов в одном флаконе. Бред.

    Хороший специалист может всё это знать, но не должен.

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

    (7) Ага.

    5-летку в 4 года в 3 смены на 2 станках за 1 зарплату

    Проходили…

    Reply
  9. Lionzi

    (5)

    PS мое мнение 1С должен знать бухгалтерию, как администрировать, настраивать компьютеры и программировать на 1С и скриптовых языках программирования.

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

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

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

    Reply
  10. WKBAPKA

    знать и практиковаться — разные вещи… это верно

    Reply
  11. GSoft

    (10)

    смотря как знать

    как правило знание приходит из опыта

    Reply
  12. venger

    (0) В качестве ложки дегтя и здорового сарказма;-))) Статья — аля «сейчас я буду показывать какой я умный, на фоне какой-нибудь темы»;-))))

    Узнал много нового об авторе и его проектах, но толком так и не понял, так подменяет ли собой ИТ-директор — аналитиков, консультантов, логистов, менеджеров и собственно директоров, хозяев или все-таки его задача управлять ИТ-отделом, также как, например, начальник отдела продаж, не подменяет собой все и вся, как создается впечатление в статье о недостижимом CIO?;-)))

    Reply
  13. GSoft

    (12) Саша ну насчет «аля» ты загнул)))) хотя трактовка мне понравилась 😀 😀 😀

    статья получилась спонтанно из реального разговора, о чем собстно и написано в начале

    а если серьезно — то это больше мысли вслух, да и про проекты то толком тут не сказано

    что касается нач. отдела, ит-директора и CIO то тут вобще довольно интересный вопрос

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

    Помимо всего прочего у него в подчинении, как правило, уже ИТ-департамент, который состоит из нескольких ИТ-отделов, в которых есть собственный начальник. Они то и руководят линейными службами и сотрудниками.

    То есть получается что CIO находится на стратегическом уровне, а нач. департаментов на линейном

    что до того верно ли выражение CIO=ИТ-директор то ответ дать очень сложно

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

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

    Во втором — все гораздо серьезнее — у нас в стране нет квалификационных требований к должности ИТ-директор, впрочем как нет в квалификаторе должностей самой должности. То же относится и к CIO. Спрашивается — как квалифицировать того или иного сотрудника — да никак. Только из разговора с ним, ибо на визитке может стоять все что угодно, а по факту сами понимаете…

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

    Ко всему прочему есть еще и ИТ-менеджеры….

    Поэтому вопрос кто есть кто или в данном контексте более приемлемом who is who очень сложный.

    Reply
  14. GSoft

    (12) +(13)

    так подменяет ли собой ИТ-директор — аналитиков, консультантов, логистов, менеджеров и собственно директоров, хозяев или все-таки его задача управлять ИТ-отделом, также как, например, начальник отдела продаж, не подменяет собой все и вся, как создается впечатление в статье о недостижимом CIO?smile;-)))

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

    Я думаю что нет, потому что у каждого из управленцев этой цепочки свои задачи и свой уровень ответственности.

    Reply
  15. venger

    (13),(14)

    Саша ну насчет «аля» ты загнул)))) хотя трактовка мне понравилась 😀 😀 😀

    Это из «Большой разницы» пародия на Познера;-)))

    И все-таки, чтоб «пощупать» поле ответственности, за что может получить по шапке или даже быть уволен западный CIO и, для сравнения, наш ИТ-директор?

    Reply
  16. GSoft

    (15) за все что угодно

    приведу небольшой пример — несколько лет назад произошла история в одном из операторов большой тройки у которого порядка 80 vip-управленцев к каждому из которых был приставлен персональный айтишник

    так вот — одному из таких айтишников поставили задачу (внимание!) найти тюнниговое агентство мерседес которое может сделать тюнниг машине при этом чтобы ее не сняли с гарантии

    и на все про все месяц

    не нашел — человека уволили

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

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

    Reply
  17. webester

    Мне одному показалось что автор страдает тем, что его не ценят? и оттуда раздутые «труд ИТника нельзя переоценить» только в более глубокой обертке, «1С и BMW» — «Жизнь как чашка кофе, что такая же горячая и ароматная? Да нее Выпил и пофег!» Вы знаете 1С это как кровать — на первом уровне конечно сам диван это как платформа, на втором матрас — это настройки и компоненты, ну а третий это постельное и человек который на них спит — это конфигурации. 1С это бутерброд… я так долго могу продолжать. ИМХО «ниочем» или автор решил что этот портал для тех сотрудниц как та которой он аналогии на бумажке рисовал?

    Reply
  18. GSoft

    (17) интересно где же Вы страдания то нашли? 😀 😀 😀 😀

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

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

    Вы оцениваете с позиции своей собственной картины мира, которая не обязательно совпадает с моей или чей-либо другой 😀 😀

    Reply
  19. Арчибальд
    Если раньше ИТ–подразделения обслуживали вычислительную технику и оргтехнику, каналы связи, наборы стандартного программного обеспечения, то теперь все это стало лишь инструментом для информационных технологий, без которых компания работать не может. Информационные технологии стали использоваться как на уровне принятия решений, так и на уровне функционирования самого бизнеса. Потребовалось специализированное ПО, которое нужно было создавать, сопровождать, развивать.

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

    И все время результаты работы ПО были основой для принятия решений.

    Reply
  20. GSoft

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

    Reply
  21. webester

    (18)Хотел в двух словах, придется развернуть ответ. Статья выглядит как солянка из несвязанных между собой абзацев.

    ИТ-шники – кто они? Баян про то что хороший спец обязан быть узкопрофильным уже на зубах скрипит(хоть не слово в слово как у вас, но все равно), ну да ладно можно пережить, хороший баян можно перечитать пару раз

    Часть 1. Чем мы занимаемся на работе — тезисы: в проблеме нужно хотя бы попробовать разобраться и учите матчасть господа, мне помогло, поможет и вам. Мне казалось что эти тезисы понятны и без ваших глубокомысленных рассуждений любому адекватному специалисту.

    Часть 2. Что общего между BMW и 1С я и говорю что здесь такая аудитория которой в целом не к чему рисовать компоненты на бумажке, мы вам сами можем таких бумажек нарисовать.

    ИТ – это организация в организации тут тоже непонятка ИТ отдел в каждой фирме свой свои задачи, обязанности, специфика, объемы и пр. и говорить что у вас истина невозможно в принципе. Как бы ценность нулевая для читателя так как он не может сказать про него это или нет, придерживаться изложенных принципов или нет.

    Давайте подведем итоги и откинув эмоции, греющие душу воспоминания про дискетки и прочий информационный хлам, оценим статью с точки зрения информативности: -1, вы съели мое время не дав ничего взамен. Ладно бы повествование захватывало а то и здесь как бы не фонтан. В целом непонятно отчего, зачем и почему данный материал

    Reply
  22. venger

    (21)

    …вы съели мое время не дав ничего взамен…

    Меня осенило;-) Так вот кто такой мастер-CIO (солдат Швейк) — разговор с которым не даст конкретики, но чувство, что разговор был содержательным и вроде как тему обсудили, останется;-)

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

    (22) Телефонный разговор должен быть кратким и ясным (с) Поручик Лукаш

    Нет, ничего не обещал. Но так ласково посмотрел… (из рассказа о встрече с Горбачевым)

    Reply
  24. Bor_ka

    Если бы можно было поставить два плюстка — поставил бы два.

    Если бы четыре — поставил бы четыре…

    Не пойму, за что бьют автора.

    Reply
  25. venger

    (24) Снала аргументируй свой «восторг», там видно будет, как так сказать, чтоб не обидеть;-)

    Reply
  26. 12345678999

    много, ни о чем и глупой ностальгией прикрывая рекламу

    почти судоку 😀

    Reply
  27. tango

    «Чем мы занимаемся на работе

    Я стал вспоминать свой рабочий день и понял, что ровным счетом ничего не было сделано.»

    🙂

    Reply
  28. awk

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

    Reply
  29. СергейКа

    (28) Если иметь ввиду 7.7 (как в статье), то да, согласен 🙂

    Если же иметь ввиду собственно 8.2 (текущий продукт), то даже безо всяких доработок и примочек платформа «тянет» на передовой формат по сравнению с «забугровыми» продуктами, сколько бы её ни хаяли.

    Естественно, ИМХО.

    Reply
  30. awk

    (29) Это с какой точки зрения на нее смотреть. Если с точки зрения водителя, то да. А с точки зрения механника из гаража, то смотря в чем. Для меня, так нет ничего лучше чем интелисенс в семерке, визуал студио и т.д. В восьмой версии его нет. Это не интелектуальная подсказка — это обрубок. Веб морду и сервисы я и к семерке прикручивал. Так что тут сомнительный плюс. Мое имхо:

    1С 7 хуже чем 1С 8.Х

    1С 7 + 1С++ лучше 1С 8.0 и 8.1, но равно 1С 8.2

    Боюсь, но если брать в критерии скорость и максимальное количество пользователей то 1С 7 + 1С++ выйграет.

    Reply
  31. lookindenis

    имхо имхо имхо =)

    статья улыбнула

    поставил +

    хотя она скорей для вики или лукоморья…

    но

    автор чуток забыл, что ит «директор» — это (по большей части) Руководитель!

    затем — спец по Информационным технологиям

    ну а потом — программист и (возможно) спец по «железу»

    А руководитель — это Организатор! во первых, и человек, принимающий десятки (а иногда и сотни) ответственных решений за день =) а не «подписываем кипу бума.. итд».

    Такой человек зря ест свой хлеб =)

    Если только он не работает в организации, состоящей из 50-ти человек и владеющей 200+ га производственных площадей… такая организация активно создаёт вид бурной деятельности и мнит себя управляющей конторой. А по сути — просто доит трудяг, т.к. вовремя прихватезировала гос завод =)

    ЧТО Вы им можите дать?

    «ИТ — это организация в организации, которая должна делать все для того, чтобы повышать эффективность бизнеса» — это можно сказать почти про любой итр отдел =)

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

    В итоге статья полезна, особенно для не айтишников =)

    +

    Reply
  32. n949eo

    Плюсую) Спасибо)

    Reply
  33. Gulak

    Очень любопытно и познавательно!

    Reply
  34. Gulak

    Тоже плюсую! Спасибо!

    Reply
  35. GSoft

    (3) Spartan,

    позвольте вопрос — а где скрытая реклама. Ибо когда статья писалась просто описывая истории из прошлого и не более чем.

    или любое упоминание любой компании это реклама.

    Не подумайте ничего плохого, мне просто любопытно))

    Reply

Leave a Comment

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