Телепат 2




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

46 Comments

  1. CheBurator

    Не, ну подразумевается что все знают зачем это надо и какая выгода…

    вот есть Интеллигент http://www.i-gent.com — он каким боком к телепату и интелисенсу…?

    или подразумевается что у кодеров много свободного времени чтобы по скупому описанию ломануться и проверять все что есть более-менее полезного….? нк тогда кожить когда?

    😉 Ну рассказывайте поподробнеееееееееее!!!! просто положить, понятно, гораздо легче…….

    Reply
  2. JohnyDeath

    Так это уже классика! После того, как первый раз поставил его у себя, с тех пор не могу без неё работать и вообще не представляю, как без неё можно жить?! Нет, жить-то конечно можно, но жизнь будет казаться несколько хреновой…

    Суть: автодополнение (как в интеллегенте, хотя он намного позже появился)

    +10. Да и вообще orefkov’у памятник при жизни надо ставить за всё то, что он сделал. Предлагаю новый приз «За общий вклад в развитие 1С». На вскидку туда сразу попадают: orefkov, Валерий Атаманюк, АЛьФ, Deb и все кто в 1с++ активно учавствует

    Reply
  3. АЛьФ

    А вот интересно… платная версия будет или эти планы уже похоронены?

    Reply
  4. orefkov

    2АЛьФ

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

    Reply
  5. АЛьФ

    Я ж тебе, вроде высылал все, что у меня есть по этому поводу? Не подошло?

    Reply
  6. orefkov

    (Che Burashka)

    Да, твой пост опустил меня с небес на землю, и умерил мою годыню…

    Reply
  7. antonrost

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

    Reply
  8. orefkov

    Жень, не я автор инсталяшки, поэтому могу только дать ссылку:

    http://kuntashov.narod.ru/openconf-installer.html

    Reply
  9. JohnyDeath

    А как сделать так, чтобы после отработки Скрипта Intellisense не выводился список шаблонов?

    Уточняю:

    СпВодителей=СоздатьОбъектСписокЗначений»

    СпВодителей.ВставитьЗначение();//вот на этой строке после «СпВодителей.» вылазиет список методов

    //СпискаЗначений, я выбираю нужный мне, он вставляется, курсор становится внутри скобок и АВТОМАТИЧЕСКИ

    //вываливается список шаблонов, а я не хотел этого. Как можно исправить? «Полностью отключить шаблоны» — не

    //предлагать за надобностью оных.

    Reply
  10. CheBurator

    > Рекомендуется использовать совместно с группой скриптов Intellisence.

    Так что все-таки «делает» эта группа скриптов..? Кратенько…?

    Reply
  11. orefkov

    Работу после точки.

    Reply
  12. The gray Cardinal

    О ручной установке и использовании OpenConf + Телепат + Intellisense читаем здесь:

    http://www.script-coding.info/OpenConf.html

    http://www.script-coding.info/Telepat.html

    http://www.script-coding.info/Intellisense.html

    Reply
  13. CheBurator

    Агам.. Понятно…

    Телепат к ОпенКонфу…

    Интелисенс к Телепату…

    … к Интелисенсу…?

    😉

    Reply
  14. Бракозябра

    RE: После того, как первый раз поставил его у себя, с тех пор не могу без неё работать.

    RE: Давно пользуюсь этой приблудой. Жить без неё не могу ).

    Присоединяюсь!

    Reply
  15. trdm

    … к Интелисенсу…?

    попробуй intsOLEGenerator 🙂

    Reply
  16. CheBurator

    trdm — ничего не понял…

    Reply
  17. Просто спасибо, человеческое спасибо

    Reply
  18. romix

    Использую (уже давно) Телепат/Intellisence из комплекта OpenConf / PowerPack.

    Кодить намного приятнее, спасибо автору.

    http://kb.mista.ru/article.php?id=54

    Reply
  19. v.l.

    дык как в восьмёрке!

    Reply
  20. d.snissarenko

    Хочу для V8 + 1 + 1 +1 🙂

    Reply
  21. d.snissarenko

    2 Vladal не совсем как в восьмерке , в том-то и дело 🙁

    Reply
  22. brr

    Серьезно ускоряет работу +1

    Reply
  23. Tiger77

    Есть большая просьба по Телепату — добавить обработку украинских букв iIїЇЄє, а по фильтр по названиях процедур (выдает бред) и переходы по Ctrl-Enter не работают.

    Если смотреть шрифт Arial соответствуют кодам (404, 406, 407, 454, 456, 457).

    Я бы с удовольствием переименовал процедуры — но их слишком много и это типовая украинская конфигурация 1С.

    Reply
  24. Хотелось бы иметь возможность установки фильтра (Без групп, Все группы и т.п.) «Не выводить»

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

    Reply
  25. tormozit

    Когда кодил на 7.7 очень помогал. Плюсую!

    Reply
  26. sergu1963

    Огромное спасибо автору. Кодить стало намного приятнее и, главное, быстрее

    Reply
  27. fluid

    Большое человеческое спасибо

    Reply
  28. iddqd

    Сейчас уже не представляю, как на 7.7 можно кодить без телепата и ОпенКонф.

    Несомненный плюс.

    Reply
  29. skynet2004x@yahoo.com

    Штука рульная, я в 7.7 недавно….и без Телепата как-то совсем не представляю работу

    Reply
  30. trdm

    Есть проблема с Телепатом.

    http://www.1cpp.ru/forum/YaBB.pl?num=1207832253/0

    Обрабатывает около 700 функций в модуле….

    Если больше, тогда Ctrl+1 вызывает вылет системы..

    Reply
  31. trdm

    Хотя 700 это и так дочертиков, но у меня уже перевалило ((((((((((((((((

    Reply
  32. JohnyDeath

    Нее, Дим, тут не в кол-ве ф-ий дело. Щас не обломался и «наваял» модуль с 2500 тыс. процедур (=5000 строк) — полёт нормальный. Видать дело в кол-ве строк. (

    Reply
  33. Boss_V

    💡 СПАСИБО дружище это реально не достающая вещица!!! 😉

    Reply
  34. GusarovRB

    Спасибо, очень помогла!

    Reply
  35. spryn

    RE: После того, как первый раз поставил его у себя, с тех пор не могу без неё работать.

    RE: Давно пользуюсь этой приблудой. Жить без неё не могу ).

    RE: СПАСИБО дружище это реально не достающая вещица!!!

    RE: Сейчас уже не представляю, как на 7.7 можно кодить без телепата и ОпенКонф. Несомненный плюс.

    Полностью согласен.

    Reply
  36. nick_krsk

    Классная штука! Большое спасибо 🙂

    Reply
  37. Sherdrada

    как ставить её?

    Reply
  38. orefkov

    (42)

    Cкачай openconf light pack

    Там уже настроенный джентльменский набор.

    Reply
  39. Sherdrada

    (10) а ниче что на неё мой антивир ругается?О.о

    Reply
  40. orefkov

    (44)

    Нормально там все.

    Reply
  41. Sherdrada

    (45) джентельменский набор включает отображение подсказок после точки?

    Reply
  42. orefkov

    Конечно. Там все что нужно для комфортной работы.

    Reply
  43. alyuev

    1C 7.70.0.27 вылетает при загрузке в режиме конфигуратора при использовании telepat. Версию пробовал вплоть до 2.0.0.0u. Если убрать Телепата OpenConf все остальные плагины подгружает нормально. На этой же машине 25-ая платформа работает нормально с плагином telepat 2.0.0.0t. Что ещё нужно подкрутить? Чтобы заработало?

    Reply
  44. MaxS

    Спасибо за информацию. А то я всегда забываю где же этот телепат искать и какой сайт правильный с последней версией.

    ой. оказывается эта публикация здесь с 2006 года. 😉 плохо искал значит.

    Reply
  45. Dr_DelProg

    Давно пользуюсь — отличная задумка. Правда, один момент я так и не понял, ибо мануал по данному средству не обнаружился:

    Вот если в подсказке параметров несколько вариантов выходит, типа «[1 из 2] Документ::ВыбратьСтроки()», то как перемещаться по этим вариантам? Чтобы было [2 из 2] и т.п.

    Reply
  46. dreadlord

    (50) Dr_DelProg, Ctrl+ стрелки

    Reply

Leave a Comment

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