Мобильное приложение 1С: использовать или нет? - выбор за тобой!

25.04.23

Разработка - Мобильная разработка

Разрабатывая на 1С: ERP, столкнулся со сложностями, которые непросто обойти, имея только опыт разработчика 1С. Поэтому уверен, что мой опыт может помочь многим! В связи с этим решил поделиться информацией в данной публикации, чтоб мои коллеги не наступали на грабли, а более эффективно решали свои задачи с работой на 1С:Предприятие.

Скачать исходный код

Наименование Файл Версия Размер
1с мобильное приложение разработка:
.epf 13,33Kb
2
.epf 13,33Kb 2 Скачать

Здравствуйте, уважаемые.

Сразу отмечу, что в данной статье речь пойдет больше про работу с 1С: ERP, но в целом, может подойти для любого решения на базе 1С.

 

Суть проблемы

Итак, я работаю на крупном заводе, у нас развёрнута 1С:ERP, в которой ведётся производственный блок.

Также имеются программы ЗУП и Бухгалтерия 3.0, но уже отдельными информационными базами.

Также имеются сторонние программы а именно SOLVO и PREAKTOR, и ещё несколько менее важных систем.

Зачем я всё так подробно расписываю?  - Дело в том, что производство в частности, и любой более менее крупный проект, он, как правило,  инкапсулирует в себе несколько решений/блоков/систем/информационных баз. Всё это накладывает определенные ограничения и вытекающие из них последствия. Я говорю, в частности, про синхронизацию.

У нас на предприятии производство ведется в блоке SOLVO, и выгрузка из него попадает в 1С:Предприятие.

Обеспечивается она с помощью регламентного задания, которое запускается раз в 5 минут, и забирает данные из SOLVO.

Далее пишет их в ERP. - Данный обмен крайне важен для производственного блока, и его прерывание грозит серьезными последствиями.

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

В связи с чем, данный обмен всегда был под повышенным вниманием, что понятно. 

С моей стороны велась доработка и улучшение блока, чтобы он как можно реже "ломался", но практика показала, что даже при более-менее идеальных условиях прохода данных через обмен, всё равно возникают нештатные ситуации.

О чем речь:

  1. Человеческий фактор
  2. Сбой на стороне ПО
  3. Внешний сбой - падение электричества
  4. Отключение интернета

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

 

Решение

Т.к. физически исправить ситуацию не реально, я решил установить какую-то систему оповещения об ошибках.  Уведомления из 1С или что-то типа того. Т.е. мысль следующая: когда возникает ошибка, - я должен об этом узнать в максимально сжатые сроки. Т.к. "встать" обмен может и ночью.

"Прошерстив" интернет и не особо найдя ответы, я набрёл на методы решения в виде интеграторов ботов от Watsapp и Telegram.  - это пожалуй ближе всего подходило к моей теме, но вскоре я понял, что настраивать эти системы не хочется от слова "совсем".

Все же мне повезло, когда появилась программа MIE (не путать с гладильными системами).

Итак, как она мне помогла и чего я смог добиться.

Во-первых, данное ПО предоставляет ограниченный набор функций, все из них я представлю в коде ниже:

//БАЗОВЫЕ ФУНКИИ *********************************  
//СформироватьNotificationMessage - отправляет письмо на телефон по ключевым параметрам.
//в функции мы указываем кому отрпавяем, что отправляем, и связка по idОганизации и паролю.
///////

//Если пользователь в базе то вернёт дату окончания подписки в виде текста
//иначе вернёт: "client not found" 
//
Функция ВернутьДатуОкончанияПодписки(idОрганизации,idПользователя) Экспорт
	
	ТекстП =СтрШаблон("/PROJ/projMIE/MIE_getClient.php?Org=%1&Client=%2",
	КодирURL(idОрганизации), КодирURL(idПользователя) );							
	Возврат ОтправитьGetЗапрос(ТекстП );
	
КонецФункции

