1С умеет говорить!




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2025-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='\

99 Comments

  1. JohnyDeath

    У тебя проигрывается звук, используя внешнее приложение.

    Как аналог от АЛьФа: http://www.1cpp.ru/docum/html/FormEx.html#play

    Без доп. программ, но с доп. компонентой. 😉

    Reply
  2. O-Planet

    Ага. Дураки мыслят одинаково. 🙂

    Reply
  3. Все это хорошо! Но потом, когда 1Сина будет делать что надо 😉

    Reply
  4. O-Planet

    Я же просил, ПИСАТЬ КТО ПЛЮСАНУЛ РЕЙТИНГ. Кому теперь пароль высылать? И классно: скачиваний 8, а рейтинг 4. Так держать до 1000 скачиваний! Всем +1

    Reply
  5. O-Planet

    А вообще, интересно, кто что думает и мож полезное посоветует. У меня есть пара законченных программ, где эта штука внедрена. Знаете, как классно, когда оператор читает штрихкод сканером, на пример, а программа говорит по-человечьи: «Извините, но товар с таким штрихкодом не обнаружен»

    Reply
  6. Однозначно такой подход полезен.

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

    Reply
  7. O-Planet

    Что-то ЧЕбурашка опять не в тему пишет. Как будто расширение интерфейсных возможностей разработок под 1С, борьба за удобство пользователей — являются признаком «любителей наплевательски относиться к делу».

    Простим же великодушно злого чебурашку.

    Reply
  8. АЛьФ

    Хм… А по-моему намного лучше тогда уж агента присоединить и «говорить» через него. И красиво, и визуально сопровождает сказанное.

    Reply
  9. mdzen

    Ну +1

    Reply
  10. mdzen

    Превратим 1С в медиацентр развлечений! И забьем на учет …

    Reply
  11. defini

    +1 адназначна, а чебур только и делает, что об@#$ет чужие разработки.

    Reply
  12. O-Planet

    Во-во … 🙂

    Reply
  13. alexqc

    > РЕКЛАМНАЯ АКЦИЯ!!!

    > Щелкни рейтинг — получи пароль

    > Разумеется, бесплатно.

    Ну не можем мы без меркантильности. Не за деньги, так хоть за рейтинг.

    Reply
  14. O-Planet

    Не можем 🙁

    Кстати, уже два пароля отослал…

    Reply
  15. Бракозябра

    Агент надоедает, лучше просто голосовой движок поставить.

    Reply
  16. Bond008

    Можно и мне пароль? (Рейтинг нажал)

    Reply
  17. O-Planet

    Можно.

    > Агент надоедает, лучше просто голосовой движок поставить.

    Это кому как.

    Reply
  18. Shagan

    Оставляю комент, что щелкнул 🙂

    Reply
  19. Martyn

    Привет

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

    +1

    Reply
  20. ystet

    Щёлкнул :)))))

    Reply
  21. O-Planet

    А-а-а-а-ааааа!!!

    Спа-си-б-ААААААА!!!

    Reply
  22. OlegTor

    Юзвери люди нервные (бухгалтера и подавно), а тут на них 1С человеческим голосом как рявкнет что-нибудь.

    Психику людей жалко. Они и так кнопочки нажимать боятся, а тут возьмут и поувольняются все.

    1С вещь серьезная, и мультимедийное приложение из нее делать не стоит.

    В общем, все хорошо в меру.

    Ладно, рейтинг плюсую (+1) Шли пароль.

    Прикольно все-таки.

    Reply
  23. O-Planet

    Шлю…

    Reply
  24. а теперь ещё обоснуйте руководству приобретение звуковых плат на всю вашу контору

    Reply
  25. Злобный Фей

    Ужос. Осталось написать компоненту на opengl, генерирующую трехмерную дулю при невозможности проведения документа.

    ЗЫ: Щелкать не буду, пароль не надо

    Reply
  26. Уговорил…….

    Reply
  27. Начинающий

    +1

    Reply
  28. Консольная Говорилка, только консольная Говорушка, еще какие-то… не помню, умеющие читать текст из командной сроки (читай: буфера) и из файла известны достаточно давно.

    Фокус не в возможности «говорить», фокус — как заставить молчать. Я не про «галку», оключающую опцию…

    Reply
  29. O-Planet

    > Фокус не в возможности «говорить», фокус — как заставить молчать.

    А пистолет на что?

    Reply
  30. O-Planet

    Кто опять кликнул (+2), а коммент не оставил? Мне кому пароли слать? (Или ужо сломали пароль 🙂 )

    Reply
  31. TimA

    Хотелось бы иногда что-то сказать юзеру через программу, а то уже достало к ним бегать: «я, ведь говорил, что так ничего не получится…. и т.п.»

    Reply
  32. Shulzen-Boizen

    +1

    Reply
  33. Termokrator

    +1. Шли пароль.

    Reply
  34. O-Planet

    Выслал еще 3. Понимаю так, что TimA тоже +1 …

    Reply
  35. karat60

    Приподнял ;))

    Reply
  36. vladis_05

    Клево! Поставлю своим девкам в бухгалтерию. Пусть поприкалываются…

    Reply
  37. vladis_05

    Так что рейтинг +1

    Reply
  38. O-Planet

    Ну я ж не телепат! Кто-то за время моего отсутствия еще на 5 пунктов поднял. А ХТО — не сказал…

    Reply
  39. CheBurator

    Дайте ссылку на говорилку: типа подсунул ей текст «заявку 2534 готова к отгрузке» — чтоб ее проигрывала! (не наезжат! самому — искать лень 😉

    Reply
  40. vladp

    Я из тех кто поднял рейтинг, а коммент не оставил. Прошу пароль.

    Reply
  41. 1111111

    Reply
  42. вик

    щелкнул, гут

    Reply
  43. Edo

    1С умеет говорить! надо попробовать, Userы будут в ужасе:)

    Reply
  44. refleks

    Спасибо, щелкнул 🙂

    Reply
  45. скачал прошу пароль

    а как проговаривать текстовые файлы ?

    Reply
  46. O-Planet

    > скачал прошу пароль

    Регишься, кликаешь плюс и пароль получаешь!

    Reply
  47. jaxon

    Рейтинг щелкнул.прошу пароль.

    Reply
  48. jaxon

    блин,уже два раза плюсанул,а пароля все нет…

    Reply
  49. O-Planet

    Ну, не было меня ок. двух недель на сайте. Пордон!!!

    Кстати, а как это ты плюсанул дважды???

    Reply
  50. jaxon

    я уже понял,что только раз получилось плюсануть:) но нажал-то два раза:)

    Reply
  51. Purup

    +

    Жду пароль

    Reply
  52. djeia

    +

    🙂

    Reply
  53. cutlet

    +1

    Reply
  54. svech_ka

    +1

    Reply
  55. timofeih

    Жду пароль

    Reply
  56. Нормально

    Reply
  57. > скачал прошу пароль

    Reply
  58. PaHa

    +1

    Reply
  59. O-Planet

    Самое интересное, что Gfdtk и Paha — это одно и то же лицо!

    Всем все выслал 100 раз!!!

    Reply
  60. O-Planet

    А вот Диаша — это Дина или Даша?

    Reply
  61. coch

    Давно у меня было желание сделать такую фичу из-за адвЕнснутых юзеров (у них как раз и колонки имеются, в отличии от остальных). Эх, совсем лень заела.

    Па любому лучшая разработка за последнее время.

    +1

    Reply
  62. recommend

    +1 пароль

    Reply
  63. trufela

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

    +1

    Reply
  64. Shoorik

    Клёвая доработка!!!

    Reply
  65. Shoorik

    +1

    Reply
  66. trufela

    +1

    Reply
  67. O-Planet

    Все всем выслал. Извиняюсь за задержки с ответом. Много работы.

    Reply
  68. Александр

    теперь пользователи у мя попляшут…:)

    Reply
  69. v.l.

    Инцересно-инцересно…. 43+…. за 2 месяца….. Аль стока у нас экспЭртов?

    И в комменте за 30.08.06 автор Че Буратор почему-то без ссылки…. Знач незарегистрированный пользователь подставил ЧеБурашу, а вы на Че наехали? Да ещё и некрасивыми буквами на него… (там же, 30.08.06). Ай-яй-яй.

    А теперя бут 44+.

    от меня +1

    Reply
  70. O-Planet

    > Че Буратор почему-то без ссылки

    Да он вооще очень странный!

    > Да ещё и некрасивыми буквами на него

    Точно! И чо нельзя ижицу использовать? А если серьезно, то траву где брал? 🙂

    Reply
  71. O-Planet

    О КАК!

    Залез в профель trufela. Смотрю — Сообщений — 0!!! А их токо здесь 2. Невиди-и-и-имка!!!!!!!!

    Reply
  72. +1

    Reply
  73. O-Planet

    ?? А ты зарегился?

    Reply
  74. pr_kristar

    +1

    Reply
  75. vasilykushnir

    +1 Посмотрим, попугаем, взбодрим….

    Reply
  76. O-Planet

    Василий! Мог бы не ставить +1, а просто написать 🙂

    Reply
  77. CheBurator

    В комменте от 30.08 — я писал, правда чего на меня наехали — я не понял. говорилку вообще-то сделать правильно — особенно если есть открытая 1сина и активность юзера на компе отсутсвует более 2-х минут надо так прооорать (сирену) чтоб все понялди — уходя от компа более чем на 1 мин — выйди из 1с!!!

    Reply
  78. CheBurator

    лучше Альф выложил бы инструкцию как это на агентеах сделать, чтоб лишнего не городить…

    Reply
  79. juliasoft

    +1

    Reply
  80. Sapozhnik

    +1

    Reply
  81. mobiman

    +1 🙂

    Reply
  82. Бородач

    Класс!!! Наверное самый большой рейтинг?

    Reply
  83. O-Planet

    Нет пока, но… 😉

    Reply
  84. Kapitan911

    +1

    Reply
  85. BISON

    Я очень сильно щелкнул!!!

    Reply
  86. O-Planet

    Да пожалуйста!

    Впрочем, это твое сообщение говорит только о твоей недальновидности. Успешность развития портала напрямую связана с успехом и востребованностью авторов, публикуемых на нем. Когда мы с Чебуратором искуственно подогреваем интерес к нашим работам, то мы тем самым повышаем рейтинг и всего Инфостарта и, в частности, твой, как маленькой его части. Мы тратим на это свое время, придумываем и реализуем пиар-идеи. Если это как-то нарушает правила работы на портале, то пусть администрация банит.

    Но обрати внимание, что рейтинг работы, на которую ты ссылаешься, растет вне зависимости от обещания чего-то. Потом, программы «Кассирочка» и «Документооборот» поднялись только за три дня бесплатного распространения в два раза, с 20 до 40. И это было для меня большим сюрпризом. Фактически, наша фирма подарила пользователям Инфостарта за праздники софта более, чем на 300 тыс. Не имея иной возможности нас отблагодарить, люди кликали рейтинг.

    Reply
  87. O-Planet

    Программист, который только умеет что-то программить, вряд ли даст сегодня добьется больших успехов. Возможно, кого-то устраивает положение вещей, когда автор и исполнитель идей остается в тени, получая крохи от большого пирога, который с успехом уплетает толстый, улыбчивый дядя, ловко продающий чужой труд. Меня это не устраивает, поэтому, я стараюсь сделать свои разработки известными и популярными на рынке. Желаю этого и всем своим коллегам.

    Reply
  88. bloodk

    Прикольная штучка, давай по больше таких разработочек, надо ещё видео злобного админа добавить 8)))

    Reply
  89. Abadonna

    >Но один момент: работает только под ХР, потому что требует медиаплейер 9 (точнее, его библиотеки)

    O-Planet, ты мне друг, но истина дороже! 😉

    WinAPI WaveInOpen — работает под любой платформой (открывает доступ к микрофону)

    WinAPI PlaySound — работает под любой платформой (проигрывание звука)

    Итого: максимум 15 строчек программного кода под любые винды

    Reply
  90. O-Planet

    Я ж разве против! Понимаешь, есть масса вкусных и питательных шоколадок. Наверняка!!! Но я, подходя к киоску, ищу глазами вредный Сникерс. Не знаю, почему. Мож, реклама? Да вроде я не падкий. Вон пиво вообще не пью, хоть его и рекламят. Просто сникерс сьел — и порядок 🙂 , а что-то другое — это еще нвадор пробовать…

    Reply
  91. Algrin

    Интересная разработка, нестандартное предложение.

    Reply
  92. vasilykushnir

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

    Reply
  93. anlap

    прикольно но к этому собственно все и шло…

    Reply
  94. O-Planet

    Ну вы, блин!.. Не знаю. Возможно и нет.

    Reply
  95. hiv

    Нууууууу +!!!

    Reply
  96. polonium210

    fff

    Reply
  97. O-Planet

    Ты клаву тестил?

    Reply
  98. AhtungG

    (5) «Извините, но товар с таким штрихкодом не обнаружен»

    заколебает быстро .. 17 слогов

    «штрИхкОд нЕ нАйдЕн» — терпимо будет.

    Reply
  99. ZLENKO

    (8) http://www.infostart.ru/public/58213/

    вот чисто голосовой движок используется

    Reply

Leave a Comment

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