Не попадитесь на удочку менеджера




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

25 Comments

  1. Загоните текст в Word, ошибки режут глаз

    Reply
  2. O-Planet

    Загнал. Не нашел.

    Reply
  3. «ОШИБКА 4: не покупайте просто программу без оговоренного этапа внедрения и обучения, который будет оплачен по факту того, что Ваши бухгалтера смогут легко ориентироваться в программе.»

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

    Reply
  4. Если работать приходиться в районах, тогда встает вопрос, где найти нормальных и граммотных бухгалтеров. Не секрет, что многие бухгалтера имеют смутное представление бухгалтерском учете.

    Reply
  5. O-Planet

    > А если бухгалтера просто саботируют внедрение новой программы? То у них времени нет, у них отчеты, то еще чего. А ведь такое отношение сплошь и рядом. Ну не хотят они напрягать мозги и учиться работать с программой! Они хотят, чтоб она за них все сделала, при этом даже данные не вводить. В этом случае данный пункт просто не достижим.

    Нас такие проблемы, конечно, особо не затрагивают, потому что мы — частники в основном и просто сразу с подобныими фирмами работать не будем, если бухгалтера саботируют работу. В этом смысле лично я поступаю следующим образом: сразу оцениваю «слабое звено», настраиваю клиента на работу еще на этапе составления ТЗ, предупреждаю, что можно ждать, а чего нельзя от работы с программой, говорю директору, чтобы он всячески настраивал коллектив на работу вплоть до увольнения . Не забуду случай, как в процессе одного внедрения, которое длилось целый год, директор поменял весь штат бухгалтеров и операторов как раз по этой причине. А это было 15 человек! К концу года из прежних осталась только одна, и ее назначили главбухом потом. (Там, правда, директор еще тот был!) Вообще, работа программиста-внедренца — это именно процентов на 70 работа с клиентом, и только 30 — с компьютером.

    Reply
  6. «ОШИБКА 3: не покупайте кота в мешке. Просите, чтобы программу установили Вам для ознакомления бесплатно. Если Вам говорят, что так не бывает — смело идите в другую фирму.» — Полнейший проезд по ушам. К сожалению, фирма 1С НЕ ВЫПУСКАЕТ демо-версий своих типовых конф. Поэтому «бесплатно, для ознакомления» могут установить только ломаную версию. Тем самым подставившись под отдел «К». У нормальных франей действительно ТАК НЕ БЫВАЕТ. Так что, уважаемый аффтар — не вводите людей в заблуждение.

    «не знаю, как в Вашем городе, но у нас почти на всех раскрученных фирмах по 1С работает не более чем два-три грамотных специалиста» — часом, название Вашего города не «Бобруйск»?

    В фирмах моего города почему-то как раз наоборот — по два-три мальчика-обновленца, а все остальные — профи.

    Reply
  7. falkor

    «»ОШИБКА 3: не покупайте кота в мешке. Просите, чтобы программу установили Вам для ознакомления бесплатно. Если Вам говорят, что так не бывает — смело идите в другую фирму.» — Полнейший проезд по ушам. К сожалению, фирма 1С НЕ ВЫПУСКАЕТ демо-версий своих типовых конф. Поэтому «бесплатно, для ознакомления» могут установить только ломаную версию. Тем самым подставившись под отдел «К». У нормальных франей действительно ТАК НЕ БЫВАЕТ. Так что, уважаемый аффтар — не вводите людей в заблуждение.»

    Это не заблуждение. Сам работал у франчей и сам ездил к клиенту на презентацию 1С. Брал с собой ключ и на месте ставил 1С, демонстрировал возможности, давал самим порулить…. В общем часа на 2-3 народ «осматривал» предпологаемую покупку.

    Reply
  8. Evgenik_78

    А шо очень даже похоже все на правду…

    Reply
  9. Есть диски по обучению 1С, пускай смотрят функционал. А потом вопросы задают! Понравилось покупайте, не понравилось предложим что нибудь другое! А диск на DVD стоит 300 рублей.

    Reply
  10. Вещий Олег

    Нормальная статья. Обычная работа внедренца. Таких как упомянутая фирма франч — абсолютное большинство. Омск тому подтверждение.

    Для: Олег (25.03.2006) — «Загоните… режут…» — не нравится не читай.

    Reply
  11. O-Planet

    > «не знаю, как в Вашем городе, но у нас почти на всех раскрученных фирмах по 1С работает не более чем два-три грамотных специалиста» — часом, название Вашего города не «Бобруйск»?

    > В фирмах моего города почему-то как раз наоборот — по два-три мальчика-обновленца, а все остальные — профи.

    В смысле — у Вас Бобруйск, чтоли? В остальных «нармальных» городах все-таки ситуация именна наша (У нас Ульяновск)

    Reply
  12. А какая разница, ну работаешь ты частником. Ну имеешь ты своих клиентов, 5 — 10 — 15 клиентов, и потом наступит такой момент когда ты просто не сможешь всех обслуживать и будешь ты бросать своих старых клиентов, и не будешь им перезванивать. Или ушел ты в отпуск, уехал, заболел, какая разница. И никто не поможет твоим клиентам! А при работе в организациии, если ты в данный момент не можешь помочь, вместо тебя съездит кто то другой. И проблемы их решать будет не один специалист, а вся внедренческая фирма.

    Reply
  13. O-Planet

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

    А по поводу внедренческой фирмы…

    1. Конвеерный подход

    2. Обычный недостаток хороших специалистов

    3. Недостаток времени у хороших специалистов из-за загруженности

    Reply
  14. CheBurator

    > 3. Недостаток времени у хороших специалистов из-за загруженности

    Именно.. Скинул совершенно незнакомому человеку свою старую денежную фирму — ну некогда мне на нее время взять… в результате — все-равно звонят ко мне… Почему? потому что тот кто пришел сделал наполовину и не вызвонить его… я делаю: то что сделал — работает, по этому меня вызванивать не надо… вызванивают уже на след. шаг… Вот как с такими работать внедренцами-частниками, а ?

    Reply
  15. O-Planet

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

    Reply
  16. АЛьФ

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

    Извини, незачет.

    Reply
  17. O-Planet

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

    > работа с партнерством

    А вот это действительно, нонсенс. Работа по прежнему предполагает отношения с частником. Другое дело, частники могут друг-друга подменять, и есть некий бренд: ПАРТНЕРСТВО. То есть, у клиента может (или не может) сложиться мнение о том, что если программист представляется, как участник партнерства, то это хороший программист, с которым проблем не будет. У нас было нечто похожее в городе года три, пока один не решил создать фирму и стать ее директором. В общем, ни кто не был особо против, только руководить у него не получилось, и было утрачено и то, что имелось до этого.

    Reply
  18. АЛьФ

    Хм… Вроде писал вчера еще комментарий…

    Reply
  19. VladimirKuzn

    Совершенно актуально. Идёт надувательство клиента, а с другой стороны программиста подрабатывающего у них. Знаю по себе.

    Reply
  20. O-Planet

    Блин! Чуть ли не один из самых первых материалов, выложенных на Инфостарте 🙂 Ностальгия — болезнь?

    Reply
  21. cfytr

    Всё зависит от ЧЕЛОВЕКА-програмиста если он обязателен и адекватен то ненужно будет искать других исполнителей, но такие челы встречаются не часто. Это ведь всё таки легкий бизнес. Слова одного из таких, приехал установил баблуси в карман и гуд бай, был опыт общения.

    Reply
  22. tsd

    мда, пожалуй я сам клиента отправлю в другую фирму ежели он пункт 3 попросит, ибо на мелочи (ТиС,Бух,ЗиК,УТ,БП,ЗУП) это просто не выгодно, а с чем то более серьезным 99% клиентов без посторонней помощи разбераться не смогут (даже если все мануалы всучить).

    пункт 4 просто не достижим, даже без саботажа сотрудников :), ибо чтобы господа пользователи стали свободно ориентироваться в программе должно пройти пара-тройка месяцев. Работать бесплатно 3 месяца как то не хочется, поэтому оплата постфактум не катит (такого клиента сразу в сад).

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

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

    Reply
  23. Александр63

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

    Reply
  24. netserfer

    Даааа, бухи не знающие бух. учёта это бич мелких конторок особенно в районах

    Reply
  25. DavidSarif

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

    Reply

Leave a Comment

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