T1CLister: Универсальный плагин для просмотра файлов 1С. Версия 1.7 beta (для Total Commander)




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

99 Comments

  1. Abadonna

    ВНИМАНИЕ: в последних стандартных поставках тотала идет плагин ieview, который решил, что файлы 1С ему как раз по зубам 😉 либо убейте, либо поставте ниже T1CLister

    Reply
  2. Kavar

    в СТАНДАРТНЫХ поставках тотала ieviev не идет 😉

    Это сборки какие-то.

    Reply
  3. support

    Достойная разработка, +1

    Reply
  4. Kavar

    Ждем аналога для 1С 8.х )

    Reply
  5. Abadonna

    >в СТАНДАРТНЫХ поставках тотала ieviev не идет 😉

    Это НОРМАЛЬНАЯ сборка от SamLab

    Reply
  6. imsoftware

    Полезная штука, достойна плюсика 😉

    Reply
  7. Ворона

    предлагаю убрать слово универсальный…либо расшифровать… 😉

    Reply
  8. Abadonna

    (7) Последний выпад госпожи, которой посвящен плагин, считать недействительным, на молдавские дрова хайлайтер не рассчитан 🙂

    Reply
  9. support

    вот это старт! сразу в ленту «популярное», притом заслуженно.

    ура, система работает!

    Reply
  10. Ворона

    тогда посвящение убери

    Reply
  11. bkn

    Пожелание: хорошо бы еще авторегистрацию сделать… А так ВЕШЬ!!!

    Reply
  12. ValeraH

    Отлично работает и в Portable Total Commander, установленном на флешке. Единственное изменение, после установки следует влезть в wincmd.ini на флешке и заменить начало адреса на %COMMANDER_PATH%, т.к. флешка на разных компьютерах подключается под разными буквами. Зато теперь пришел, воткнул флешку и всё работает 🙂

    Мелкое замечание: в readme стоило бы добавить порядок установки плагина (не все с давних пор отслеживают его развитие)

    Пожелание: порадовало появление форм, и сразу появилось желание видеть и печатные формы. 🙂

    Reply
  13. Abadonna

    (12) добавил порядок установки

    Reply
  14. CheBurator

    Лучше бы этот функционал в КомпаундЭксплорер перетняулибы…

    Reply
  15. ValeraH

    Опа, на USERS.USR интересный глюк проявился. У нас 4 базы 1СТорговли ещё со времен 7.0 развиваются. И есть пара пользователей у которых пароль с тех пор не менялся. Соответственно в программе Ускова «Admin 1С» хеш пароля 4-значный, а в вашей — пустые фигурные скобки. Это у меня уже догадки, что, возможно, с этим связано. А глюк вот в чем состоит.

    Имена пользователей идут в правильном порядке, зато всё остальное — хеш, каталог, полное имя, интерфейс перепутаны по строкам со страшной силой. (в «Admin 1С» всё как надо).

    При этом в базах, которые начинались в 7.7 (Бухгалтерия) всё в порядке.

    Reply
  16. Abadonna

    (15) Думал, будет больше глюков, как-никак beta. Кинь на мыло users.usr — гляну

    (14) Чебурашка, рано или поздно надо будет с фара и подфарников соскакивать 😉 Добавлю в КомпаундЭксплорер, но это ж не выход 🙂

    Reply
  17. CheBurator

    осталось добавить дизайн форм и макетов отчетов — и…?

    Reply
  18. vasilykushnir

    Ставлю +1, еще не опробовав… Ибо уверен, что весчь рулезная.

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

    Reply
  19. АЛьФ

    Однозначный плюс.

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

    Reply
  20. Abadonna

    (19) А можно сделать, чтобы форма показывалась сразу, а слои закладками были?

    Приделаю, спасибо за идею

    Reply
  21. ValeraH

    1. USERS.USR отправил.

    2. С формами иногда возникает такой глюк. Во внешнем отчете с одним слоем показывает два : 0, Основной, после чего при попытке открыть выскакивает

    Plugin error:

    List index out of bounds (14)

    Как пример файл с диска ИТС:

    ИТС:1CItsEXEEXTREPSUNIPROCSRVDLG.ERT

    Reply
  22. Abadonna

    (21) по п.2 я знаю — еще не разобрался в чем дело

    Reply
  23. Abadonna

    (21) Версия 1.1.8.2. Исправлена ошибка в выводом некоторых форм, было связано с многострочными описаниями полей, парсинг строки выдавал глюки

    По usr — пока лень разбираться с дремучими копиями от версии 7.0 😉

    (19) Поставил в очередь

    Reply
  24. ValeraH

    Только что обнаружил, что плагин ещё и на 1cv7.mlg кидается! 🙂

    Правда выдает при этом пустой экран, приходится нажимать Опции / Только текст.

    А один раз даже пароль запросил. :[]

    Reply
  25. vasilykushnir

    (24) А у меня конфа под паролем, но он МД открыл и даже не муркнул.

    Аркадий, плуг просто улет (жаль нельзя еще раз плюсануть), а ДД показывает вообще прелестно, теперь вьювер ДД мне и нафиг не нужен.

    Сделай «услугу» Альфу, чтобы он еще и ЕМД открывал…:-)

    Reply
  26. Abadonna

    А с какиз фигов он должен mlg открывать? Даже не заявлен….

    Reply
  27. Abadonna

    (25) DD и старый казал, ты не в курсах что ли….

    Reply
  28. ValeraH

    Не заявлен то не заявлен, а вот кидается, хотя я его и не прошу открывать mlg. Закрыл стационарный TC, запустил с флешки (там другая версия), все равно при выделении 1cv7.mlg и нажатии F3, выскакивает окошко Lister(T1clister) с пустым экраном и только после двух щелчков по меню открывает как раньше.

    Reply
  29. Abadonna

    НЕ МОЖЕТ ОТ КИДАТЬСЯ! ТАМ И БЛИЗКО ЭТО НЕ УКАЗАНО. Смотри, что у тебя еще его пробует

    Reply
  30. poppy

    У меня тоже пытается открыть файл mlg. Где указано, какие файлы он должен открывать?

    Reply
  31. АЛьФ

    Подтверждаю. Действительно кидается на mlg.

    Reply
  32. Abadonna

    Как говорят евреи — буду посмостреть. По ходу, забыл выключить в самом начале

    Reply
  33. dimang

    Плагин классный. А также, если автору интересно — при просмотре DD нажал Процедуры и функции, выскочило AV.

    Reply
  34. Abadonna

    (30) и (31) действительно кидался на mlg — обработку выключил, а в заявленных оставил, сорри, поправил.

    (33) и это было, пытался поискать язык 1С, где его м помине нет…

    Кроме того пытался найти найти форму Глобального модуля, вот ты я похохотал, если б нашел 😉

    Еще одну забавную вещь в MD нашел — существую потоки и идентификаторами, каких не заявленными в MMDS.

    Вот какие рано или поздно лечить придется… по избежание… Вот и думаю, куда лечилку привертеть — в плагин или CE? Глюки еще обязательно будут пишите, я не могу всё отследить, например даже в голову не могло придти ткунь процедуры и функции на поле редактора на DD. НО все это приветствуется, жаль луший в мире тестер Чебур так уж Тотал не любит

    Reply
  35. CheBurator

    Почитай асю на досуге — я там высказал пожелание про CE — думаю, оно уместно будет и для Листера

    Reply
  36. Abadonna

    Серега, оптимизаторе я просто поленился сделать проверку на КОНКРЕТНЫЕ документы, проверяю тупо — ДОКУМЕНТ — пропускаем…. Оно можно, но уж накладно, меня в последнее время обвиняют, что я танки делаю. И поему, я танкист по военной специальности и механик по основной не могу их изобретать? Ну не люблю я писать всякие там запросы на 1С, лениво и неинтересно. Кто-то на этом деньги делает — да ради Бога! Я ж кому не написал, что код из пяти строчек — задача для прыщавого первокурсника. Мои любимые предки на воротах известных заведений писали — «каждому свое».

    Reply
  37. support

    Аркадий, не обращай внимания на идиотов. Ты делаешь классные вещи!

    Reply
  38. German

    (4) неким подобием можно считать EI — тоже самое только выполняется в 1С

    Reply
  39. Abadonna

    (19) пожелание выполнил, если слои с закладками совпадают — вообще как «настоящая» выглядит.

    Выложу чуть позже, подточить надо

    Reply
  40. CheBurator

    Несомненно нужна поддержка ALS!!!

    Reply
  41. Abadonna

    Версия 1.6

    Исправлены баги с показом некоторых форм.

    Диалог выбора слоя для показа теперь не появляется, слои располагаются в закладках формы

    Reply
  42. JohnyDeath

    >Диалог выбора слоя для показа теперь не появляется, слои располагаются в закладках формы

    А я-то думаю, почему на рис. 6 — всё в слоях, а у меня всё ещё просит выбрать слой при открытии формы! )

    Оказывается, что сия фича до сегодняшнего дня была только у тебя! 😉

    Reply
  43. Abadonna

    (39) «(19) пожелание выполнил, если слои с закладками совпадают — вообще как «настоящая» выглядит.

    Выложу чуть позже, подточить надо»

    Изучайте цитаты классиков 😉

    Reply
  44. JohnyDeath

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

    + В многослойных отчетах/обработках форма не закрывается по «Esc», чего не скажешь об однослойных.

    Reply
  45. JohnyDeath

    (44) >в данный момент он переключается на текст модуля обработки

    ошибся. Он вообще теряется.

    Reply
  46. Abadonna

    там с фокусами происходили какие-то фокусы… не помню точно, но что-то потом происходило с переключением в панели нескольких листретов с формами. Я еще поэксперементирую…

    Reply
  47. JohnyDeath

    А эскейпы в многослойных?

    Reply
  48. Abadonna

    В многослойный честно-дубово забыл сделать обработку FormKeyDown 🙁

    Вот она и не закрывется по esc. Завтра посмотрю фокусы и обработку приделаю…

    Reply
  49. CheBurator

    Где-то я что-то пропустил… MXL показывает?

    Reply
  50. vasilykushnir

    (49) Пропустил… пост 18.

    Reply
  51. aVtor1

    Уточните пожалуйста версии тотала к которым подходит плагин!! У меня Тотал 7.0

    плагин работать не хочет.

    Reply
  52. Abadonna

    (51) У меня Total 7.0 — вовсю работает. Проверь правильность установки и отследи не перехвытывают ли какие другие утановленные плагины файлы с этими расширениями. Например, IEView всё время на 1С-кие файлы набросится желает

    Reply
  53. vasilykushnir

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

    Reply
  54. ilya1979

    чумовая вещь. спасибо огромное. +

    Reply
  55. aVtor1

    спасибо господа.

    Reply
  56. aVtor1

    Поставил первой в списке плагинов. Все заработало.

    Reply
  57. Abadonna

    Версия 1.6.12.8, по замечаниям JohnyDeath:

    Фокус на форму, закрытие многослойной по Escape

    Reply
  58. CheBurator

    Когда этот функционал будет добавленв СЕ? а то дискриминация какая-то получается…

    Reply
  59. Abadonna

    Опрос общественного мнения:

    ввиду тотальной нелюбви Чебурашки к Тоталу он буквально насильно заставляет меня превратить плагин в отдельно работающее приложение.

    СтОит?

    Reply
  60. vasilykushnir

    (59) Ну так выведи в Опрос.

    Но предварительно скажу свое мнение (ничуть не хочу обидеть сторонников фара, вернее противников тотала): а нафига попу наган? — у него ж кадило есть…

    А надо обоснование? Получите!:

    Самый главный аргумент против — если делать отдельной приблудой, то к ней надо присобачивать файловый навигатор (а нафига? тем более еще и за него на тебя диких собак натравят — всем не угодишь). А тотал уже есть самый лучший навигатор. Делайте выводы, господа….

    Reply
  61. antik69

    Спасибо, работает и работать удобно.

    Reply
  62. Abadonna

    Добавлен просмотр als-файлов

    Reply
  63. CheBurator

    > А тотал уже есть самый лучший навигатор

    Гонишь! 😉

    Конечно, хотелось бы видеть автономным приложением… и не надо никакого «файлового навигатора»… добавить функционал в СЕ — будет самое оно…

    Reply
  64. Abadonna

    (63) Мне проще переделать плагин в приложение, чем переделывать СЕ. СЕ всё-таки специфическая прога, вспомогательный инструмент для разработки

    Reply
  65. CheBurator

    ну тогда — в приложение…

    Reply
  66. Abadonna

    Версия 1.7.2.2

    Добавил (чисто-конкретно ;)) для себя и любителей IDE Dephi — просмотр и редактирование файлов .pas и .dpr

    P.S. Пожелания по по другим языкам рассматриваются в свете денежного эквивалента ящика пива 😉

    Reply
  67. Abadonna

    (65)>ну тогда — в приложение…

    Чебур, спецом для тебя сделаю приложением, но без хайлайтера, а синий фон и белый шрифт, как в твоем любимом убогом фаре. Идет?

    Reply
  68. Muroslav

    Ребята! А плагин для простмотра файлов 1С 8.0-8.1 есть???

    Reply
  69. Abadonna

    (68) есть, но 1С-зависимый

    Reply
  70. svsrus

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

    Reply
  71. vasilykushnir

    (70) А пароль с обработки снять религия не позволяет?

    Reply
  72. Abadonna

    (70) на запароленные я ваще не расчитывал, ежели он открывает — это его личное дело 😉

    Reply
  73. CheBurator

    (67) я чиста.. эта.. жду ужо…

    Reply
  74. Abadonna

    (73) ты забрось синемордую…в 1С ведь не рисуешь консольных… и ваще Абаданноа с сегодняшнего дня фри (почти как картошка), так что на извраты времени не будет 😉

    Reply
  75. svsrus

    (72) Я тоже ))) Но вот столкнулся случайно. Просто ситуация: скачал несколько обработок, кинул их в каталог, начал разбираться, что к чему. Код стал смотреть листером. Что-то поправил, сохранил… Все баста. Обработка потеряна…( Где ее брал не помню ))) Хотя бы предупреждение сделать — «Обработка запаролена, просьба не ломать!».

    Reply
  76. antiblo

    Ух ты, как приятно! Да ещё и 1С не требует! Abadonna могуч! 🙂

    Reply
  77. Abadonna

    (70,75) Запаролил обработку, открыл плагином, добавил строчку, сохранил, закрыл.

    При открытии в Конфигураторе ругается на «Общая файловая ошибка»

    Закрываю Тотал, опять открываю в Конфигураторе — без базаров запрашивает пароль, после вводе пароля спокойно открывается (уже измененная)

    Reply
  78. JohnyDeath

    Аркадий, а ты фокус так и не поборол?

    Reply
  79. Abadonna

    Как это не поборол?

    Фокус встает на многослойную, и Esc работает

    ——————————————————-

    Abadonna

    57 — 22.09.2007

    Версия 1.6.12.8, по замечаниям JohnyDeath:

    Фокус на форму, закрытие многослойной по Escape

    Reply
  80. JohnyDeath

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

    Reply
  81. Abadonna

    >напрягает немного лишнее движение к мышки

    :)))))))))) сасэм обленился

    Лана, посмотрю

    Reply
  82. JohnyDeath

    ну ты ж помнишь что движет прогрессом? 😉

    Кстати, а кто такая Радкова Ольга? (если не секрет, конечно)

    Reply
  83. Abadonna

    Посмотри, кто из мадам мне всегда плюсы ставит на разработках ;))))

    Reply
  84. JohnyDeath

    Неужели «маковая росинка»? ))

    Reply
  85. Abadonna

    Однозначный ответ в комментах к

    http://infostart.ru/profile/1329/projects/1053/

    Reply
  86. JohnyDeath

    ага, понятно.

    Прям маленький детективчик у нас получился! ))))

    Reply
  87. RPV

    Abadona, прочел твой свежий комментарий к UniPlugin. У меня Тотал 7.0pb2 (от 22.11.06).

    Может плагинов много?

    Но сейчас поставил T1CLister, такая же байда, не работает.

    Reply
  88. Abadonna

    А КАК именно не работает? Ваще ничего не кажет, кажет как-то не так?….

    В настройке «Плагины внутреннего просмотрщика» есть слева две кнопочки «вверх-вниз». Надо переместить плагин в самый верх… Если не поможет — ХЗ

    Reply
  89. RPV

    Abadona, все ОК, переместил на самый верх, заработало, спасибо, ты настоящий друг.

    Reply
  90. vasilykushnir

    (89) а пост (53) видать товарищ не читал…

    Reply
  91. Abadonna

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

    Reply
  92. mvntula

    Поставил на 6.54 (вниз) — Ert_файлы не открывает, переместил в списке Плагинов вверх — все о.к.

    Reply
  93. honor

    День добрый, будьте так любезны, расскажите как подключить плагин? Как не пытался он не работает, самое главное не понятно он установился или нет? Подскажите плз.!! Пытался подкключить также UniPlugin такая же история — они вообще работают?

    Reply
  94. Abadonna

    >они вообще работают?

    Нет, конечно, по приколу положил, а остальные по приколу наплюсовали ;)))

    Reply
  95. vasilykushnir

    (93) А почитать хотя бы все комметы — религия не позволяет? Оплачивай автору коммандировочные — приедет установит.

    Reply
  96. sokir

    Блина. Пораньше б мне эту плагину, когда писал отчёты в адо так в ддшнике так надоело лазить.

    Reply
  97. Abadonna

    >Пораньше б мне эту плагину

    Предыдущей версии уж года два с половиной 😉

    Reply
  98. JohnyDeath

    (96) ты 1с++ используй! Никакие ДДшники и листеры не нужны будут!

    Reply
  99. Abadonna

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

    Reply

Leave a Comment

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