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




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

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