//idОрганизации(20симв.),idПользователя(40симв.),passwordОрганизации(10симв.) - это ключевые параметры.
//НазваниеПисьма - 30симв.
//ТекстПисьма - 60симв.
//ВажностьПисьма: 0-просто сообщение. будет отражаться в программе.
//				   1-важное.  придет как Notification один раз.
//				   2-срочное. придет как Notification до тех пор пока не будет запущенна программа на тел.
//
Процедура СформироватьNotificationMessage(idОрганизации,idПользователя,passwordОрганизации,НазваниеПисьма,ТекстПисьма,ВажностьПисьма)  Экспорт
	
	ТекстП =СтрШаблон("/PROJ/projMIE/MIE_add.php?Name=%1&Text=%2&vaznost=%3&id_org=%4&pass_org=%5&Client=%6",
	КодирURL(НазваниеПисьма),КодирURL(ТекстПисьма), КодирURL(ВажностьПисьма), КодирURL(idОрганизации) , КодирURL(passwordОрганизации) , КодирURL(idПользователя)
	);							
	ОтправитьGetЗапрос(ТекстП);
	
КонецПроцедуры 

//idОрганизации(20симв.),idПользователя(40симв.)- это ключевые параметры.
//ЗаголовокКEvants-30симв.                                                                                                     
//
Процедура ЗаголовокEvents(idОрганизации,idПользователя,ЗаголовокКEvants)  Экспорт 
	ТекстП =СтрШаблон("/PROJ/projMIE/MIE_add5.php?Org=%1&Client=%2&NameZagolovok=%3&var=0",
	КодирURL(idОрганизации), КодирURL(idПользователя), КодирURL(ЗаголовокКEvants) );							
	ОтправитьGetЗапрос(ТекстП);
	
Конецпроцедуры

//idОрганизации(20симв.),idПользователя(40симв.),passwordОрганизации(10симв.) - это ключевые параметры.
//
Процедура ОчиститьEvents(idОрганизации,idПользователя,passwordОрганизации)  Экспорт 
	ТекстП =СтрШаблон("/PROJ/projMIE/MIE_addEventClear.php?id_org=%1&pass_org=%2&Client=%3",
	КодирURL(idОрганизации), КодирURL(passwordОрганизации), КодирURL(idПользователя) );							
	ОтправитьGetЗапрос(ТекстП);
	
Конецпроцедуры

//idОрганизации(20симв.),idПользователя(40симв.),passwordОрганизации(10симв.) - это ключевык параметры.
//НомерСч от 0 до 9. Всего 10 событий
//Название-название События.  (80симв)
//Значение-значение события.   (140симв.)
//
Процедура СформироватьEvents(idОрганизации,idПользователя,passwordОрганизации,НомерСч,Название,Значение) Экспорт	
	ТекстП =СтрШаблон("/PROJ/projMIE/MIE_addEvent.php?id_org=%1&pass_org=%2&Client=%3&Nomer=%4&Name=%5&Zna4=%6",
	КодирURL(idОрганизации), КодирURL(passwordОрганизации), КодирURL(idПользователя), КодирURL(НомерСч) , КодирURL(Название) , КодирURL(Значение)
	);							
	ОтправитьGetЗапрос(ТекстП);
	
Конецпроцедуры

