Вывод текста в окно сообщений (Теперь и для 8.2 !!!)




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

98 Comments

  1. andrewalexk

    :))

    Reply
  2. int18h

    ААААА Жесть! За юмор +

    Reply
  3. Re:аниматор

    а смысл данной обработки? подробности внутри обработки не увидел

    Reply
  4. Re:аниматор

    (3) ясно) шутка

    Reply
  5. Abadonna

    :)))))))))))

    По ходу одновременно ваяли, но ты круче — у меня только код, а у тебя еще и форма;)

    Reply
  6. Ёпрст

    (3) А разве, вы для себя не узнали что-то нового?

    Reply
  7. miandrew

    ааа, жесть 🙂

    Reply
  8. _also

    Супер! И это без использования ВК?

    Reply
  9. Ёпрст

    (8) пока да.. возможно, перехватим событие попозже, например ВК от Orevkov-ва

    Reply
  10. _also

    (9) А какое событие перехватывать будешь?

    Reply
  11. Ёпрст

    (10) Пока не определился, но дляначала, перехват вывода в окно сообщений.

    Reply
  12. _also

    Ждем обновлений!!!

    Reply
  13. _also

    (12) А реально реализовать вывод многострочного текста. Очень надо)

    Reply
  14. MRAK

    круто. но было бы замечательно увидеть точно такую же на 8-ке. очень нужная вещь. тогда бы автору цены не было…

    Reply
  15. Ёпрст

    (13) вывод куда ? в окно сообщений ?

    Так он и так есть..

    Reply
  16. Ёпрст

    (14)попозжее реализуем.

    Reply
  17. _also

    (16) Оно в окно сообщений выводится в одну строку. Блин,а мне надо чтобы в разные строчки. Это наверно нереально ведь без внешней компоненты. Черт 🙂

    Reply
  18. MRAK

    (13), (15). действительно, не разобрался с обработкой, а уже кричишь «программа плохая»!

    обработка замечательная, в ней есть ВСЕ!

    (только «Предупреждения», действительно иногда не хватает(((( )

    Reply
  19. Ёпрст

    (17) Да ладно ?

    Выводит как есть, т.е с разделителем строк.. попробуй!

    Reply
  20. Ёпрст

    +19 могу скриншот кинуть

    Reply
  21. Ёпрст

    +20 смотри на описание

    Reply
  22. Душелов

    Немного конструктива, а то требуют…

    Надо добавить возмодно вывода текста в окно сообщений из файла, из буфера.

    Так же добавить звуковой сигнал при отправке! Так что есть, к чему стремиться!

    Reply
  23. Ёпрст

    (22) Я записываю пожелания..

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

    Reply
  24. _also

    (19) А ну да. Просто ентер надо нажимать. Все продал разработку клиенту за 5000 уе. Автор спасибо)

    Reply
  25. Abadonna

    Как будет работать в паре с формекс?

    Совместимо?

    Reply
  26. _also

    (23) Уже купили. Пришли клиенты говорят: А можно вводить текст многострочный и чтоб он так хоп..и снизу появлялся. Я 2 недели мучался, читал СП и ЖКК, но не смог написать. А тут захожу и на тебе готовая. Супер!!!

    Reply
  27. Ёпрст

    (25) еще бы!

    Осталось только встроить в готовую конфигурацию, оформить в виде коробочного решения и начинать зарабатывать деньги.

    Reply
  28. Душелов

    А для 8-ки можно такую версию? Уж очень обработка понравилась!

    Reply
  29. MRAK

    (27) не забудь КЗК заюзать… а то веть… вон оно как могет… получиться-то… вот…

    Reply
  30. MRAK

    (28) я уже просил. вроде обещает попозже портировать

    Reply
  31. Ёпрст

    (29) Слишком много кода, нужно подумать..

    🙂

    Reply
  32. JohnyDeath

    Я что-то пропустил? Введите меня, пожалуйста, в предысторию.

    Не верю, что Ёпрс просто так решил выложить такой шедевр! 😉

    Reply
  33. Ёпрст

    (32) начало тут:

    http://infostart.ru/projects/4266/

    Reply
  34. JohnyDeath

    (33) понял )))

    Но та обработка покруче — там картинка красивая на форме

    Reply
  35. Ёпрст

    (34) В коммерческом решении, возможно, вставлю тётку покрасившее…

    Reply
  36. Душелов

    (35) Для коммерческого решения посоветовал бы вывести ключевые процедуры в ВК!

    Reply
  37. Душелов

    Да, а разрешишь fixin’у добавить к себе в бибилиотеку фунций?

    Reply
  38. Ёпрст

    (36) Надо подумать, что лучше — вынос в ВК или обсфу?кация кода или тупо кзк закрыть…

    Reply
  39. Ёпрст

    (37) Я думаю, он сам сплагиатит.. вредитель.

    А то и кричать будет — «Ёпрст украл мою идею!» ..

    Reply
  40. CheBurator

    Блин, чуть мозг не сорвало….

    Надо добавить возможность вывода в окно сообщений конкретного сеанса 1ски…

    Reply
  41. Abadonna

    (38)>вынос в ВК или обсфу?кация кода

    1. Пишешь ВК по перехвату сообщения

    2. в ВК:

    App1C := OleVariant(pConnection).AppDispatch;

    App1C._AddRef;

    OleVariant(App1C).ExecuteBatch(‘Сообщить(НашТекст)’);

    Reply
  42. Ёпрст

    (41) это как то слишком просто 🙂

    Reply
  43. vip

    — Я в восхищении! — завывал Бегемот (с)

    Reply
  44. Ёпрст

    (43)Посмотри, сколько скачиваний — вещь реально полезная и нужная…!

    Reply
  45. vip

    (44) Дык, а кто спорит?

    Сам скачал и положил в каталог THE_BEST

    Вот чем мне нравится тов. Ёпрст, так это свежестью подхода к привычным проблемам. Код, правда, слегка сложноват для непрофессионала.

    Кстати у меня есть дружбан латыш, Андрис Ёкст.

    Угадай с трех раз, как я его называю?

    Reply
  46. Ёпрст

    (45) неужели Ёпрст ?

    Reply
  47. WiseSnake

    Мдя… идеи fixin`а заразительны и уже нравятся народу! Отлично! Каждый должен внести свой вклад для превращения ИС в помойку!

    P.S. Что то у меня с чувством юмора совсем плохо…

    Reply
  48. Ёпрст

    (47) ты просто не догоняешь …

    Reply
  49. WiseSnake

    (48) Это да, я же пешком…

    Reply
  50. O-Planet

    Срочно нужно на главную выводить, поэтому плюсуем!

    Но автор явно упустил один мегаважный момент, за который чуть минус не влепил. Так и быть, консультирую бесплатно по основам пиара. Название — плохое (х…е, точнее говоря). Ну что это за «Вывод текста в окно сообщений v7.7″… Должно называться «ExWriter 7.7 v 1.0 Pro» Это уже будет весЧЬ! Оформление — тоже не ахти. До коробки исчо далеко, короче.

    Reply
  51. vip

    (46) А разве есть другие варианты? ;))))

    (47) В помойку ИС превращают (превратили) не Ёпрсты, а те, кто выкладывает подобные разработки на полном серьезе.

    Только не надо про то, что и начинающим надо тренироваться и самовыражаться.

    Пусть дома тренируются на кошках.

    Reply
  52. vip

    (50) Международный смертельный летучий ExWriter 7.7 v 1.0 Pro имени пролетарского гнева.

    Reply
  53. vip

    (52+) Лауреат нескольких премий (квартальных) и т.д.

    Reply
  54. Ёпрст

    (50) Не..так потом по поиску не найдут.

    Лучше попроще, или тогда уж, что-то совсем запоминающееся…

    А про оформления до коробочного решения, ну это пока так, проба пера.

    Reply
  55. Ёпрст

    В принципе, если кто-то будет выкладывать мегавелосипед из 3-х строк, сразу редирект на эту обработку для обучения…

    Reply
  56. O-Planet

    Кстати, если серьезно, то решение может стать вполне коммерческим и восстребованным, если его доработать. Пусть выводится сообщение в окнах сообщений у всех пользователей сразу. Уверен, взлетит, потому как 1) простое 2) понятное 3) удобное 4) нужное

    Reply
  57. WiseSnake

    Не знаю кто перевел обработку в раздел life, но теперь для таких тупых как я (ну и еще кто первый раз попал на инфостарт) понятно что это шутка. Теперь еще бы отбор сделать Доржи, чтобы исключать подобные вещи.

    (51) Ну это Ваше личное мнение. Я например из того что выкладывал fixin и то что МИНУСОВАЛИ, пригодилось!

    P.S. Убираю минус…

    Reply
  58. Ish_2

    (56) Фраза «если серьезно» — лишняя.

    Reply
  59. WiseSnake

    (56) Не взлетит, потому что в это окно выводится еще много всякой системной белеберды, для сообщений нужно отдельное окно…

    Reply
  60. vip

    (58) А почему исключать?

    Эта обработка пожалуй будет покруче очень многих, выложенных на ИС.

    В части профессионального исполнения.

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

    Уверен, для многих эти вещи являются откровением.

    п. 2

    Вижу ниже своего мнения плюсики.

    Значит оно уже не личное, а общественное.

    Reply
  61. O-Planet

    (59) Это ж как нужно мучать 1С, чтобы выводилась вякая системная билеберда в больших количествах! Нет, сообщение: «Все — в актовый зал!», думаю, ни кто не проморгает. В окно сообщений как раз-таки почти ничего не выводится, если все нормально.

    Reply
  62. O-Planet

    … а вообще, этот топик нуна рассматривать, как тихий бунт ))

    Reply
  63. Свой

    А почему звездочка с оценкой разработки отличается по цвету от других разработок ?

    Reply
  64. Ёпрст

    (63) смотри форум … там обсуждение этого вопроса..и про разный цвет звёздочек и про Life

    Reply
  65. Душелов

    С разрешения автора воспользовался его идей и сделал для 8.1 http://dushelov.ru/temp/message.zip , ну и скриншотик приложил http://dushelov.ru/temp/message.jpg

    Ну и добавил еще конекстное меню к полю сообщений.

    Ёпрст, включи в свою разработку эту обработку.

    Reply
  66. WiseSnake

    (60)

    Потому что я восновном использую ИС для работы, это мое ИМХО.

    п.2 А я тоже отчасти с Вами согласен, но думаю что эти люди не совсем объективны. Ведь каждый из них относит определенный список обработок к «отстою», только, боюсь, у каждого этот список свой и они отличаются

    Для примера возьмем Ish_2 он плюсует Вам, но в тоже время и плюсует разработки, которые представляют из себя полный отстой!!!, тем самым поддерживая и их…

    ИМХО

    Reply
  67. vip

    (61) Пральна.

    Окно сообщений использую только сам для отладки.

    И при входе и выходе в 1С принудительно его закрываю.

    Многие юзеры его пугаются, называют «ото белое».

    И не все знают, что массовый вывод в окно сообщений жрет ресурсы немерянно.

    Reply
  68. Abadonna

    (65) Стоп! А Microsoft .NET Framework 2.0 ставить надо?

    Reply
  69. vip

    (65) О! Процесс пошел…

    А что интересного можно вытянуть из очередного перенумератора?

    Вот это по-нашему!

    Reply
  70. Душелов

    (68) Он нужен, если автор будет использовать компоненту http://infostart.ru/projects/3277/ для вывода сообщений в отдельном окне, как на скриншоте http://infostart.ru/projects/data/0003277/images/large/v8_messages.jpg

    Reply
  71. vip

    (68) Не, ну ты как ребенок…

    2.0 недостаточно, минимум 3.5 (уже анонсирован 4.0)

    Reply
  72. Abadonna

    (66)> массовый вывод в окно сообщений жрет ресурсы немерянно.

    Фигня! Провожу в комплексухе документ Реализация, что там паршивенький вывод о том, что док провелся, по сравнению с тем, какие ресурсы жрет ОбработкаПроведения? Тфу и растереть. Всё познается в сравнении 😉

    Reply
  73. vip

    (70) А я вот, блин, балуны люблю для сообщений.

    Разноцветныя…

    Кстати, создание балуна с нуля задача совсем не тривиальная.

    Reply
  74. vip

    (72) ОбработкаПроведения в комплексухе — это преступление против человечества.

    Reply
  75. Душелов

    (69) Ну еще можно кроме окна сообщение и вопроса еще текст вот так выводить:

    Текст = Новый ТекстовыйДокумент;

    Текст.ДобавитьСтроку(Сообщение);

    СписокСтрок = Новый СписокЗначений;

    Для сч = 1 По Текст.КоличествоСтрок() Цикл

    СписокСтрок.Добавить(Текст.ПолучитьСтроку(сч));

    КонецЦикла;

    СписокСтрок.ВыбратьЭлемент(«Сообщение:»);

    Reply
  76. Душелов

    (0) Автор, а в планах будет вывод текста с строку состояния?

    Reply
  77. Ёпрст

    (76) Что-то слишком много пожеланий 🙂

    Reply
  78. vip

    (76) Многострочного? :))

    Reply
  79. vip

    (77) Дык идея свежа.

    Возбудились трохи.

    Reply
  80. Ish_2

    (67) Есть такое. В (51) не удержался. Виноват.

    Reply
  81. Душелов

    А еще можно текст выводить в окно блокнота!!!!!! Вот, делюсь идеей!

    ВремФайл = ПолучитьИмяВременногоФайла(«.txt»);

    Текст = Новый ТекстовыйДокумент;

    Текст.ДобавитьСтроку(Сообщение);

    Текст.Записать(ВремФайл);

    ЗапуститьПриложение(«notepad.exe » + ВремФайл);

    Reply
  82. vip

    (81) А чтобы с гарантией прочитали

    ЗапуститьПриложение(«start / wait notepad.exe » + ВремФайл);

    Reply
  83. artbear

    Все-таки минусану.

    Может быть, мой единственный минус хоть кого-то отвратит от закачки этой программы.

    ЗЫ да и вообще почему версия для клюшек в 10 с лишним раз тяжелее, чем версия для снеговика.

    Не иначе как засланцы от 1С среди нас — и тут свою восьмерку толкают 🙂

    Reply
  84. Ёпрст

    (82) картинки в виде bmp же хранятся .. вот и весят столько..

    Reply
  85. vip

    (82) Эх…

    Поломал сказку…

    Reply
  86. Ёпрст

    +84 да и не в архиве она..

    Reply
  87. Abadonna

    (79)>Возбудились трохи.

    Знаю я, чего ты возбудился ;)))))))

    Посмотрим, что будет к сотому посту

    Reply
  88. Ёпрст

    Ну… а разве не Пятнично получилось ?

    🙂

    Reply
  89. biv75

    Во разошлись-то )) сразу видно пятница.

    Reply
  90. vip

    По сравнению с унылыми инсинуациями отдельный личностей о «дружелюбном и непринужденном» стиле общения на ИС даже Воскресно.

    Reply
  91. Душелов

    (73) Ну в качестве балуна можно использовать MS Agent’а для вывода сообщений:

    1. Объявляем переменную

    Перем myAgent;

    2. Пишем:

    myAgent = Неопределено;

    myAgent = Новый COMОбъект(«Agent.Control.2»);

    myAgent.Connected = Истина;

    myAgent.Characters.Load(«Merlin»);

    merlin = myAgent.Characters(«Merlin»);

    merlin.Show();

    merlin.Speak(Сообщение);

    Reply
  92. Ёпрст

    (91) Дык агент и в клюшках нормально живёт..

    http://avb1c.narod.ru/?=a26

    Reply
  93. Душелов

    (92) Да я понимаю, это так, в качестве идеи! Бесплатной, при том!

    Reply
  94. Ёпрст

    точнее вот

    http://avb1c.narod.ru/?=a21

    Reply
  95. vip

    Не, не катит.

    Разными цветами нельзя.

    Reply
  96. MrDen

    (0) не любой текст с маркером «err» можно вывести в окно сообщений

    Reply
  97. larisab

    (89) Цитата:

    70.

    Сhe Burashka 22.10.2007 01:47:51

    о, блин.. собралась стая старых лысых дядек…

    традиция однако:)))

    Reply
  98. larisab

    (100) Ему мы бы понравилось

    Reply

Leave a Comment

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