Телепат 2




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2026-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 не будет опубликован. Обязательные поля помечены *