Total Commander 1C Edition




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

90 Comments

  1. NoMax

    Спасибо. Весьма полезная сборка!

    Reply ↓
  2. Dolour

    Спасибо!!! 😀

    Reply ↓
  3. iov

    Хоть все есть но заберу сборочку…

    Хорошо оформлено.

    Reply ↓
  4. IDija

    Вещь хорошая и полезная. Но почему то не срабатывает «Запуск 1С Предприятие для текущей папке» и в серверном режиме не запускается тоже. А так «+»

    Reply ↓
  5. Йожкин Кот

    Были проблемы с передачей длинных путей в скрипт запуска 1С — исправил. Текущая папка — имеется ввиду папка на которой стоит курсор в Тотале.

    Reply ↓
  6. iov

    (0)есть пара замечаний

    [Configuration]

    UseIniInProgramDir=7

    Добавь это в ini и переименуй TOTALCMD.ini >wincmd.ini будет запускаться без bat

    Настрой ini хотя бы секцию с языком

    Reply ↓
  7. IDija

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

    Reply ↓
  8. Йожкин Кот

    (6) Спасибо за подсказку!

    Reply ↓
  9. iov

    (8)та незачто.

    Reply ↓
  10. PeterBayan

    Насколько я понял, программа trial-версии, или я что-то делаю не так?

    Reply ↓
  11. Йожкин Кот

    Да, программа триальная, ключей и взломщиков у меня нет.

    Reply ↓
  12. svv77

    Для 8.2 не работает запуск из текущей папки

    Reply ↓
  13. marsohod

    Спасибо 🙂 Взял ради плагинов — прикручу к уже установленному Power Pack.

    Reply ↓
  14. Йожкин Кот

    (12) Спасибо за замечание, в следующем обновлении сборки поправлю

    Reply ↓
  15. vasilykushnir

    Однозначно + потому что Тотальник 😉

    Reply ↓
  16. Andzhej

    «+» за проделанную работу, «афтар» давай еще 😉

    Reply ↓
  17. cool.vlad4

    Ай молодца!

    Reply ↓
  18. the1

    Не работает скрипт 1c_path.vbs. Говорит, ошибка

    строка 57
    символ 2
    несоответствие типа: Shell.ShellExecute
    Код 800А000D

    Система Windows 7. 1c — 7.7

    Reply ↓
  19. Йожкин Кот

    (18) Видимо у тебя не установлена 1С 7.7.

    Reply ↓
  20. the1

    (19)

    как раз наоборот — не стоят 8.1 и 8.2

    Исправить можно только установкой этих приложений? Или можно как то дописать скрипт?

    Reply ↓
  21. Йожкин Кот

    (20) На подходе уже обновленная сборка. Попробуй на ней 7.7 запустить.

    Reply ↓
  22. plinth

    Очень удобно, хотя ещё лучше вынести плагинами для PowerPack’a, например.

    Reply ↓
  23. vasilykushnir

    (21) а на кике Димон не ты?

    http://qiq.ru/09/02/2011/programs_soft/358641/total_commander_1c_editio­n.html

    Ежели нет, то плагиат детектед. Надо бы товарищу указать…

    Reply ↓
  24. Йожкин Кот

    Нет, не я. Я выложил сборку только на Инфостарте.

    Reply ↓
  25. _WinChester_

    Хорошая вещь, спасибо.

    Столкнулся с такой проблемой: стандартная системная клавиша F2, предназначенная для переименования файла, была отключена.

    Для включения необходимо в файле wincmd.ini найти раздел [Shortcuts] и добавить в него строку F2=cm_RenameOnly

    Reply ↓
  26. lookindenis

    кхм…

    при скачивании аваст заорал как потерпевший…

    троян! троян!

    эт какт … неудобно )

    Reply ↓
  27. Йожкин Кот

    (25) спасибо, в добавлю в обновлении.

    (26) проверьте свой антивирус.

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

    (0)

    Для установки исправлений стереть старую папку и разархивировать в нее TotalCommander1CEdition.zip

    Как можно разархивировать файл в уже несуществующую папку?

    Reply ↓
  29. plevakin

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

    Reply ↓
  30. Йожкин Кот

    (29) Не может. Но могу попробовать реализовать такое.

    Reply ↓
  31. plevakin

    Было бы великолепно. Спасибо.

    Reply ↓
  32. Ibragimov

    пользуюсь давно) спасибо)

    Reply ↓
  33. maikl_len

    Все просто супер. Хотя и пользуюсь не часто, но все же помогоет.

    Reply ↓
  34. nikdn

    Спасибо!!

    Reply ↓
  35. Триш

    Спасибо!

    Reply ↓
  36. zloi_tatarin

    Cgfсибо!!! Хорошая сборка, очень удобная))

    Reply ↓
  37. m818rt

    Ух ты…круто) Спасибо)

    Reply ↓
  38. soba

    А не рассматривал вариант подобного на халявном софте типа FreeCommander ?

    Reply ↓
  39. Klondaik

    Почему то на Win7 как то глюкаво работает. Некоторые функции не стартуют..

    Reply ↓
  40. ipyu

    Спасибо, просто здорово сработано.

    Reply ↓
  41. Йожкин Кот

    (40) Нет, т.к. тоталом пользуюсь уже больше 10 лет.

    (42) Какие конкретно функции не работают?

    Reply ↓
  42. BAPPKAH

    Спасибо, просто здорово

    Reply ↓
  43. mkostya

    работает, понравилось спасибо

    Reply ↓
  44. QWer666

    С архиватором будет очень полезная вещь! Ну и сегодняшний вариант тоже устраивает! Спасибо автору!

    Reply ↓
  45. рибак

    оформление нормальное, удобно и полезно, ставлю плюсс

    Reply ↓
  46. bolush

    Вещь хорошая и полезная, можно взять себе на воружения, респек автору 🙂

    Reply ↓
  47. BalVlad

    Спасибо, удобная вещь, хотя в основном пользуюсь FARом, но у Вас есть некоторые плагины более удобные.

    Reply ↓
  48. var-s

    Спасибо вещь нужная…

    Reply ↓
  49. trunix

    Спасибо!!! Тоталом пользуюсь постоянно. С такими возможностями тотал в два раза удобнее и полезнее!!!

    Reply ↓
  50. Little-ann

    Использую в основном просто Total, но и фишками для работы 1С пользоваться приходилось. Супер!

    Reply ↓
  51. antares_of

    Поражает своим набором функций. Очень удобно, собрано много полезных утилит, спасибо

    Reply ↓
  52. rdv

    Извени аффтар, но помоему зря скачал, а жаль.

    Reply ↓
  53. tehas

    думаю будет очень полезно, беру, спасибо

    Reply ↓
  54. CratosX

    1. Для %COMMANDER_PATH%utilsopenfileOpenFileTC.exe для wDBFview.exe и firsobject XML Editor указаны абсолютные пути (у вас что-то наподобие D: otal... Надо переправить на %COMMANDER_PATH%utilswinDBFviewwDBFview.exe и %COMMANDER_PATH%utilsfirstobject XML editorfoxe.exe соответственно.

    2. Издавна пользуюсь версией 7.04a (8.8.2008) by SamLab.ws, и те настройки мне нравятся больше, а в вашей сборке все горячие клавиши не настроены — ни F2, ни Alt+ стрелка вверх (править путь), ни Ctrl+A (выделить всё) и т.п. Уж и не знаю, что легче будет, плагины перенести в свой, либо полностью переопределять интерфейс вашей сборки(((

    Reply ↓
  55. Niberu

    К пожеланиям будущих релизов:

    Было бы замечательно, если бы «1С мешок настроек и плагинов» был отдельным, чтобы в свой имеющийся Total их подцеплять.

    Reply ↓
  56. CratosX

    При нажатии любой кнопки запуска 1С 8.1 или 8.2 выдаёт ошибку:

    В visual basic не силён. Открываю на Windows 7

    Reply ↓
  57. Altair777

    Сборка, несомненно, полезная. Но вот хотелось бы не установить новый тотал, и интегрировать все полезные фичи из этой сборки в уже установленную программу. В частности, у меня Total Commander 8.00 ExtremePack 2012.5 от Samlab.

    Автор, можете написать хотя бы краткое руководство как правильно это сделать? А еще лучше если бы была программа установки с внедрением в уже инсталлированный тотал.

    Reply ↓
  58. Йожкин Кот

    (61) К сожалению, не знаю как сделать. Можете попробавать вручную перенести настройки и плагины. Все настройки тотала хранятся в файле wincmd.ini, там же — пути к плагинам. В папке Toolbars — менюшки 1с. Папка Archivators — архиваторы. Папка utils — редакторы и утилиты для 1с.

    Reply ↓
  59. Sairys

    Интересное решение

    Reply ↓
  60. newold2

    Хорошая работа (+)

    Reply ↓
  61. electronik

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

    Reply ↓
  62. Созинов

    (58) cratos2,

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

    Altair777, действительно, было бы неплохо увидеть пошаговую инструкцию по созданию сборки

    Автору плюс.

    Reply ↓
  63. Shade

    И как только не облегчат жизнь программиста, спасибо!

    Reply ↓
  64. alexbuk

    <jkmijt cgfcb,j pf c,jhre

    Reply ↓
  65. alexbuk

    упс. спасибо за сборку

    Reply ↓
  66. LND_gaz69

    Спасибо, плюсану!

    Reply ↓
  67. highlander

    Такую сборку обязательно возьму на вооружение… а то после каждой переустановки винды приходится ставить тотал и по памяти прикручивать плагины. Спасибо большое. а что касается триала — это решабельно

    Reply ↓
  68. lexeika

    Спасибо.

    Reply ↓
  69. SmokeAce

    Спасибо отличная сборка!

    Reply ↓
  70. skurser

    +1

    Reply ↓
  71. tanekQ

    Однозначно плюс! Возьмем в копилку!

    Reply ↓
  72. JohnySC

    Давно пользуюсь, спасибо! Но есть проблемка не решенная, хотя может я просто не знаю как она тут решается. Состоит в том, что на Windows 7 или 8 (обе x64) установочник 1с 7.7 вообще не запускается, поэтому её можно только перенести копированием с другой системы, и соответственно Ваш скрипт не находит 7-ю одинэсину совсем. Для себя решил проблему добавлением такого файлика в реестр:

    Windows Registry Editor Version 5.00
    [HKEY_CLASSES_ROOTV77.Application]
    @=»1CV77 Application»
    [HKEY_CLASSES_ROOTV77.ApplicationCLSID]
    @=»{5CD98F12-1050-4b43-84F2-33AD97CFC287}»
    [HKEY_CLASSES_ROOTV77.ApplicationCurVer]
    @=»V77.Application»
    [HKEY_CLASSES_ROOTWow6432NodeCLSID{5CD98F12-1050-4b43-84F2-33AD97CFC287}LocalServer32]
    @=»c:\Program Files\1Cv77\BIN\1cv7.exe»

    Показать

    Соответственно там надо поставить свой путь к 1С7.7 и если не х64, то Wow6432Node похоже надо убрать (хотя хз, не на чем щас поэкспериментировать)

    Reply ↓
  73. internetname

    Жаль не пользуюсь этим файловым менеджером.

    Reply ↓
  74. RG84

    а я очень уважаю Total Commander, а теперь еще и с удобными настройками для роботы с 1С… Спасибо большое!!!

    Reply ↓
  75. idemirkan

    Потрясно, лучший инструмент для одноэсника.

    Reply ↓
  76. as7bs

    При попытке выгрузить базу или сохранить конфигурацию, а так же при попытке тестирования и исправления 8.2 для текущей папки выходит следующая ошибка:

    Платформа: 1С:Предприятие 8.2 (8.2.17.169)

    Конфигурация:

    Режим: (без сжатия)

    Приложение:

    Локализация: Информационная база: русский (Россия), Сеанс: русский (Россия)

    Ошибки:

    ———————————————————————————

    22.10.2013 15:53:56

    Информационная база не обнаружена

    Отсутствует файл базы данных ‘d:Áàçû!Êîíâåðòàöèè ÇÓÏ 2011ÇÁÓ1Cv8.1CD/1Cv8.1CD’

    по причине:

    Отсутствует файл базы данных ‘d:Áàçû!Êîíâåðòàöèè ÇÓÏ 2011ÇÁÓ1Cv8.1CD/1Cv8.1CD’

    Если путь к базе только из латинских букв то, вместо выполнения вышеуказанных действий, база просто открывается в режиме 1С предприятия(тонкий клиент)

    При «Запуск 1С:… 8.2 … для текущей папки» ошибок нет.

    Reply ↓
  77. Йожкин Кот

    (80) Видимо это ошибка 1cestart. Он не понимает параметры файла пакетного запуска. Отписался на оффоруме 1с, жду ответа.

    Reply ↓
  78. highlander

    (76) JohnySC, а вы не пользуетесь инсталлятором 1с77 для Win7/8?

    Reply ↓
  79. sytkosa

    (0) А когда ждать добавление в сборку поддержку 1С 8.3. Заранее спасибо

    Reply ↓
  80. Йожкин Кот

    (83) Вобщем-то и сейчас 8.3 поддерживается, т.к. 1cestart все равно запускает последнюю установленную платформу.

    Reply ↓
  81. sytkosa

    (83) Ну про стартер это понятно. Хотелось бы прорисовки иконок или пунктов меню заточеных под 1с 8.3

    Reply ↓
  82. Gendalf_beliy

    очень давно пользуюсь и удобно работаю с Total Commander, а теперь еще и с удобными настройками для роботы с 1С… Огромное спасибо

    Reply ↓
  83. linsa

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

    Спасибо автору.

    Reply ↓
  84. quazar-ed

    Отличная идея расширить возможности удобного файлменеджера

    Reply ↓
  85. shoy

    Для 8.3 ещё не готово?

    Reply ↓
  86. u_n_k_n_o_w_n

    Скачал, но не могу воспользоваться. Выдает ошибку.

    Спасибо.

    Reply ↓
  87. Йожкин Кот

    (91) Скрин ошибки приложите

    Reply ↓
  88. Kertman

    Хорошо было бы если бы TC поддерживал платформу 8.3.

    Reply ↓
  89. sytkosa

    (93) Что мешает сделать аналогичный проект с поддержкой 8.3. Я например себе такой сделал и вполне доволен.

    Reply ↓
  90. Йожкин Кот

    (95) Да в общем-то текущая версия и с 8.3 работает

    Reply ↓

Leave a Comment

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