//idОрганизации(20симв.),idПользователя(40симв.),passwordОрганизации(10симв.) - это ключевык параметры.
//ДвоичныеДанныеФайла - ДвоичныеДанные до 2х мег.
//НазваниеФайлаВПриложении (30 симв)   
//Отчёт отправялется в "htm" формате!
//
Процедура ДобавитьОтчет(idОрганизации,idПользователя,passwordОрганизации,ДвоичныеДанныеФайла,НазваниеФайлаВПриложении)
	
	WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
	
	Boundary = "00000000000000";
	ФайлДанных = "uploadedFile.htm";  
	РазделительСтрок = Символ(10)+Символ(13);
	
	Зп = "--" + Boundary + "
	|Content-Disposition: form-data; name=""data""; filename=""" + ФайлДанных + """
	|Content-Type: application/xml;" + РазделительСтрок + РазделительСтрок + "
	|" + ДвоичныеДанныеФайла + РазделительСтрок + "
	|--" + Boundary + "--"; 
	
	
	WinHttp.Open("POST","https://lykurgsoftware.ru/PROJ/projMIE/upload.php", 0);
	WinHttp.SetRequestHeader("Content-Type","multipart/form-data;boundary=" + Boundary);
	WinHttp.SetRequestHeader("Content-Length", СтрДлина(Зп)); 
	WinHttp.SetRequestHeader("NameF",КодирURL(НазваниеФайлаВПриложении));
	WinHttp.SetRequestHeader("Client",КодирURL(idПользователя));
	WinHttp.SetRequestHeader("idOrganization",КодирURL(idОрганизации));
	WinHttp.SetRequestHeader("passOrganization",КодирURL(passwordОрганизации));
	WinHttp.Send(Зп);
	
	Если WinHttp.Status = 200 Тогда
		Рез = WinHttp.ResponseText;  
		Если Рез ="ok"  Тогда Сообщить("Запись прошла успешно"); 
		ИначеЕсли   Рез ="-2"  Тогда Сообщить("Пароль не верный"); 
		ИначеЕсли   Рез ="-3"  Тогда Сообщить("Не верная организация"); 
		ИначеЕсли   Рез ="-4"  Тогда Сообщить("Файл превышает лиммит по объёму"); 
		ИначеЕсли   Рез ="-5"  Тогда Сообщить("Не верный формат файла"); 
		ИначеЕсли   Рез ="-6"  Тогда Сообщить("Возможно не заведён(не верно заведён) пользователь либо организация. Либо это ошибка потока."); 
		ИначеЕсли   Рез ="-20" Тогда Сообщить("Период использования приложения закончился"); 
		Иначе Сообщить("Неизвестная ошибка "+Рез);		  
		КонецЕсли; 
	Иначе сообщить("Проверьте доступ в интернет. "+WinHttp.ResponseText);
	КонецЕсли;
	
КонецПроцедуры



 

Для решения моей основной задачи мне потребовалась всего одна ф-я: СформироватьNotificationMessage

В которую я передал данные из своей системы.

Суть реализации следующая.

1) Устанавливается мобильное приложение на телефон. Например, тут: MIE 

2) Настраивается (достаточно быстро).

3) Проверяется связь 1С- приложение.

4) Из 1С запускается нужная функция.

5) Получаем уведомление в телефон.

И всё. Т.е реализация крайне проста. Суть приложения в том, что на телефон приходит push-уведомление от 1С. Со звуковым сигналом. Также есть возможность вызова "срочных" уведомлений. Т.е. ваш телефон будет названивать до тех пор, пока вы не обратите внимание на проблему.

Итак, моя реализация:

Вот рабочий код из ERP, который использует данный функционал

	
//Оповещение (MIE) ********* 
Разница =(Текущаядата()-ВремяПоследнегоЗадания)/60; 
Если Разница > 10 Тогда  
	РТК_СлужебныйНаСервере.СформироватьNotificationMessage("Завод***","ХорошулинАВ","6655","Задание: РегЗадание_5мин", "Важно! рег задание простаивает уже на: "+строка(Окр(Разница,2))+"мин.",0);
КонецЕсли; 

Если Разница > 30 Тогда
РТК_СлужебныйНаСервере.СформироватьNotificationMessage("Завод***","ХорошулинАВ","6655","Задание: РегЗадание_5мин", "Важно! рег задание простаивает уже на: "+строка(Окр(Разница,2))+"мин.",2); 

КонецЕсли; 
//**********

ЗаголовокEvents("Завод***","ХорошулинАВ","Открытые смены на:"+Строка(Лев(Текущаядата(),10)));

