Total Commander 1C Edition




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

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