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




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

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 не будет опубликован. Обязательные поля помечены *