Плагин TotalCommander-а просмотра файлов 1C v8




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

    Упреждающие ответы:

    — ну конечно это не Конфигуратор;

    — да, epf/1cd скорее всего будут, но пока что только cf;

    — зачем нужно? гм… особой практической пользы нет — посмотреть структуру, распечатать, сохранить в файл быстрее чем из 1С;

    — редактирование модулей есть, но пока недостаточно протестировано и по этой причине отключено;

    — ну да, маненько глючный, но ведь версия только 1.0.0.1 да и денег с вас никто не просит.

    Reply
  2. tormozit

    Сделаешь com-сервер?

    Reply
  3. Zigbee

    Открывается пустое дерево конфигурации: только предопределенная структура, а самих объектов нет.

    В чем может быть дело?

    Reply
  4. MMF

    (Zigbee) А слева внизу перестал мигать значек выполняющейся обработки? Велика ли конфа? Можешь ее выложить на какой-нить файлообменник (up.spbland.ru slil.ru … )?

    Reply
  5. Zigbee

    Re MMF: Все, я увидел! Просто у меня значек не мигает, а надпись «определение версии» я не заметил.

    Reply
  6. Ghost mail

    Два небольших вопроса :

    1. Реквизиты и табличные части объектов будут видны (в будущих планах) ?

    2. Можно ли для «отсутствующих» модулей вывести байт-код или, хотя бы, image в 16-тиричном виде ? 😎

    Reply
  7. MMF

    (Ghost mail) 1) да 2) да

    Reply
  8. Abadonna

    2 MMF У меня тут завалялся плаг М. Ускова cfviewer.wlx. Тебе не попадался?

    Но у того как-то скорость открытия не отличается практически от открытия в Конфигураторе

    Reply
  9. Ghost mail

    Проверил работу плагина на Демо-конфигурации 1С 8.2. Работает !!! 🙂

    Только не видит модули менеджера объекта (это новый вид модулей в 8.2) 🙁

    Reply
  10. Ghost mail

    Abadonna

    Но при этом сваливается он через раз. А, главное, разработка прекращена, насколько я понимаю 🙂

    Reply
  11. Abadonna

    (10) Ну вот, значит этот надо качнуть, хоть мне пока без надобности 😉 Щас проверим

    Reply
  12. tormozit

    (8) Это он и есть =)

    Reply
  13. Abadonna

    Подтверждаю: стопудово лучше cfviewer.wlx. +1

    Неплохо бы сделать вывод «определение версии» позаментнее, на иконку в углу внимания первоначально не обращаешь и создается впечатление, что открылась пустая конфа

    Reply
  14. Abadonna

    (12) Что MMF Михаил — вижу, неужто еще и Усков?

    Reply
  15. tormozit

    Жду 1cd и возможность использовать из 1с.

    Reply
  16. MMF

    (14) 🙂 угу, cfviewer я писал

    Reply
  17. MMF

    v1.0.0.2 багофиксы, добавлен просмотр и сохранение общих картинок.

    К сожалению, часть картинок в каком-то странном формате, хотя 1С говорит, что это bmp, но обманывает 🙁

    Reply
  18. MMF

    v1.0.0.3 серьезный багофикс, решил, что стоит сразу же обновить. Из-за него часть модулей не показывались на двойной клик

    Reply
  19. Abadonna

    (16) На заре Инфостарта, когда я только положил свой плагин, Кушнир посоветовал мне познакомиться с неким Кучером А.А. с инфостарта :))))

    Ситуевина почти повторилась

    (17) В 7-ке картинки тоже в bmp, НО:

    1. их надо распаковывать из потока

    2. даже в распакованной нормальный bmp начинается в 8-го байта, т.е. первые 0-7 надо просто отбросить

    возможно что-то в этом роде и тут

    Reply
  20. MMF

    v1.0.0.4 Добавлена информация о реквизитах шапки и табличных частей документов и справочников, значениях перечислений, просмотр справки по справочникам и документам, примитивный инспектор свойств

    Reply
  21. tormozit

    Даешь скриншотов!

    Reply
  22. Ghost mail

    1. Странно, в новой версии перестал открываться .CF файл версии 8.2 (который в первой версии плагина открывался) 🙁

    2. Можно ли для «известных» модулей видеть исходный байт-код (сейчас показывается декомпилированный). Например по какой-нибудь кнопке ??? Пожалуйста ! 🙂

    Reply
  23. MMF

    (Ghost mail) 1) можешь выложить куда-нить этот cf? у меня 8.2 нет. 2) Будет и декомпиляция образов модулей, со временем.

    Reply
  24. Ghost mail

    MMFВыложил .CF файл от демонстрационной конфигурации для 1С 8.2 _http://rapidshare.com/files/76051734/1C82Demo_1_0_1_1.rar_

    Если не сможешь скачать, вдруг, в личке отправил тебе мой е-мейл адрес для контакта.

    2) Как раз хотелось бы иметь оригинальный байт-код (хотя бы как опцию), потому как декомпиляция может не всегда работать 🙁

    Reply
  25. MMF

    v1.0.0.5 Модули объектов в дереве получили различные иконки (обычный текст, образ, образ и запароленный текст), добавлен дизассемблер байт-кода. Выполняется расшифровка мнемоники команд и декодирование операндов

    Reply
  26. tormozit

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

    Reply
  27. webdimon

    Прикольно, очень даже прикольно!

    Еще бы сделать контекстную подсказку тут, и супер было бы ))

    Reply
  28. imsoftware

    Просто супер! Однозначно + Еще бы плагинчик для просмотра *.epf 😉

    Reply
  29. Ghost mail

    Есть небольшая ошибка (плагин v.1.0.0.5, cf от 1С 8.1.10) :

    Если у какого-либо справочника или документа есть макет(ы), то ветки «Реквизиты» и «Табличные части» справочника (документа) показываются как подчиненные последнему макету объекта, а не самому объекту 🙁

    Reply
  30. MMF

    v1.0.0.6 Добавлена поддержка epf для версий 8.0 — 8.1. Переработан инспектор свойств объектов. Багофиксы

    Reply
  31. MMF

    Планируется следующий Roadmap:

    1) поддержка 1CD 2) просмотр форм 3) просмотр макетов.

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

    Reply
  32. recip

    Вопрос:

    -Как посмотреть модуль приложения, внешнего содинения, сеанса?

    Пожелание:

    -При открытии файлов в плагине не блокировать их. А то:

    —————————

    Кофигуратор

    —————————

    Ошибка совместного доступа у файлу ‘blah-blah.epf’

    —————————

    ОК

    —————————

    Замечания:

    -Если при просмотре epf нажать кнопку Save:

    —————————

    Message

    —————————

    Plugin Error:

    Access violation at address 0138D73B in module ‘ViewV8tc.wlx’. Read of address 00000000

    —————————

    ОК

    —————————

    -После комбинации символов (* весь последующий текст отображается как комментарий. Например:

    Код
     Тест = "(*";
    Текст = Тест;

    Показать полностью

    Reply
  33. Abadonna

    (32) >-При открытии файлов в плагине не блокировать их

    А вот это очень сомнительно, что можно реализовать.

    Да и на фиг одновременно в плагине и Конфигураторе открыть?

    Reply
  34. MMF

    Поддерживаю предыдущего оратора в отношении блокировки 🙂

    (32) «-Как посмотреть модуль приложения, внешнего содинения, сеанса?» — забыл про них :-(, добавлю. Баги — исправлю, благодарю.

    Reply
  35. Donat

    Что-то у меня не получилось открыть «известный» модуль. Может я что-то не понял?

    А так несомненный +

    Reply
  36. MMF

    (35) ээээ… (чешу репу), кто такой «известный» модуль?

    Reply
  37. MMF

    v 1.0.0.7

    Добавлены модули задачи — приложения, соединения, сеанса пользователя, справка. Исправлены ошибки при сохранении на диск модулей.

    Reply
  38. Kavar

    Что-то не хочет он epf у меня открывать….

    Reply
  39. Kavar

    Заработало. установил плагин в другую папку

    Reply
  40. tormozit

    Скриншотов бы еще =)

    Reply
  41. Donat

    Извиняюсь, разобрался. Но он почему-то не хочет показывать байт-код модуля который запаролен.

    Или я что-то не так делаю?

    Reply
  42. MMF

    v.1.0.0.8 Добавлен просмотр набора прав выбранной роли

    Reply
  43. awa

    MMF, при просмотре закрытого модуля часто выскакивает подобная ошибка:

    Неверный символ в потоке: [,] [«S»,»,NULL КАК Измерение_»]

    Ошибка происходит, когда строковая константа начинается с запятой.

    Reply
  44. MMF

    (43) учту, спасибо

    Reply
  45. MMF

    v.1.0.0.9 Отсортировано дерево объектов в просмотре прав. В дерево метаданных включены последовательности, нумераторы, веб-сервисы, регламентные задачи, подписчики событий. Добавлен просмотр rls запросов.

    Reply
  46. MMF

    v.1.0.0.9 Просмотр свойств конфигурации: описание полное/краткое, поставщик, версия

    Reply
  47. MMF

    (46+) пардон, 1.0.0.9 читать как 1.0.0.10

    Reply
  48. artbear

    (MMF) Михаил, а нет ли у тебя утилитку ком.строки для разбора внешних файлов (epf, erf) на текстовые?

    Нужно для организации текстового репозитария внешних обработок, которые не включаются в конфигурацию.

    Поможешь?

    Reply
  49. MMF

    (48) такой утилиты у меня нет. А как ты предполагаешь в текстовом виде хранить включенные в отчет макеты с двоичными данными или даже просто моксели?

    Reply
  50. artbear

    (49) Да, с макетами проблема, но думаю, что это не столь важно.

    Главное, все равно логика, ну и формы также было бы удобно хранить.

    А макеты и двоичные виды можно хранить как бинарника.

    В семерке так и делаем 🙂

    Reply
  51. MMF

    (50) 1) если разбираем, то нужно еще и собрать как-то 2) в чем тайный смысл разбирания внешних отчетов? Если в отношении cf это понятно — организовать одновременную работу разработчиков с минимальным траффиком в CVS, то обработки и так невелики по размеру и к тому же одновременно их править вообще никому в голову не придет. 3) хранить их централизовано — это да, нужно, но в собранном и готовом к использованию виде

    Reply
  52. artbear

    (51) Нужна история изменений, возможность сравнения со старыми версиями и т.д. и т.п., т.е. многие фичи репозитариев 🙂

    Reply
  53. den_valley

    Также возникает ошибка при просмотре закрытого модуля

    —Неверный символ в потоке: [.] [«N»,29.4]

    при использовании числовых значений, типа

    СреднееКоличество = 29.4

    Reply
  54. MMF

    v.1.0.0.11 Исправлены ошибки парсера. Благодарю den_valley, awa.

    Reply
  55. Stepa86

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

    Может можно какой нить прогрессбар присобачить? а то значок мигает минут 10, а ничего не происходит…

    ЗЫ Так же очень жду возможность работы из 1Ски…

    Reply
  56. German

    (52) дак это в SQL сделать проше пареной репы может в 5 версии Ei сделаю

    Reply
  57. Yra

    При чтении закрытого модуля начинает выводить, а потом дает ошибку: List index out of bounds (3) — и все пропадает. Если можно исправить — очень нужен байтовый код…

    Reply
  58. MMF

    (57) выложи куда-нить, попробуй посмотреть

    Reply
  59. Yra

    Вся конфа — очень здоровая (25 метров) а отдельный кусок из нее вырезать — не знаю как.

    Reply
  60. Yra

    может в парсере поправить — после ошибки пусть оставит то, что уже вывел?

    Reply
  61. tojocky

    а исходники где? может развивать проект и появиться новые предложение!!!

    Reply
  62. MMF

    (61) дай пару ссылочек на выложенные тобой исходники чего-либо.

    Reply
  63. Yra

    Добрый день!

    Вырезал я кусок, на котором у меня ошибка вылетает.

    Дайте, пожалуйста e-mail, куда его можно вам бросить.

    Заранее благодарен за помощь.

    Reply
  64. MMF

    v.1.0.0.12 Просмотр состава плана обмена. Багофиксы в ПодписчикахСобытий, РегламентныхЗаданиях,ПланахВидовХарактеристик.

    Reply
  65. MaxS

    УПП долго открывает

    1С-ом быстрее ;(

    Установил v 1.0.0.12, а по кнопке i показывает v 1.0.0.11

    Reply
  66. tojocky

    Может покажешь исходники и будем вместе развивать проект?

    ionlupascu@gmail.com

    Reply
  67. MMF

    v.1.0.0.13 Уменьшение времени открытия конфигурации.

    (66) исходники не планирую выкладывать

    (65) попробуй с новой версией

    Reply
  68. tojocky

    Есть предложение импортировать конфигурацию в C++/Ultimate++ (http://ultimatepp.org).

    Предлагаю соединиться. Кого интересует (ionlupascu@gmail.com)?

    (67) Может все таки не будем жмуриться?

    Reply
  69. German

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

    Reply
  70. vladismi

    Приятно, но .erf у меня не открывает…

    Reply
  71. MMF

    (70) под erf понимается epf? Если да — выложи на какой-нить файлообменник неоткрывающуюся обработку

    Reply
  72. Sol

    (71) в 8.1 раздели отчеты и обработки. Как раз отчеты и идут с расширением erf. Отличаются от обработок наличием макета Компоновки данных. Да и структура у них разная. Если просто переименовать отчет с расширением erf на epf и даже если отчет будет обычным — без Компоновки, при открытии такого файла в конфигураторе 1С — он откроется «пустым».

    Reply
  73. Sol

    *(72) раздели — разделили

    Reply
  74. Gamm

    При выводе байт кода закрытого модуля выводит ошибку

    List index out of bounds (0)

    Reply
  75. Abadonna

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

    Reply
  76. Sol

    (75) а когда группируются, то хотелось бы, чтобы группировались и комментарии

    Reply
  77. Sol

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

    Reply
  78. Sol

    А что в 13-м релизе с закрытыми модулями?

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

    Reply
  79. kostas

    А чего Far обижаем?

    Reply
  80. MMF

    v.1.0.0.14 Введена конфигурационная настройка «Сворачивание кода»

    Reply
  81. wifi1232

    MMF, сколько времени (денег) может потребоваться написать IFilter (для файлов 1С 8) для поиска через Windows Desktop Search?

    Reply
  82. tormozit

    (81) Да. Даешь API. Хотя бы за бумажки.

    Reply
  83. mae

    Хотелось бы скачать, дабы проверить. Не получается…

    Reply
  84. myk0lka

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

    Reply
  85. MMF

    (84) это же безнравственно и аморально, к тому же его сразу удалят с Инфостарта

    Reply
  86. coder1cv8

    (84) А нафига? ) Для декомпиляции кода утилиты есть, а плагин хороший действительно отсюда удалят в таком случае…

    Reply
  87. Winston

    Не работает по F3 и По F4 . Может что не так настроено нет времени копаться

    Reply
  88. Збянтэжаны Саўка

    (87) Передвинь его в списке плагинов TC наверх, проверь работу, ну а затем подкорректируй позицию в списке плагинов под себя.

    Reply
  89. highlander

    (71) Уважаемый MMF, будет ли осуществлена возможность просмотра *.erf файлов?

    Reply
  90. cathode

    Если автор еще поддерживает разработку, то, может быть, обратит внимание на одну странность: при открытии файлов типовых конфигураций ЗУП 2.5.23.4 и УПП 1.2.29.1 при развороте ветки документа АнкетаЗастрахованногоЛица, его реквизиты и табличные части оказываются подчиненными макету ФормаАДВ_1, а не самому документу. Хотя, конечно же, это косметика.

    А в целом разработка хорошая и полезная.

    Reply
  91. mmo_repr

    Классный плагин! Спасибо. 😎

    Reply
  92. Tokiy

    http://infostart.ru/profile/1106/ А для 8.2 плагин будет?

    Reply
  93. serovmsk

    кто знает чет декомпилировать CFG и CF файла 1C 8.1 и 8.2 а также 1CD файл??????????

    Reply
  94. nickkey

    Да да спасибо стало намного удобней и функциональней работать в любимой программе

    Reply
  95. vint2008

    Полезная вещица Спасибо

    Reply
  96. SergTH0000

    Спасибо, то что нужно..

    Reply
  97. SergTH0000

    А что, удобная вещица)

    Reply
  98. Maddy18

    А если типовую бухгалтерию открывать не работает:( Релиз 2.0.27.8 Платформа 8.2.14.519 наверное из за платформы 🙁

    Reply
  99. tonger

    Большое Спасибо!

    Очень полезная обработка

    Reply

Leave a Comment

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