HotKey Менеджер для 1С




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

96 Comments

  1. Ёпрст

    Идея хорошая, но денех не дам ни копейки!

    🙂

    Reply ↓
  2. Ёпрст

    +1 тем более, что и так всё прозрачно…

    Reply ↓
  3. vip

    (2) Более чем ;))

    Reply ↓
  4. Noy

    (1,2) Так продаю я не программистам, а пользователям! 🙂

    А программисты могут сами дописать недостающий модуль (код весь открыт — даже кое-где комментарии остались…)

    Reply ↓
  5. biv75

    (4) Действительно, блин ну все такие умные, надо вставить свои пять копеек, вам прозрачно, другим нет.

    Reply ↓
  6. Altair777

    to Ёпрст и vip

    Сделайте сами и выложите бесплатно. Честное слово, плюсик вам поставлю!

    🙂

    Reply ↓
  7. Re:аниматор

    Народу пофиг до «горячих клавиш» им чуждо кнопкой мыши нажать…

    помнить в голове Ctrl+Alt+E и т.д. емкостно) и так ошибок много делают, а под горяченькое вообще затупят)

    Reply ↓
  8. Ёпрст

    (5) Там 90% кода есть, самое основное — в доп. глобальном модуле, вся структура хранения/открытия написана… кинуть форму, написать код заполнения ТЗ — не составит никакого труда..

    (6) Нафига ? Автор мот, разбогатеет, уедет на пмж в ГОА и забудет 1с навсегда… зачем ему мешать? ..

    🙂

    Reply ↓
  9. Altair777

    (8) не допустим утечку мозгов! 🙂

    Reply ↓
  10. vip

    (6) 1. Уже много лет не представляю работы без FormEx и 1С++

    2. Все давно сделано и работает в моих проектах.

    3. В плюсиках не нуждаюсь.

    4. (7) абсолютно прав. Приживаются 2-3 хоткея, не больше.

    Reply ↓
  11. Altair777

    (10) а можно как-то где-то увидеть Ваши проекты?

    Reply ↓
  12. vip

    (11) А как ты себе это представляешь?

    Заказчики заплатили (и платят) мне деньги, работают со своими уникальными алгоритмами ведения бизнеса, а я взял и вывалил все г-ну Altair777?

    И заработал плюсик.

    Reply ↓
  13. Altair777

    (12) или минус, смотря что Вы там наваяли и вывалили

    Reply ↓
  14. biv75

    (12) Ну хотя бы пример уникального алгоритма, а то уже не раз слышу что ты пишешь всё сам с нуля, делаешь что-то уникальное, но ниразу не видел. Любопытно однако.

    Reply ↓
  15. vip

    (14) Уникальное стоит денег, на то оно и уникальное.

    А плюсы и минусы мои дети не едят.

    Reply ↓
  16. Abadonna

    Горячие клавиши для пользователя????????!!!! Да они F9 запомнить не могут 😉

    Reply ↓
  17. Altair777

    (16) за почти 3 года пребывания на ИнфоСтарте…

    ни одной статьи!

    ни одной разработки!

    и даже ни одной шутки юмора! 🙂

    Reply ↓
  18. vip

    (15) Прав.

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

    Клавиши запоминают только при очень интенсивной работе.

    Reply ↓
  19. vip

    (17) Ну, с твоим искрометным юмором не сравнится никто.

    Reply ↓
  20. Altair777

    (19) кстати, Игорь (biv75), я не рассказывал что моя конфигурация работает в одном очень крупном банке, они мне регулярно бабло отстегивают, но это тайна…. тсссс… никому не говори… а конфигурация такая крутая!!!

    Reply ↓
  21. biv75

    (19) Ты от темы не отвлекайся, по существу вопроса ответь, как можно ознакомиться с твоими работами и поучиться на них.

    Reply ↓
  22. vip

    (20) Это типа образчик твоих великолепных шуток?

    Reply ↓
  23. biv75

    (20) Даааа… ну надо же… я и не знал, всё теперь после того как ты мне рассказал…. почет и уважуха тебе Альтаир.

    Reply ↓
  24. vip

    (21) Я именно в теме.

    В учениках не нуждаюсь.

    И в рекламе тоже.

    Reply ↓
  25. Altair777

    (24) вот сегодня одной «дамочке» написал

    Вас, vip, это тоже касается

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

    > Не можете или не хотите — не ссылайтесь.

    http://infostart.ru/projects/3571/?p=1#comm15

    Reply ↓
  26. biv75

    (24) Да мне фиалетово в чем ты нуждаешься, а в чем нет, ты покажи что ты не только болтать умеешь, а ещё и что-то реальное можешь делать, а то одни слова, а ник vip, вроде как с притензиями на серьёзность.

    Reply ↓
  27. vip

    (20) и (23) Петросян и Дубовицкая.

    Зал рыдает от смеха.

    Reply ↓
  28. Altair777

    (27) да, клоун, над тобой

    Reply ↓
  29. Noy

    Опаньки…

    вот это да — попала ни в чем не повинная обработка «под паровоз»

    Люди, давайте что-ли по теме выскажемся, а перепиской надо в личке заниматься.

    ЗЫ По теме ваших препирательств: поддерживаю Altair777 и biv75.

    Reply ↓
  30. biv75

    (29) так по теме и есть, хочу чтобы товарисчь за базар ответил, и всем показал кокой он умный, вот Ёпрсту верю, вижу, знаю.

    Reply ↓
  31. vip

    (30) Мне не надо показывать, какой я умный.

    Я просто умный.

    И серьзный. Без прИтензий на серьёзность.

    Reply ↓
  32. Noy

    (30) ну Ёпрсту и я верю: «сталкивался» с ним тут и на мисте — и в предметной подкован и человек хороший…

    Reply ↓
  33. biv75

    (31) Вот оно как оказывается «Я просто умный»

    «Мы, великиё люди, манией величия не страдаем»

    Reply ↓
  34. Abadonna

    Брэк! biv75 мне веришь? Там чё-нить мое на инфострате видно?

    Reply ↓
  35. Ёпрст
  36. Abadonna

    (35) Вопрос в основном был «веришь — не веришь?» 😉

    Reply ↓
  37. Altair777

    (34) лично я тебе верю… но vip’у — нет…

    И почему я, собственно говоря, должен верить?

    Если бы он сказал, что он просто хороший парень, я бы не оспаривал.

    А так…Еще один г. от 1С? 🙂

    Reply ↓
  38. biv75

    (34) Конечно верю, не вопрос ))

    Reply ↓
  39. Душелов

    (36) Он просто хороший парень 🙂

    Reply ↓
  40. Душелов

    +39 И знатный программист 🙂

    Reply ↓
  41. Abadonna

    (38)Так вот: мы с ним частенько кодами обмениваемся. Окончательный приговор vip-у мой такой — ОЧЕНЬ УМНЫЙ 😉

    Reply ↓
  42. Altair777

    (40) сейчас форум почитаю, может он людям помогал? хорошими советами 🙂

    хм… за 3 года 102 сообщения…

    Reply ↓
  43. Altair777

    (42) ааа!!! это сговор! 🙂

    Reply ↓
  44. Noy

    Вот и хорошо, что все выяснили…

    Но давайте сменим тему и начнем комментировать обработку.

    Reply ↓
  45. Abadonna

    (44) Про обработку: молодец, правда я уже давно такое сделал, но только для себя любимого, юзвери даже и не в курсе (еще обезьянам гранату давать!))))

    А плюс поставлю — молодец

    Reply ↓
  46. biv75

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

    Reply ↓
  47. Душелов

    (46) Когда делается «для себя» не факт, что подойдет всем.

    Reply ↓
  48. Noy

    (45) у меня только «продвинутые» юзвери пользуются обработками такого плана…

    ЗЫ я тут еще «таскменеджер для 1С» пишу (по типу Альт-Таб) — скоро выложу.

    Reply ↓
  49. Altair777

    боюсь, как бы не создали прецендент…

    скоро количество «гениев» превысит количество нормальных людей

    по сабжу: имхо, вещь полезная

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

    Reply ↓
  50. Altair777

    (48) ну, раз он плюсанул, разовью мысль

    А не надо что бы всем, только таким же умным, как и он.

    Или таких больше нет?

    Reply ↓
  51. biv75

    (48) Самое не правильное, когда принаписании разработки она пишется так что работает только в той компании для которой её пишут, я не умный, поэтому пишу решения так чтобы они легко тиражировались и подстраивались под любое предприятие данной отрасли. Видел таких умных программистов, без участия которых потом программа хрен работает, потому что она на столько «грамотно» написана под конкретное предприятие.

    Reply ↓
  52. vip

    Abadonna и Душелов — спасибо ;))

    (46) Я не занимаюсь попаданием в широкие массы. И не собираюсь этим заниматься.

    И никогда не говорил, что я «такой проф, что даже не готов со мной засранцем…» и далее по тексту.

    Reply ↓
  53. Altair777

    (52) вот так бы сразу и сказал —

    «Я работаю начальником ВЦ, а когда меня Василий или Аркадий просят помочь, я вызываю прогера, даю ему задание и он все делает.

    А потом я обмениваюсь кусками кода. Хотя они мне нафик не нужны, потому что я в этом все равно ничего не понимаю.»

    Reply ↓
  54. vip

    (0) По поводу разработки. Плюсик за пропаганду FormEx.

    По поводу широких масс и прочего.

    Помощь — О программе… — FormEx — Мои благодарности — Верхняя строчка

    Как думаешь, справлюсь я с хоткеями? 😉

    Reply ↓
  55. Noy

    (49) никак — видать ограничение платформы. Альт-Таб первой ловит сама винда, F1 — сама платформа…

    все что смог сделать — создал список самых популярных хоткеев и вывод предупреждения «выбранный хоткей может использоваться системой…»

    Reply ↓
  56. Altair777

    (54) ничего не значит

    если бы это было написано в «В компоненте использован код и наработки:»

    Reply ↓
  57. Altair777

    > Благодарность: Ерохину Андрею aka vip за неоценимую помощь в тестировании.

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

    Reply ↓
  58. vip

    (56) Свой код я использую в своей компоненте и охотно делюсь с программистами. Но не с флудерами и клоунами.

    На, если хочешь.

    http://www.forum.mista.ru/topic.php?id=352834 пост 10.

    Много еще могу накидать. Только зачем?

    Reply ↓
  59. Altair777

    (58) А как твоя компонента называется?

    А кроме благодарностей ты за тестирование и идеи ты что-то создал?

    Ты думаешь что я не программист? Забавно 🙂

    А я как раз думаю, что клоун это ты.

    Reply ↓
  60. vip

    (59) Моя ВК называется semen.dll. Семен это мой кот.

    Не распространяется и не продается.

    Идея — это значит готовый рабочий код.

    На еще цитату из als DialMail

    Синтаксис

    СистемноеМеню

    Назначение

    Идея и реализация принадлежит Андрею Ерохину.

    Позволяет управлять видимостью ситемного меню 1С. При присвоении реквизиту 0 меню скрывается, при 1 — появляется.

    Доступен по чтению и записи.

    Повторишь, программист? Или ты адынэсник?

    Reply ↓
  61. Abadonna

    Скаламбурю, сам бог велел: Noyev ковчег получился, места мало, зверья много, все грызутся :)))))))

    Reply ↓
  62. Altair777

    (60) Ясно.

    Все настолько секретно, что его как бы и нет. А, может, и правда нет?

    Я не разбираюсь в уничижительных терминах.

    Объясни, чем «адынэсник» отличается от инженера-программиста?

    Reply ↓
  63. vip

    (61) Точно. :)))

    Ща Альтаир применит свой последний коронный довод — наставит минусов на каждый мой пост и удалится.

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

    Reply ↓
  64. Altair777

    (63) Дурачок ты просто. Я так сделал только 1 раз и то не на все.

    Reply ↓
  65. vip

    (62) Никаких секретов нет. Просто широким массам это абсолютно не нужно.

    > Объясни, чем «адынэсник» отличается от инженера-программиста?

    Я не инженер-программист, я инженер-механик.

    Reply ↓
  66. Altair777

    (63) И ответь за свои слова. Где и когда я так делал?

    Reply ↓
  67. Altair777

    (66) Если ты не оазбираешься то зачем сам вопросы задаешь?

    (60) > Повторишь, программист? Или ты адынэсник?

    Reply ↓
  68. biv75

    (66) Ну так бы сразу и сказал, что ты инжинер-механик, а я с тебя пример разработки трясу, глупость какая.

    Reply ↓
  69. vip

    (65) см. свой же (64)

    Дурачок у тебя в штанах. Я тебя не оскорблял.

    Reply ↓
  70. Altair777

    (68) Игорь ты не прав.

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

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

    Reply ↓
  71. vip

    (68) И Abadonna инженер-механик. И АЛьФ.

    Тенденция, однако…

    Reply ↓
  72. Abadonna

    (68) Между прочим, АЛьФ и я тоже инженеры-механики :)))

    А Ероха гонит, технология машиностроения, куды вам до нас, конструкторов, бе-бе-бе :))))))))))))

    Reply ↓
  73. biv75

    (68) Да и я инжинер радиоэлектроники, но я могу показать что я умею как программист, а ты стесняешься.

    Reply ↓
  74. vip

    (70) Я не забочусь о широких массах.

    Я забочусь о своих работодателях.

    Reply ↓
  75. biv75

    (70) Вот этот факт ещё больше разжгает мой интерес, я алчу этот шедевр (или хотя бы часть шедевра) увидеть и оценить

    Reply ↓
  76. Altair777

    to vip

    Я повотряю свой вопрос! Где и когда я и так делал?

    > Ща Альтаир применит свой последний коронный довод — наставит минусов на каждый мой пост и удалится.

    Я обвиняю тебя, что ты ты оклеветал меня публично

    Reply ↓
  77. vip

    (73) А что конкретно тебя интересует?

    Перенумератор нарисовать?

    Или есть вопрос, который давно мучает, а решения нет?

    Спроси. Если смогу, отвечу.

    Reply ↓
  78. vip

    (76) Я вроде понятно ответил в (12)

    Reply ↓
  79. Abadonna

    Зато Ноева разработка все время в топике :)))

    Ты им всем спасибо скажи 😉

    Reply ↓
  80. Altair777

    (78) а теперь ответь за свои слова

    Я обвиняю тебя в клевете

    Reply ↓
  81. vip

    (75) Я ПОВОТРЯЮ свой ответ см. свой же (64)

    Обвинитель, мля.

    Reply ↓
  82. Altair777

    (81)

    (63) Ща Альтаир применит свой последний коронный довод — наставит минусов на каждый мой пост и удалится.

    (64) Я так сделал только 1 раз и то не на все

    Я ПОВТОРЯЮ СВОЙ вопрос

    если я минусанул 5 сообщений (не все ее в ветке, а только те, которые этого заслуживали) от некой не уравновешенной особы, это тебя дает основания утверждать, что это мой КОРОННЫЙ номер?

    Reply ↓
  83. vip

    (82) Сам задаешь вопросы, сам же отвечаешь…

    Типичная известная черта инженера-программиста 1С.

    А насчет оскорблений…

    Если ты считаешь слова «клоун», «дурачок» и т.п., уважительными по отношению к взрослому человеку, имеющему внуков, то у нас несколько разные понятия о порядочности.

    Reply ↓
  84. Altair777

    (83) > Если ты считаешь слова «клоун», «дурачок» и т.п., уважительными по отношению к взрослому человеку, имеющему внуков

    Ну нет у меня внуков, так тебе поэтому можно говорить обо мне как о клоуне?

    см (58)

    Reply ↓
  85. vip

    (85) Ты меня утомил.

    Да, ты типичный адынэсник. С типичной чертой — тупой. Очень.

    Reply ↓
  86. vip

    (85+) Тема клоунов впервые прзвучала в (28).

    Reply ↓
  87. Abadonna

    Вы еще подеритесь, горячие финские парни :))))))))

    Reply ↓
  88. Altair777

    (88) Тема юмора впервые прозвучала в (27)

    Reply ↓
  89. vip

    (87) Ладно. Разберем пост (82)

    > Я так сделал только 1 раз и то не на все

    Так сделал или нет?

    > если я минусанул 5 сообщений (не все ее в ветке, а только те, которые этого заслуживали) от некой не уравновешенной особы

    Так минусанул или нет? (и попутно продолжаешь оскорблять даму)

    > утверждать, что это мой КОРОННЫЙ номер?

    А что, определено количество минусов, после которого наступает коронность?

    Мне показалось достаточно коронно.

    Reply ↓
  90. Altair777

    (91)

    Для особо умных повторяю это было 1 раз, и минусовал я не ВСЕ сообщения, как ты написал, а некотоые неправильные

    Коронность номера зависит не от минусов. Посмотри в словаре. Если у тебя нет словаря — В словаре Ожегова:Коронный (3) — Лучше всего удающийся.

    А одноразовая акция, причем не та, которую ты описал, не может быть КОРОННЫМ номером.

    Или тебе лучше знать? Как там у вас на манеже считают? 😉

    Reply ↓
  91. Abadonna

    Да… Доплыл Ной до горы Арарат и подумал: «А на х@я?» :)))

    Ну перенесите поле боя, блин

    Reply ↓
  92. Altair777

    (97) Это ты про какую Наташу? Ссылку дай.

    Reply ↓
  93. Altair777

    (102) И в чем издевательство?

    В этом?

    25. Altair777 07.04.2009 13:53:18

    (0) Вы рубрику не перепутали?

    Один абзац, даже самый последний, можно было как-то попроще написать.

    Reply ↓
  94. vip

    (105) Нет. Пост (22)

    Хотя ты и не мог понять причины появления этой ветки, т.к. симптоматика у вас схожая.

    Reply ↓
  95. Altair777

    (109) И что такого в посте (22)?

    И Артур тоже издевался? Он тоже болен?

    А ты единственный здоровый?

    22. Altair777 07.04.2009 00:51:39

    (16-20) какая содержательная беседа 🙂

    23. artbear 07.04.2009 12:41:55

    (16-20) Что это?? 🙁

    Что курим-то или все-таки пьем?

    Reply ↓

Leave a Comment

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