Мобильный корпоративный мессенджер (или чем мы занимаемся в свободное время)




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

69 Comments

  1. gradi

    Ребята, однозначно плюс за ваш проект! Будет интересно посмотреть за его развитием.

    P.S. может мне про свой статью написать?

    Reply ↓
  2. VKuser253241859

    Ура! Наконец то убийца Телеграмма;)

    Reply ↓
  3. SaschaL

    Ребята отличная идея, желаю вашему проекту успехов. Вещь на самом деле нужная и полезная

    Reply ↓
  4. nomadon

    1. Гдя взяли свободное время на работе, начальник знает?)

    2. У вас уже был лицензионный договор или только собираетесь его заключить?

    Reply ↓
  5. PloAl

    Плюс поставил, но насчет «первого» я бы поспорил 🙂

    Reply ↓
  6. VKuser253241859

    Кажись и правда повлияли:) «Дуров объяснил сбои в работе Telegram ростом трафика» http://www.interfax.ru/world/592386 (2)

    (2)

    Reply ↓
  7. starik-2005

    (4) Начальник как раз один из авторов идеи. Свободное время на проект — это одно из преимуществ нашей компании.

    По поводу лицензии, то если речь о роскомнадзоре, то пока нет. Если 1С, то они вроде не против, если штука бесплатная.

    Reply ↓
  8. Сурикат

    А серверная часть у вас на чем?

    Ей вы поделиться можете? =)

    Reply ↓
  9. starik-2005

    (8) ну понятно, что тоже пока на 1С. Но тут как раз с лицензиями трудности, поэтому скорее всего будем переделывать на java.

    Reply ↓
  10. Dzenn

    Один вопрос — зачем? Нужна интеграция с телеграмом — есть решения.

    Reply ↓
  11. starik-2005

    (10) так написал же — для исследования мобильной платформы, для погружения в мобильную разработку, …

    Reply ↓
  12. VKuser253241859

    А зачем компаниям-то свой мессенджер? За своими сотрудниками следить что ли?))) Для Франча это тема)))

    Reply ↓
  13. starik-2005

    (12)

    Для Франча это тема)))

    Как вариант))) Но мы планируем туда воткнуть канбан, чтобы можно было легко и просто по задачам отчитываться и получать новые. В перспективе это может стать драйвером повышения производительности труда для удаленных сотрудников.

    Reply ↓
  14. Hoper2018

    А корпоративность в чем выражается? Можно будет внутри организации развернуть? А связать с текущим решением на 1с можно?

    Reply ↓
  15. nomadon

    (7) вроде? есть какие-то обновления?

    Нужно иметь лицензии на мобильную платформу, внести первоначальный взнос, который включает в себя N бесплатных скачиваний, а потом каждые N еще какая то сумма

    Reply ↓
  16. VKuser253241859

    (7) А где качнуть то? если бесплатно…

    Reply ↓
  17. acsent

    Из мобильной платформы используется только поле для отображения хтмл?

    PS: залейте картинки поменьше, а то разрешени мобилок поболее десктопов бывает

    Reply ↓
  18. starik-2005

    (16) из магазина приложений (в конце статьи ссылка). Вот лендинг в конструкторе сайтов сделали, так что можно и оттуда…

    Reply ↓
  19. starik-2005

    (17)

    Из мобильной платформы используется только поле для отображения хтмл?

    Нет, не только, но для чата — да, хтмл.

    Картинки тут как-то сами умели уменьшатся, но видимо Инфостарт что-то «поправил» с тех пор (или они на ширину смотрят). Руки дойдут — поправлю )))

    Reply ↓
  20. 1C_lava

    (15) Денис, спасибо что напомнили про лицензионность. Но правила не совсем такие. Если разработчик никак не монетизирует приложение, в 1С ничего платить не нужно. Если зарабатывает — роялти в 1с составляет 10% от оборота. Выплачиваются начиная с 60 001-го заработанного на приложении рубля. Тут есть про это: https://www.youtube.com/watch?v=CCKwCpSgFpw

    Reply ↓
  21. 1C_lava

    (9) Какие трудности с лицензированием?

    Reply ↓
  22. VKuser253241859

    (21) Видимо на каждого мобильного пользователя нужно покупать серверную лицензию 1Ски))) Вот и дешевле сервак переписать под Java.

    Reply ↓
  23. karimov_m

    Однозначно плюс!

    1. Хочется подробностей реализации серверной части.

    2. Пришло все же понимание, что для решения таких задач — и сервер 1С и клиентские инструменты — не очень подходят (на текущем этапе развития мобильной платформы 1с) или все гладко у вас вышло?

    Reply ↓
  24. neikist

    А действительно с js проблем нет? Для одного проекта реализовывал похожим образом общение по документам — на 8.3.9.74 по крайней мере у меня было море проблем, к сожалению детали даже и не вспомню уже. В итоге весь интерактив пришлось на 1с делать, а html только для отображения.

    Reply ↓
  25. 1C_lava

    (22) Зачем? Для бэкофисной части? Так делайте автономное.

    Reply ↓
  26. starik-2005

    (25) ну по всей видимости для того, чтобы мессенджер работал, разные клиенты должны быть подключены к единой серверной части, у которой они периодически должны спрашивать, а нет ли там чего нового для них. Как сделать это автономно (это вообще как(? Где хранить список юзеров мессенджера? Ну и т.д. и т.п….

    Это, кстати, ответ и по строению серверной части — БД с кучей веб-сервисов, отвечающая на запросы клиентов…

    Reply ↓
  27. CSiER

    (11) в мобильную разработку под 1С или вообще — то есть рассматривали ли другие фреймворки (PhoneGap и т.п.)?

    Reply ↓
  28. AlX0id

    (13)

    Для этого есть уже существующие работающие решения типа редмайна, битрикса и тп.

    Reply ↓
  29. VKuser253241859

    А Pasha D в переписке на картинке — это вы специально сделали… чтобы Дурову обидно было?)))

    Reply ↓
  30. sansys

    Статья хорошая, однозначно плюс. Очень хочется увидеть реализацию с канбан, для нас это актуально.

    Reply ↓
  31. rusinfostart

    Как будет происходить лицензирование клиентов? также как платформы?

    Reply ↓
  32. sandybaev

    Есть же уже сервер взаимодействия. Почему его не использовали?

    Reply ↓
  33. johnnyshut23

    Ребята, Вам плюс! спасибо за статью)

    Reply ↓
  34. koks17v

    Исходники бы посмотреть…

    Reply ↓
  35. palsergeich

    (32) Сервер взаимодействия не может же с мобильным приложением общаться, поправьте меня если это не так. Во вторых требования по версии платформы.

    Reply ↓
  36. VKuser253241859

    Скачал… а оно работает вообще? Как тут общаться? А главное с кем? Как добавлять друзей? По номеру телефона не получается(((

    Reply ↓
  37. Aitbay

    тоже есть желание написать софтину для персонала чтобы отправлять им события СКУДа, расчетные листки из ЗУПа все руки не дойдут

    Reply ↓
  38. Xershi

    (20) в видео написано в слайде, если есть монетизация после 51 продажи

    Reply ↓
  39. Xershi

    Есть задача обмена сообщениями двух клиентов мобильных как минимум по локальной сети.

    Это реализовано на 1С или скрипты/компоненты?

    Reply ↓
  40. leobrn

    установили на два телефона (nexus5,meizu m6). На втором устройстве со второго раза получилось зарегаться. Пуш уведомления не приходят. Сообщение приходят с задержкой 3-5 мин.

    Upd: со второй попытки пуши заработали, сообщение пришли быстрее.

    Reply ↓
  41. 1C_lava

    (38) Вы правы, на слайде слегка однобоко. Если монетизация, скажем, через рекламу, или подписку, там не целесообразно к кол-ву продаж привязываться. Для таких случаев — к сумме.

    Reply ↓
  42. VKuser253241859

    (40)

    Upd: со второй попытки пуши заработали, сообщение пришли быстрее.

    У меня также чем больше сообщений, тем они ходят быстрее.

    Еще просьба сделать одну Общую группу, например Feedback, чтобы все новички туда автоматом попадали и с друг другом общались. Надо же провести нагрузочное тестирование;)

    Reply ↓
  43. Xershi

    (41) вы уже заключили договор? Или где про это написано?

    Reply ↓
  44. Dementor

    (27)

    то есть рассматривали ли другие фреймворки (PhoneGap и т.п.)?

    Не выражайтесь в приличном обществе! 🙂

    1) PhoneGap — это редкостная хрень. Попробуйте сделать на нем что-нибудь существенное и вы поймете о чем я — сплошные ограничения и тормоза. Если не осилили Java/Kotlin или Objective-C/Swift, то лучше делайте сайтик с адаптивной версткой на HTML5 (который потом легко встраивается).

    2) Не занимаюсь гибридами, но видел отзывы в интернете, что Google и Apple не любят такие приложения и могут отказывать в публикациях на своих площадках.

    Reply ↓
  45. 1C_lava

    (43) Не поняла Вам вопрос. Я из 1С и занимаюсь именно продвижением и монетизацией мобильных. Заключаю такие договоры с разработчикам.

    Reply ↓
  46. Xershi

    (45) а вы та девушка которая на видео?)

    Reply ↓
  47. palsergeich

    Я тоже реализовывал корпоративный чат на пушах, полет нормальный.

    Дизайн дернули от вотсапа, веберы сверстали макет и скрипты, мы поместили его на поле HTML документа.

    Именно тогда оценил как здорово иметь возможность вызвать с сервера клиент.

    Reply ↓
  48. CSiER

    (44), phonegap пробовал довольно давно, а вот на 1с подобным не занимался — поэтому и решил уточнить. Спасибо за инфо.

    Reply ↓
  49. 1C_lava

    (46) Да

    Reply ↓
  50. YanTsys

    (10) Телеграм не вечен…

    Reply ↓
  51. Xershi

    (47) общение клиентов как реализовано? Чисто на 1С?

    Reply ↓
  52. starik-2005

    (42) Сделали группу Feedback и решили в следующем релизе бета-версии добавить блок управление задачами и внутреннюю систему мотивации за выполнение этих задач. Всем кто принимает активное участие в тестировании корп мессенджера начислим по 100 баллов (баллы — наше все!);)

    Reply ↓
  53. bubus

    Граждане, дайте ссылку или напишите мануальчик на Инфостарте уже как с пушами работать. Вам уйма народу будет признательна.

    Reply ↓
  54. saa@kuzov.org
    Сейчас основной функционал чата использует HTML и JS, т.к. пока мобильная платформа не может обеспечить достаточную гибкость отображения данных

    Цены бы приложению не было, размести вы исходники хотя бы для имеющих подписку на ИТС.

    Очень хочется просто красивый работающий пример ( с JS)

    Reply ↓
  55. PloAl

    Как долго живет клиентская часть и соединение с сервером, на adroid 7.0 и выше?

    Отказался от использования ВК в МП именно по этой причине, андроид 7.0 очень быстро отправляет приложение в глубокий сон с разрывом соединения.

    Reply ↓
  56. VKuser253241859

    Результат теста на последних Самсунгах между двумя пользователями:

    1. передача сообщений — 1-2 сек (не очень… Телеграм быстрее).

    2. запуск приложения — до 10 сек (очень медленно, хотя вес приложения 10 метров)

    3. активация приложения — 2 сек (приемлемо)

    4. при разрыве соединения куча не совсем адекватных системных сообщений (видимо платформенные фичи не совсем понятные простому юзеру).

    Reply ↓
  57. bubus

    (47)Тоже на 1С?

    Reply ↓
  58. Fator26

    Первая неприятность: при регистрации строка ввода логина не настроено так, что при ее выделении курсор попал на начало строки.

    Второе: если телефон заблокировать, то начинается дикий спам об отсутствии связи, уведомлений хоть и нет, но спустя минут 10 достал телефон и появилось на нем 30+ сообщений о проблеме с сетью

    Но в целом достойно

    Reply ↓
  59. iliabvf

    Исходников приложения нет, (типично для 1С), статья не информативная. HTML + JS… нафига тогда нужна мобильная платформа? не ну понятно что она кривая, но не лучше уже сделать клиента на Android?

    Reply ↓
  60. starik-2005

    (59) так статья о самой программке, как попытке разобраться, что можно, а что нельзя реализовать на базе мобильной платформы. Исходники беты пока не выкладываем, т.к. будем еще много чего там делать. Скачать можно в магазине приложений — в конце есть ссылки, также в комментариях есть ссылка на лендинг.

    По поводу того, что диалоги пришлось реализовать на базе HTML, то это скорее претензия не к 1С — у них просто нет соответствующих объектов, а к хотелкам пользователей. Ну нереально ни в чем другом нормально реализовать список сообщений с ролевым выделением (юзер — другой юзер).

    Reply ↓
  61. starik-2005

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

    Reply ↓
  62. Sera

    Крайне интересная разработка!

    Reply ↓
  63. it@contlog.ru

    Есть интерес к *.cf файлу к реализации, к apk пока интереса нет. В любом случае молодцы.

    Reply ↓
  64. johnnyshut23

    (2) поддерживаю)))

    Reply ↓
  65. V1V

    Выложи конфигурацию. Больше интереса будет. К чему смотреть на apk?

    Reply ↓
  66. starik-2005

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

    Reply ↓
  67. V1V

    (66) серверная часть не представляет особого интереса. И так можно понять что там. А вот мобильное приложении могло бы помочь в изучении темы.

    Reply ↓
  68. vashkostya

    Можно apk?

    Reply ↓
  69. starik-2005

    (68) он был на гуглплэй. Если нет, то мне его сейчас уже не взять нигде…

    Reply ↓

Leave a Comment

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