Как я консультировался у франчайзи




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

32 Comments

  1. crazyfane

    жесть)

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

    Таких франчей больше, чем можно вытерпеть.

    (1)И где жесть?

    Рублем их надо. И перенести статью из «юмора»

    Reply
  3. Benefactor88

    Действительно, ничего юморного здесь нет, за такую «платную» консультацию вам должны были доплатить 😉

    Reply
  4. artbear

    (4) А какие тарифы за платную консультацию ?

    Reply
  5. prolancer

    не оправдываю этого франча…

    автор судя по всему БОХ

    Reply
  6. venger

    (0) Грустно, но т.к. я разносторонняя личность, то мне еще и весело:)

    Reply
  7. O-Planet

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

    ПС По ходу, после еще одного топика о плохих франчах начну их защищать

    Reply
  8. kitminsk

    8-902-101-73-34 — многоканальная платная справочно-информационная служба, время работы — с 9‑00 до 18-00 по будним дням, стоимость без НДС 1800 рублей за минуту (лицензия N 3170 от 18.07.2003 г., выдана Министерством связи РБ).

    Это взято с сайта Юколы.Курс у нас сейчас 2800 бел.руб/доллар

    Reply
  9. NikolaST

    Я думаю, даже если вы позвоните в 1С на линию консультации — вам и там так же ответят. Сами подумайте, на линиях консультации сидят же пользователи, а не разработчики. И на вопросы типа «а почему у вас в 20 строчке модуля… такая фигня..» что они должны отвечать?!

    Reply
  10. venger

    (7) > ПС По ходу, после еще одного топика о плохих франчах начну их защищать

    Выглядит как угроза:-) Интересно уже послушать защиту, в плане общего развития:-)))

    Reply
  11. venger

    (9) > И на вопросы типа «а почему у вас в 20 строчке модуля… такая фигня..»

    Строчка и регистр немного разные вещи:-))) А человек с тех. поддержки, даже знал что такое регистр: «Наверное один регистр используется в одних отчетах, а другой в других.»:-))) Так что Ваша аналогия не подходит:-)))

    Reply
  12. NikolaST

    (11) >Строчка и регистр немного разные вещи:-))) А человек с тех. поддержки, даже знал что такое регистр: «Наверное один регистр используется в одних отчетах, а другой в других.»:-))) Так что Ваша аналогия не подходит:-)))

    Я думаю вы меня поняли. Строчка эта или что-то еще — это все внутренности программы и подобные вопросы к непосредственному разработчику. И то он на них врядли будет отвечать.

    Reply
  13. O-Planet

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

    Reply
  14. venger

    (12) Это на вскидку из общего рекламы-описания УТ для покупателей, а значит и для пользователей:

    http://www.go1c.com.ua/news2007/1c_up_t8_dv.html

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

    Т.е. регистр уже ближе к понятию «пользовательское»:-))))

    Reply
  15. venger

    (12) +14, Более того, в семерке, например, думаю в восьмерке тем более, есть описание регистров. Т.е. делаем сначала так: http://www.infostart.ru/upload/iblock/dc3/desc_reg_1.jpg

    А потом получаем кратенькую справочку: http://infostart.ru/upload/iblock/140/desc_reg_2.jpg

    Неужели в восьмерке в типовой этого нет?:-)))

    Поднимаю руководство пользователя, например, по семерке:

    http://narod.ru/disk/9155666000/1Cv77_forusers.zip.html

    Там есть приложение 1 «Структура регистров конфигурации», с кратеньким описанием предназначений регистров и их структуры.

    Неужели в восьмерке в типовой этого нет?:-)))

    Reply
  16. venger

    (12) +15, заметьте, руководство пользователя:-)))

    Reply
  17. CheBurator

    мыши плакали, давились, но продолжали жрать кактус…

    Reply
  18. wirg

    они студентов набирают, так что таких консультаций миллион и тележка, лучше искать другого франчайзи

    Reply
  19. wirg

    или смотреть на сайте сертификаты спецов, а не профессионалов для данной фирмы

    Reply
  20. oleg974

    (7) «ПС По ходу, после еще одного топика о плохих франчах начну их защищать»

    О-Planet, приеду и из калаша пару рожков в упор… Ничего личного, просто франчи в основной своей массе г. и защищать их это нифига не гуд. Надо наоборот вывешивать списки черных франчей, чтобы клиенты на грабли не наступали.

    Reply
  21. venger

    (20) Точно, а то как рекламу себе строчить, это они первые, а как, банально, о правах потребителей подумать, так они последние:-))))

    Reply
  22. O-Planet

    (20) А йа калаш выхвачу, да прикладом 😉 Уж кого-кого, а меня в любви ко франчам упрекнуть сложно. Но в данном случае, считаю, что автор не сориентировался в ситуации. Не нужно было этот вопрос решать по платной линии консультации. То, что за ответ «ниачем» списались деньги — это проблема автоматизации: там ведь автоматом со счета снимается сумма за звонок… Он сделал все по правилам. Но правила существуют, чаще всего, для того, чтобы догадливые могли находить более оптимальные пути решения проблем.

    Reply
  23. larisab

    На линии консультации больше 3 лет редко кто выдерживает, звонки с утра до вечера, да и клиентов нервных много. Поэтому текучка там и соответственно качество никакое.

    Reply
  24. O-Planet
  25. vip

    (24) Впечатлило.

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

    Давно сделал вывод, что количество нездоровых психически абонентов пугающе велико.

    Reply
  26. sytkosa

    (18) а в Белорусии хороших франчей мало. Тут подход к бизнесу не распологает к качеству услуг. А принцип такой «Главное продать коробку. А если там что-то не работает или вообще НЕТ, то мы за ваши же деньги енто через год даработаем».

    Reply
  27. kiruha

    Не въеду — зачем рядовому пользователю интересоваться регистрами

    и тем более тонкостями их организации ?

    Поболтать что ли не с кем?

    Reply
  28. venger

    (27) Чтоб не быть попугаем;-)))

    http://infostart.ru/blogs/1081/

    Тем более смотри в 14-м, раз дали пользователю «универсальный механизм представления данных любых регистров», то будь те добры:

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

    Reply
  29. wolder

    Любая (платная или бесплатная) линия консультация существу только для консультаций по пользованию программой а не её алгоритму или структуре. Правильно сказали чуть выше, что даже и в 1С вам никто на ваш вопрос не ответит даже за деньги ведь это системная область а не пользовательская. Хреновая шутка у вас вышла!! Попробовали бы вы сами поотвечать на вопросы линий консультации, порой самый простой вопрос ставит в тупик при его неточном изложении.

    Reply
  30. igor_1c

    А общение с IBA (одной из крупнейшех компаний в Беларуси) по УПП 8.1 вообще жесть. Их УПП сами доробатываем Договор на консультации по телефону стоит порядка 3 млн. в месяц, а толку очень мало. Бывает сами говорим какие у них ошибки в конфигурации

    Reply
  31. zhleonid8

    я брал 1с82 в Юколе Брест, после грамотного внедрения, после конструктивных диалогов адекватного бухгалтера с нормальным программистом, вопросы задавать можно только пользовательские, типа в какой последовательности проводить, а вот все остальные, да и какие вообще вопросы могут быть кроме обновления,если вы берёте 1С8,

    меня например предупреждали что она сырая, но даже в таком виде она позволяет мне не сидеть с отчетами ночами,

    к програмистам и у меня есть вопросы, но это не те которые были со своим спецом,

    ЛЮБАЯ проблема решается в течении 2-4 часов, а то что много стоит….

    кто из вас работает бесплатно?………..

    Reply
  32. makas

    Пришлите счет на покупку, буру оптом 10-к консультаций:) Ха-ха-ха!

    Reply

Leave a Comment

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