Мобильное приложение 1С: Список покупок и анализ расходов

06.06.19

Функциональные - Бюджетирование и планирование

В публикации рассмотрено небольшое домашнее мобильное приложение для составления списка покупок и анализа расходов. В приложении реализованы: работа с штрихкодами (сканирование встроенной камерой), поиск наименования товара по штрихкоду из интернета, загрузка чеков из ФНС по QR-коду, вывод QR-кода ранее загруженного чека и др.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Мобильное приложение
.cf 477,56Kb
24
24 Скачать (1 SM) Купить за 1 850 руб.
Центральная база
.cf 475,87Kb
23
23 Скачать (1 SM) Купить за 1 850 руб.
Мобильное приложение для Android
.apk 35,60Mb
10
10 Скачать (1 SM) Купить за 1 850 руб.

В мобильном приложении всего один документ Заказ, зато реализованы следующие механизмы:
- обмен с центральной базой (подробно описано здесь http://its.1c.ru/db/pubintromobile);
- отправка PUSH-уведомлений (подробно описано здесь http://its.1c.ru/db/pubintromobile);
- сканирование штрихкодов встроенной камерой;
- загрузка наименования товара по штрихкоду из интернета при создании товара (описание сервиса здесь https://barcodes.olegon.ru/);
- получение чека из ФНС по QR-коду (API здесь https://habr.com/ru/post/358966/);
- вывод QR-кода уже загруженных чеков для возможности получить чек на другом устройстве.

Кому интересно, выкладываю куски кода некоторых механизмов.

 

Сканирование штрихкодов встроенной камерой смартфона (объект СредстваМультимедиа)

Модуль формы документа или справочника, где нужно сканировать штрихкод:

// Кнопка Сканировать на форме
&НаКлиенте
Процедура Сканировать(Команда)
	ДополнительныеПараметры = Новый Структура;
	ДополнительныеПараметры.Вставить("Форма", ЭтотОбъект);
	ДополнительныеПараметры.Вставить("ИмяОбработчикаЗакрытияСканирования", "ОбработкаЗакрытияСканирования");
	ПодключаемоеОборудованиеКлиент.ПолучитьШтрихкод(ДополнительныеПараметры);
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаЗакрытияСканирования(ДополнительныеПараметры) Экспорт
	Возврат;
КонецПроцедуры

// Здесь обрабатываем полученный штрихкод, QR-код и т.п.
&НаКлиенте
Процедура ОбработатьПолученныйШтрихкод(ПолученныйШтрихкод, Параметры) Экспорт
	Сообщить(ПолученныйШтрихкод);
КонецПроцедуры

Общий модуль ПодключаемоеОборудованиеКлиент:

Процедура ПолучитьШтрихкод(ДополнительныеПараметры) Экспорт
	ЗаголовокСканирования = НСтр("ru = 'Считайте штрихкод'");
	Если ДополнительныеПараметры.Свойство("ЗаголовокСканирования") Тогда
		ЗаголовокСканирования = ДополнительныеПараметры.ЗаголовокСканирования;
	КонецЕсли;
	#Если МобильноеПриложениеКлиент Тогда
		ОбработчикСканирования = Новый ОписаниеОповещения("ОбработкаСканирования", ПодключаемоеОборудованиеКлиент, ДополнительныеПараметры);
		ОбработчикЗакрытияСканирования = Новый ОписаниеОповещения(ДополнительныеПараметры.ИмяОбработчикаЗакрытияСканирования, 
			ДополнительныеПараметры.Форма, ДополнительныеПараметры);
		СредстваМультимедиа.ПоказатьСканированиеШтрихКодов(ЗаголовокСканирования, ОбработчикСканирования, ОбработчикЗакрытияСканирования);
	#КонецЕсли
КонецПроцедуры

Процедура ОбработкаСканирования(Штрихкод, Результат, Сообщение, ДополнительныеПараметры) Экспорт
	Если НЕ ДополнительныеПараметры.Свойство("ПотоковоеСканирование") Тогда
	#Если МобильноеПриложениеКлиент Тогда
		СредстваМультимедиа.ЗакрытьСканированиеШтрихКодов();
	#КонецЕсли
	КонецЕсли;
	Если Результат = Неопределено Тогда
		Возврат;
	КонецЕсли;
	ДополнительныеПараметры.Форма.ОбработатьПолученныйШтрихкод(Штрихкод, ДополнительныеПараметры);
КонецПроцедуры

 

Загрузка наименования товара по штрихкоду из интернета

Поиск наименований товара по штрихкоду реализован через сервис https://barcodes.olegon.ru/. Сервис возвращает массив имен, я беру первое имя ТекМассив.names[0]. Модуль формы элемента справочника товаров:

&НаКлиенте
Процедура ОбработатьПолученныйШтрихкод(ПолученныйШтрихкод, Параметры) Экспорт
	Объект.Штрихкод = СокрЛП(ПолученныйШтрихкод);
	ssl4 = Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено );
	HTTPСоединение = Новый HTTPСоединение("barcodes.olegon.ru", 443,,,,,ssl4,); 
	HTTPЗапрос = Новый HTTPЗапрос("/api/card/name/" + Объект.Штрихкод + "/B644542640852064273024635143606"); 
	Результат =  HTTPСоединение.Получить(HTTPЗапрос);
	Если Результат.КодСостояния = 200 Тогда 
		СтрокаРезультат = Результат.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
		ЧтениеJSON = Новый ЧтениеJSON;
		ЧтениеJSON.УстановитьСтроку(СтрокаРезультат);
		ТекМассив = ПрочитатьJSON(ЧтениеJSON);
		ЧтениеJSON.Закрыть();
		Если СтрДлина(Объект.Наименование) = 0 Тогда
			Объект.Наименование = ТекМассив.names[0];
		КонецЕсли;	
	Иначе
		Сообщить("Статус ответа:" + Результат.КодСостояния);
	КонецЕсли;
КонецПроцедуры

 

Получение чека из ФНС по QR-коду

QR-код чека является строкой вида t=20190602T2026&s=1854.00&fn=9282000100073930&i=74555&fp=3968601409&n=1, содержащей дату, сумму, номер фискального накопителя, номер чека, фискальный признак и вид операции. Используя эти данные можно получить сам чек из ФНС. Для получения чека в заголовке HTTP-запроса необходимо указать номер телефона и пароль, которые можно получить при регистрации в мобильном приложении Проверка кассового чека https://play.google.com/store/apps/details?id=ru.fns.billchecker&hl=ru.

&НаКлиенте
Процедура ЗагрузитьЧек(Команда)
	ВидЧека = "1";
	ДатаВремя = "20190602T1150";
	Сумма = "299.00";
	ФН = "8710000101180608";
	ФД = "98325";
	ФП = "309098793";
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Authorization", "Basic " + ЗашифроватьBase64("+79637413216:702187", "US-ASCII"));
	Заголовки.Вставить("Device-Id", "Android");
	Заголовки.Вставить("Device-OS", "Android");
	HTTPСоединение = Новый HTTPСоединение("proverkacheka.nalog.ru", 8888);
	HTTPЗапрос = Новый HTTPЗапрос("/v1/ofds/*/inns/*/fss/" + СокрЛП(ФН) + "/operations/" + СокрЛП(ВидЧека) + "/tickets/" + СокрЛП(ФД) + "?fiscalSign=" + СокрЛП(ФП) + "&date=" + СокрЛП(ДатаВремя) + "&sum=" + СокрЛП(СтрЗаменить(Сумма,".","")), Заголовки); 
	Ответ = HTTPСоединение.Получить(HTTPЗапрос);   
	Если Ответ.КодСостояния = 204 Тогда
		//Сообщить("Чек корректен");
	    ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
		HTTPЗапрос = Новый HTTPЗапрос("/v1/inns/*/kkts/*/fss/" + СокрЛП(ФН) + "/tickets/" + СокрЛП(ФД) + "?fiscalSign=" + СокрЛП(ФП) + "&sendToEmail=no", Заголовки); 
		Ответ = HTTPСоединение.Получить(HTTPЗапрос, ИмяВременногоФайла);
		Если Ответ.КодСостояния = 200 Тогда
			//Сообщить("Чек получен");
			Форма = ПолучитьФорму("Документ.Заказ.Форма.ФормаДокумента");
			ДанныеФормы = Форма.Объект;
			ОбработатьФайлОтвета(ИмяВременногоФайла, ДанныеФормы);
			КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); 
			Форма.Открыть();
		Иначе
			Сообщить("Получение чека: " + Ответ.КодСостояния);
		КонецЕсли;
	Иначе
		Сообщить("Проверка корректности: " + Ответ.КодСостояния);
	КонецЕсли; 
КонецПроцедуры

&НаСервере
Функция ЗашифроватьBase64(Строка, Кодировка) Экспорт
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
	ЗаписьТекста = Новый ЗаписьТекста(ИмяВременногоФайла, Кодировка);
    ЗаписьТекста.Записать(Строка);
    ЗаписьТекста.Закрыть();
    Двоичные = Новый ДвоичныеДанные(ИмяВременногоФайла);
    Результат = Base64Строка(Двоичные);
	Если Лев(Результат, 4) = "77u/" Тогда
		Результат = Сред(Результат, 5);
	КонецЕсли; 
	Результат = СтрЗаменить(Результат, Символы.ПС, "");
    УдалитьФайлы(ИмяВременногоФайла);
    Возврат Результат;
КонецФункции

&НаСервере
Процедура ОбработатьФайлОтвета(ИмяФайла, ДанныеФормы)
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.ОткрытьФайл(ИмяФайла, "UTF-8");
	Результат = ПрочитатьJSON(ЧтениеJSON,,"dateTime");
	Организация = Результат.document.receipt.user;
	ИНН = Результат.document.receipt.userInn;
	СтрокиТовары = Результат.document.receipt.items;
		Для каждого СтрокаТовар Из СтрокиТовары Цикл
			Сообщить(СтрокаТовар.name);
			Сообщить(СтрокаТовар.price / 100);
			Сообщить(СтрокаТовар.quantity);
			Сообщить(СтрокаТовар.sum / 100);
		КонецЦикла; 
КонецПроцедуры

 

Вывод QR-кода

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

&НаСервере
Функция ПолучитьКартинкуQR(QRКод)
	Макет = ПолучитьОбщийМакет("КомпонентаПечатиQRКода");
	Адрес = ПоместитьВоВременноеХранилище(Макет);
	
	КодВозврата = ПодключитьВнешнююКомпоненту(Адрес, "QRCodeExtensionSymbolicName");
	Если Не КодВозврата Тогда
		Сообщить("Проблема подключения внешней компоненты!");
	КонецЕсли;
	ГенераторQRКода = Новый("AddIn.QRCodeExtensionSymbolicName.QRCodeExtension");	

	ДанныеQRКода = ГенераторQRКода.GenerateQRCode(QRКод, 1, 190);
	
	Если ДанныеQRКода = Неопределено Тогда
		КартинкаQRКода = Новый Картинка();
	Иначе
		КартинкаQRКода = Новый Картинка(ДанныеQRКода);
	КонецЕсли;
	
	Макет = ПолучитьОбщийМакет("Макет");
	Макет.Рисунки.ШК.Картинка = КартинкаQRКода;
	ТабДок = Новый ТабличныйДокумент;
	ТабДок.Вывести(Макет);
	Возврат ТабДок;	
КонецФункции

 

О мобильном приложении

Центральную базу необходимо опубликовать на web-сервере, например http://192.168.103.28/BuyCentr. В центральной базе заполнить узлы плана обмена Мобильные устройства (предопределенный Ц - Центральный, второй К - Константин, третий Н - Николай и т.п.) и константу Ключ доступа отправителя PUSH, например PUSH_SRV_API_KEY_F55C7685_602D_4F06_BD4B_727CFBFAA85F (можно получить здесь https://pushnotifications.1c.com/). Также через консоль заданий можно настроить расписание регламентного задания, которое оповещает сколько денег потрачено сегодня.

Мобильное приложение необходимо собрать в Сборщике приложений, запустить на телефоне, заполнить узлы плана обмена (предопределенный К - Константин, второй  Ц - Центр), константу Адрес центральной базы, например http://192.168.103.28/BuyCentr, константу Код центральной базы - Ц, Номер проекта мобильного приложения, например 797785657074 (можно получить здесь https://pushnotifications.1c.com/), Номер и пароль для проверки чеков, например +79637413216 и 702187 (можно получить зарегистрировавшись в мобильном приложении ФНС https://play.google.com/store/apps/details?id=ru.fns.billchecker&hl=ru).

Проверялось на платформе 1С версии 8.3.14.1630 и мобильной платформе 1С версии 8.3.14.53.

мобильное приложение android список покупок анализ расходов сканирование штрихкодов встроенной камерой загрузка чеков ФНС Налоговая наименование товара по штрихкоду PUSH

См. также

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

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

28500 руб.

21.04.2017    95543    126    40    

214

1С-программирование Мобильная разработка Программист Стажер Платные (руб)

Данный онлайн-курс предусматривает изучение базовых принципов создания приложений для операционной системы Android, работающих на мобильной платформе “1С:Предприятие”. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие” при разработке прикладных решений для “обычных” компьютеров, но пока ещё не занимался разработкой 1С-приложений, предназначенных для работы на мобильных устройствах.

08.06.2023    9624    0    Infostart    0    

67

Бюджетирование и планирование Бизнес-аналитик Бухгалтер Пользователь Управляемые формы Конфигурации 1cv8 Россия Управленческий учет Платные (руб)

«ФинОфис» - программный продукт для автоматизации бюджетирования, казначейства, консолидации данных и настройки бизнес-процессов в 1С.

25000 руб.

20.12.2017    50832    12    7    

89

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

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

2880 руб.

03.12.2018    58688    192    103    

172

SALE! 25%

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

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

13200 9900 руб.

27.12.2021    37292    100    161    

193

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

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

2000 руб.

22.04.2019    96093    564    187    

316

Бюджетирование и планирование Производство готовой продукции (работ, услуг) Бюджетный учет Бизнес-аналитик Бухгалтер Платформа 1С v8.3 1С:Управление производственным предприятием Аудит и бухгалтерские услуги, юриспруденция 1С:Франчайзи, автоматизация бизнеса Россия Бюджетный учет Управленческий учет Платные (руб)

Выгрузка из УПП бюджетов, статей бюджетов, статей оборотов по бюджетам (с шаблонами проводок), источников для получения фактических данных и расчетов по модели бюджетирования в 1С УПП. Данный опыт значительно упростит внедрение блока бюджетирования в УПП.

72000 руб.

02.07.2015    39873    13    5    

26
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. capitan 2492 06.06.19 17:37 Сейчас в теме
2. coollerinc 195 11.06.19 21:52 Сейчас в теме
3. coollerinc 195 12.06.19 19:32 Сейчас в теме
Частенько веб сервис валится в 202 ошибку, да и сканер на моем телефоне как то сложно распознает на реальных мятых чеках штрихкод. Даже поэксперементировал с стророниим сканером, чуть лучше, но все равно долго.
4. user_gea 14.06.19 11:28 Сейчас в теме
Спасибо за фрагменты кода! Взяты на заметку !
5. Derushev 11 10.04.20 13:52 Сейчас в теме
Спасибо! Но пуши не доходят. Вываливается ошибка: gcm has been deactivated and remove from google api
UPD: Простите, увидел. https://forum.infostart.ru/forum92/topic223641/
6. 1cspec 120 14.02.21 14:55 Сейчас в теме
А сервис "Загрузка наименования товара по штрихкоду из интернета https://barcodes.olegon.ru/" больше не работает?
Оставьте свое сообщение