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




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

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