РТК_СлужебныйНаСервере.ОчиститьEvents("Завод***","ХорошулинАВ","6655");  


ТЗ = РТК_СлужебныйНаСервере.ВернутьТЗЗапроса( "ВЫБРАТЬ
    |	evp_СменноеЗадание.Ссылка КАК Смена,
    |	evp_СменноеЗадание.Подразделение КАК Подразделение
    |ИЗ
    |	Документ.evp_СменноеЗадание КАК evp_СменноеЗадание
    |ГДЕ
    |	evp_СменноеЗадание.СостояниеСмены = ЗНАЧЕНИЕ(Перечисление.evp_СостоянияСмены.Открыта)
    |	И evp_СменноеЗадание.Подразделение.Наименование <> ""Отдел снабжения""
    |	И evp_СменноеЗадание.Подразделение.Наименование <> ""Отдел продаж укупорочной продукции""
    |	И evp_СменноеЗадание.Подразделение.Наименование <> ""Производственная площадка"" 
    |	И evp_СменноеЗадание.Подразделение.Наименование <> "" Цех №5""
    |
    |УПОРЯДОЧИТЬ ПО
    |	evp_СменноеЗадание.Дата УБЫВ");
Сч_событий=0;
Для каждого стр Из ТЗ Цикл  Сч_событий=Сч_событий+1;
РТК_СлужебныйНаСервере.СформироватьEvents("Завод***","ХорошулинАВ","6655",Сч_событий,"По подразделению: "+строка(стр.Подразделение),стр.Смена); 
Если Сч_событий>=10 тогда прервать; КонецЕсли;
КонецЦикла;
//**************************************

Т.е. я отлавливаю факт того, что обмен не проходит больше 30 минут!! Для меня это очень важное событие!

Я отправляю сообщение которое приходит мне на телефон. Теперь я всегда в курсе, держу руку на пульсе, так сказать.

Слежу за важными блоками системы практически в реальном времени.

Что еще может эта программа?

Также я использовал функции по переносу данных о "не закрытых сменах".

Так как у нас производство, цеха работают посменно - важно, чтобы смена закрывалась без проблем. Если она не закрыта вовремя - значит, случилась проблема.  Все эти моменты также важны, и их также можно передать из 1С  в телефон. 

Т.е. буквально грузится список всех незакрытых смен, что видно из кода выше. Данные можно анализировать в телефоне с разницей в 5 минут.

Ну и последняя "плюшка", которую я лично не использовал, но которая есть, - это отчёты. Т.е любой отчет в виде табличного документа сохраняется в двоичные данные и вскоре оказывается в мобильном приложении. Думаю, это удобно.

 

Коллеги, всем удачи, всем успехов, будьте бдительны, заботьтесь о своём 1С обеспечении, и будьте в курсе событий, которые происходят в нём. Спасибо за интерес к статье!

 

Тестировалось на версии: 

1С:Предприятие 8.3 (8.3.22.1923)

Конфигурация: 1С:ERP Управление предприятием 
БИТ.ФИНАНС 3.2
Copyright © 2009 - 2018, ООО "БТ". Все права защищены. (2.4.3.137/3.2.20.4) (http://v8.1c.ru/erp/)
Copyright © ООО "1C-Софт", 2004-2018. Все права защищены (http://www.1c.ru)

1с мобильное приложение разработка 1с мобильное приложение push-уведомления для 1С оповещение 1с 1с звуковое оповещение мобильный 1с 1с мобильное приложение 1с мобильный клиент 1с мобильная платформа разработка мобильного приложения на платформе 1с разработка мобильных приложений на 1с предприятие 1с мобильное приложение отчеты MIE

См. также

"Штрихкод-информер" - мобильный ТСД и прайс-чекер в смартфоне

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн. Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

2880 руб.

03.12.2018    55181    139    102    

162

SALE! 25%

Что нам стоит бота построить? Нарисуем - будет жить! Графический конструктор телеграм-ботов/Telegram

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 9900 руб.

27.12.2021    33911    82    159    

178

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для iOS и Android

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Платформа 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный терминал сбора данных для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    92512    521    186    

298

Магазин 15 - приемка товара по штрихкодам или инвентаризация в торговом зале

Логистика, склад и ТМЦ Мобильная разработка Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

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

12950 руб.

30.05.2023    3485    2    0    

4

Работа с графикой в браузере (SimpleWEB). Векторный редактор

Мобильная разработка WEB-интеграция Мобильная платформа Абонемент ($m)

В SimpleWEB добавились средства для работы с графикой и отслеживание событий мыши, в онлайн редактор https://seditor.ru:1555/ добавился «Векторный редактор» на этом API. Теперь можно нарисовать схемы складов на ПК, сделать карты (*.sug-файлы) для мобильной платформы SimpleUI, выводить данные из 1С в графическом виде. Таким образом, API для работы с векторными файлами теперь есть и в веб- и в мобильной платформе, а также средства для создания и редактирования векторных файлов есть тоже в обеих платформах.

1 стартмани

20.03.2024    1662    0    informa1555    1    

41

Зачем нам 1С:Элемент

Мобильная разработка Языки и среды Бесплатно (free)

Flutter может быть использован с 1С:Предприятием для разработки кроссплатформенных мобильных приложений, обеспечивая единый интерфейс и функциональность на устройствах под управлением iOS и Android. Это позволяет создавать приложения с высокой производительностью благодаря использованию собственного движка рендеринга Flutter. Интеграция Flutter с 1С:Предприятием позволяет создавать мобильные приложения любого уровня сложности, интегрировать их в корпоративные информационные системы, а также реализовывать бизнес-логику

19.03.2024    9859    ROk_dev    67    

41

JavaScript в Simple

Мобильная разработка Бесплатно (free)

В SimpleUI и SimpleWEB, наряду с обработчиками на python и онлайн (1С и т.д.) добавляется интерпретатор JavaScript. В андроид платформе он скорее играет на поле python, т.к. является оффлайновым решением для самостоятельной обработки и расширяет аудиторию разработчиков для разработки самостоятельных решений. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

12.02.2024    1705    informa1555    0    

25
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. siamagic 25.04.23 13:28 Сейчас в теме
Для такой задачи идеально подходит PWA/
Если задача важная то ещё лучше дозвон с астериска делать.
2. KHoroshulinAV 171 25.04.23 13:44 Сейчас в теме
Да, но тут готовый функционал который настраивается за 5 мин.
4. siamagic 25.04.23 20:55 Сейчас в теме
(2) Думал изначально что приложение писал под андройд, а тут просто письмо - вообще дно дна.
Раньше когда у опреторов сотовой связи была функция отправки на почту, а они тебе смс также решали эти проблемы. Но, если сервер потух ты не узнаешь поэтому pwa и любой пингер намного лучше описанного в статье + наитивно.
корум; +1 Ответить
3. SerVer1C 760 25.04.23 15:11 Сейчас в теме
3-й и 4-й проблеме это не поможет
5. jmw 60 28.04.23 04:50 Сейчас в теме
И зачем было городить огород? Отправка сообщения в телегу занимает всего несколько строк.
Отправлять можно хоть из 1С, хоть из PS, хоть JS, хоть из VBS с разных компьютеров.
К примеру, как это делается у меня:
— если регламентное задание в 1С завершается ошибкой, приходит сообщение
— если бэкап какой-либо базы не сделался, то утром получаю об этом сообщение
— если какой-то из серверов не пингуется — сообщение
— если пропала связь с внешним миром — сообщение с сервера хостера сайта
А читать простыню „месячного отчёта“ на мобильном — только глаза портить.
user1387276; +1 Ответить
6. KHoroshulinAV 171 28.04.23 16:11 Сейчас в теме
уведомления со звуковым сигналом! - перечитайте статью если ничего не поняли)
Оставьте свое сообщение