Создание мобильного клиента 1С на Android с использованием HTTP-сервисов

Публикация № 695088 Дата создания: 03.11.17 00:17

Разработка - Системная интеграция - Внешние источники данных

Android Kotlin HTTP Retrofit

Краткий курс по созданию мобильного приложения на Android, который связывается с сервером 1С через HTTP-сервис. Публикация рассчитана на тех, кто хорошо знаком с программированием на платформе 1С и владеет основами программирования на платформе Android (умеет создавать Activity и знает, как устроена структура проекта).

На Инфостарте есть несколько публикаций на тему создания приложений для Android и его связке с 1С через Web-сервис. Но на дворе сейчас конец 2017 года, и пришла пора освежить свои навыки.

Во-первых, с выходом Android Studio 3.0.0 в корпорации Google уже окончательно определились с будущим основным языком программирования, и это будет Kotlin. В данной публикации будем использовать именно этот язык. Он совместим с Java и с переходом у вас никаких проблем не будет, получите только позитивные эмоции.

Во-вторых, не стоит вкладывать свои силы в разработку Web-сервисов. Этому есть несколько причин:

  • На платформе 1С 8.3 им на смену пришли HTTP-сервисы
  • Протокол SOAP, используемый веб-сервисами дорого обходится и для сервера, и для клиента
  • Для платформы Android нет хорошей библиотеки для работы с SOAP (по крайней мере бесплатных). Библиотека ksoap2 хороша ровно до того момента, когда вы от простых примеров перейдёте к реальным задачам и на сложных структурах данных поймаете Double ID Exception, для лечения которого надо обладать исключительными знаниями протокола, схемы XML-разметок, рыться в исходниках библиотеки. Оно вам надо? Парсинг полученных данных в ksoap - это отдельный ад программиста
  • Для создания клиента HTTP-сервисов существуют замечательные библиотеки, в том числе для платформы Android
  • В конце концов, при помощи HTTP-сервиса в 1С вы можете сами написать собственную реализацию протокола SOAP

В данной публикации я не буду подробно рассматривать создание HTTP-сервиса, т.к. на эту тему уже есть публикации, например эти: HTTP-сервисы для тех, кто ничего не понимает в WEB и HTTP-сервисы в 1С Предприятие 8.3 . В качестве упражнения, руководствуясь этими публикациями, создайте самостоятельно HTTP-сервис с базовым URL "wms" и шаблоном /tables/{ИмяТаблицы}, возвращающий список складов в формате JSON. Формат JSON лучше XML хотя бы тем, что в нём меньше букв. Код модуля сервиса должен у вас получиться примерно такой:

Функция ТаблицыПолучить(Запрос)
	
	ИмяТаблицы = Запрос.ПараметрыURL["ИмяТаблицы"];
	Данные = Новый ЗаписьJSON;
	Данные.ПроверятьСтруктуру = Ложь;
	Данные.УстановитьСтроку(Новый ПараметрыЗаписиJSON(,Символы.Таб));
	Данные.ЗаписатьНачалоОбъекта();
	Данные.ЗаписатьИмяСвойства(ИмяТаблицы);
	Данные.ЗаписатьНачалоМассива();
	
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	               |	Склады.Код,
	               |	Склады.Наименование КАК Наименование
	               |ИЗ
	               |	Справочник.Склады КАК Склады
	               |ГДЕ
	               |	Склады.ПометкаУдаления = ЛОЖЬ
	               |	И Склады.ЭтоГруппа = ЛОЖЬ";
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		Данные.ЗаписатьНачалоОбъекта();
		Данные.ЗаписатьИмяСвойства("id");
		Данные.ЗаписатьЗначение(Выборка.Код);
		Данные.ЗаписатьИмяСвойства("name");
		Данные.ЗаписатьЗначение(Выборка.Наименование);
		Данные.ЗаписатьИмяСвойства("isFifo");
		Данные.ЗаписатьЗначение(Ложь);
		Данные.ЗаписатьКонецОбъекта();
	КонецЦикла;	

	Данные.ЗаписатьКонецМассива();
	Данные.ЗаписатьКонецОбъекта();
	Тело = Данные.Закрыть();
	Ответ = Новый HTTPСервисОтвет(200);
	Ответ.УстановитьТелоИзСтроки(Тело, КодировкаТекста.UTF8);
	
	Возврат Ответ;
	
КонецФункции

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

В браузере вы должны получить от сервиса такую структуру данных в формате JSON, где "stores" - это параметр, передаваемый в адресной строке вместо {ИмяТаблицы}, сохраните её в блокноте, пригодится нам в дальнейшем:

{
	"stores": [
		{
			"id": "000000008",
			"name": "Изолятор брака",
			"isFifo": false
		},
		{
			"id": "000000007",
			"name": "Производственный склад",
			"isFifo": false
		},
		{
			"id": "000000002",
			"name": "Склад готовой продукции",
			"isFifo": false
		}	]
}

А теперь переходим к клиенту: в Android Studio 3 создайте новый проект, включите поддержку языка Kotlin. Укажите минимальный SDK 25 уровня. В файле build.gradle вашего проекта добавьте следующие зависимости:

dependencies {
    // эти зависимости уже могут быть в вашем проекте, их не трогайте:
    implementation fileTree(include: ["*.jar"], dir: "libs")
    implementation "com.android.support:appcompat-v7:26.+"
    implementation "com.android.support:design:26.+"
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
   
    // а эти зависимости вы добавляете сами:
    implementation "com.squareup.retrofit2:retrofit:2.+"
    implementation "com.squareup.retrofit2:converter-gson:2.+"
    implementation "org.jetbrains.anko:anko-sdk25:$anko_version"
    implementation "org.jetbrains.anko:anko-sdk25-listeners:$anko_version"
    implementation "org.jetbrains.anko:anko-commons:$anko_version"
}

Последними строками в файле конфигурации вы добавляете библиотеку Retrofit и парсер GSON, который нам понадобиться в проекте, а также очень полезные расширения языка Kotlin для Android под названием Anko - с ним ваш код будет еще более кратким и понятным.

Google рекомендует бизнес-логику приложения выносить в класс, наследуемый от Service, поэтому создайте простейший сервис примерно такого содержания:

package test.App

import android.app.Service
import android.content.Intent
import android.os.Binder
import android.os.IBinder
import okhttp3.OkHttpClient
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory

class BLService : Service() {

    private val mUrl = "http://server/Database1c/hs/wms"  // Базовый URL в 1С указан как wms
    lateinit private var rf: Retrofit   // Объект, который содержит все настройки нашего
                                        // соединения с сервером и выполняет всю работу
    lateinit private var wms: WmsApi    // Это API нашего HTTP-сервиса, напишем его позже

    private var binder = BLBinder()     // Нужен для доступа к сервису из любой Activity

    inner class BLBinder : Binder() {
        fun getService(): BLService? {
            return this@BLService
        }
    }

    override fun onCreate() {

        super.onCreate()

        val okHttpClient = OkHttpClient.Builder()
                .addInterceptor(BasicAuthInterceptor("Иванов", "СуперПароль")) 
                                // напишем этот Interceptor позже, нужен для авторизации в 1С
                .build()
        rf = Retrofit.Builder()
                .baseUrl(mUrl)
                .client(okHttpClient)
                .addConverterFactory(GsonConverterFactory.create())
                .build()
        wms = rf.create(WmsApi::class.java)

    }

    // обязательные переопределяемые методы:
    override fun onBind(intent: Intent?): IBinder {
        return binder
    }

    override fun onUnbind(intent: Intent?): Boolean {
        return true
    }

}

Не могу удержаться и покажу, как теперь стало просто запускать сервис из главной Activity при помощи расширения языка Anko:

override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)
        // здесь может быть еще код

        // запуск сервиса с помощью расширения языка Anko:  
        startService<BLService>()
}

По умолчанию Retrofit не использует авторизацию на HTTP-сервере, но к счастью его легко добавить. Для этого нам необходимо написать класс для авторизации на сервере 1С методом BASIC, так называемый интерцептор, вот его полный код:

package test.App

import okhttp3.Credentials
import okhttp3.Interceptor
import okhttp3.Response

class BasicAuthInterceptor(user: String, password: String) : Interceptor {

    private val credentials : String = Credentials.basic(user, password)

    override fun intercept(p0: Interceptor.Chain?): Response {
        val request = p0!!.request()
        val authenticatedRequest = request
                .newBuilder()
                .header("Authorization", credentials)
                .build()
        return p0.proceed(authenticatedRequest)
    }

}

Не забывайте, что методом BASIC пароли пользователей 1С передаются через сеть открытым текстом, поэтому при боевом развертывании приложения всегда настраивайте веб-сервер на использование только шифрованного протокола HTTPS.

Теперь необходимо написать интерфейс API нашего HTTP-сервиса. Для начала возьмем блокнот и посмотрим на структуру данных, полученную ранее. Этот файл поможет нам создать классы Java, в которые будут завёрнуты наши данные. В случае использования ksoap2 вы бы на этом пункте хорошенько вспотели. Но ничего не бойтесь, с нами Retrofit, поэтому идем на сайт www.jsonschema2pojo.org/ и в левой его части вставляем содержание вашего JSON-пакета. В правой части заполняем как на рисунке:

На основе введеных данных этот сайт бесплатно сгенерирует нам два класса на языке Java в 2 файлах:

-----------------------------------test.App.Store.java-----------------------------------

package test.App;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Store {

@SerializedName("id")
@Expose
private String id;
@SerializedName("name")
@Expose
private String name;
@SerializedName("isFifo")
@Expose
private Boolean isFifo;

public String getId() {
  return id;
}

public void setId(String id) {
  this.id = id;
}

public String getName() {
  return name;
}

public void setName(String name) {
this.name = name;
 }

public Boolean getIsFifo() {
return isFifo;
 }

public void setIsFifo(Boolean isFifo) {
  this.isFifo = isFifo;
}

}
-----------------------------------test.App.Stores.java-----------------------------------

package test.App;

import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Stores {

@SerializedName("stores")
@Expose
private List<Store> stores = null;

public List<Store> getStores() {
  return stores;
}

public void setStores(List<Store> stores) {
  this.stores = stores;
}

}

Добавьте эти 2 файла в свой проект, и через меню Code -> Convert Java file to Kotlin file переведите на язык Kotlin, в результате получатся совсем простые классы, избавленные от геттеров и сеттеров, которые в языке Kotlin вдобавок еще можно объединить в одном файле:

package test.App

import com.google.gson.annotations.Expose
import com.google.gson.annotations.SerializedName

class Store {

    @SerializedName("id")
    @Expose
    var id: String? = null
    
    @SerializedName("name")
    @Expose
    var name: String? = null
    
    @SerializedName("isFifo")
    @Expose
    var isFifo: Boolean? = null

}

class Stores {

    @SerializedName("stores")
    @Expose
    var stores: List<Store>? = null

}

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

Добавим в наш сервисный класс BLService переменную для хранения массива полученных из 1С данных:

var dbStores : Stores? = null

А теперь переходим непосредственно к написанию интерфейса API. Звучит угрожающе, но на самом деле для нашего HTTP-сервиса это будет такой простой код;

package test.App

import retrofit2.Call
import retrofit2.http.GET

interface WmsApi {

    @GET("table/stores")
    fun getStores() : Call<Stores>

}

Полный URL в браузере, соответствующий функции getStore() выглядел бы с учётом вышенаписанного кода так: http://server/Database1c/hs/wms/table/stores. Функции в интерфейсе всегда должны возвращать тип Call с указанием получаемого от HTTP-сервиса класса-обертки в угловых скобках. Параметры в строке @GET можно точно так же как в 1С заключать в фигурные скобки и указывать их в параметре функции, например вот так:

interface GitHubService {
  @GET("users/{user}/repos")
  fun listRepos(@Path("user") user: String) : Call<List<Repo>>
}

Интерфейс API инициализируется в коде нашего класса BLService такой строкой:

wms = rf.create(WmsApi::class.java)

Вы наверное удивитесь, но на этом всё. Теперь вы можете дергать 1С при помощи HTTP-сервиса. Для простоты уберу обработчики исключений и асинхронные штучки, оставив только самую суть:

dbStores = wms.getStores().execute().body()

До скорых встреч!

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Mi11er 85 03.11.17 09:33 Сейчас в теме
Буквально месяц назад, загорелся такой идеей, сделать для андройда что то похожее, но потом бысро понял, что пока что не хватит навыков по Java, спасибо за статью =)

Будем учить =) и разбираться. Как раз впереди для этого 3 выходных.
2. Dzenn 572 03.11.17 10:47 Сейчас в теме
В этой публикации прекрасно всё. За исключением меня, не шарящего в andriod.
juliia1992; user5300; kolessov_a; Lyolik; Jeka44; zannv; maksa2005; zhenianik; AlexSvt; Марго; Liris; Nuobu; AlexKo84; Muzik92; dj_serega; user597616_i.d.kravchenko; ZUL_MTFKA; DrAku1a; KroVladS; гыук320; Сурикат; +21 Ответить
3. ylyas 25 03.11.17 12:21 Сейчас в теме
Вопрос автору.
А чем Java оказался плох?
Или в чем, в данном случае(для данной задачи) профит Kotlin??
4. cdiamond 185 03.11.17 12:42 Сейчас в теме
(3) В моем реальном проекте количество написанного кода сократилось примерно в 2 раза, он стал хорошо читабельным, потому что издалека напоминает мне Object Pascal (Delphi), которым я увлекался в юности. Кто-то видит в нём похожесть на C# и даже на Swift.
Ну и как я сказал в преамбуле - Гугл официально взял курс на Kotlin, а это значит что в скором времени официальная документация и курсы по программированию на Android будут переписаны на этом языке, а Java останется в роли поддержки старого кода.
5. ylyas 25 03.11.17 12:59 Сейчас в теме
(4)
Это с точки зрения удобства разработчика. А с точки зрения эксплуатации самого решения, реализованного на kotlin? есть ли преимущества перед JAVA? Производительность, устойчивость, отсутствие проблемы утечки памяти? или что то еще...
6. cdiamond 185 03.11.17 13:06 Сейчас в теме
(5) Kotlin транслируется в байт-код виртуальной машины ART, так что никаких принципиальных отличий от Java пока нет, кроме небольшого увеличения размера рантайм-библиотек + подключаемые расширения языка. В случае изготовления интерфейса без XML-разметки с помощью Anko значительно возрастатет скорость генерации интерфейса. Так что с утечками бороться точно так же как в Java. Но больше всего доставляет null safety.
7. ltfriend 734 04.11.17 10:16 Сейчас в теме
(4) То, что kotlin теперь официально включен в новую версии android studio не означает, что Гугл сделало его основным. Да и общего с java у него только то, что он генерирует тот же байт код для jvm. Соответственно ни на java, ни на c# (который создавался под влиянием java и также имеет С подобный синтаксис) котлин не особо похож. А вот со swift'ом действительно очень схожий синтаксис.
8. victor_k 04.11.17 18:19 Сейчас в теме
Слабинько, да и похоже муторно, что то стоящее сделать...
9. Brawler 481 05.11.17 10:38 Сейчас в теме
Точно так же как и для Web-сервисов, я не рекомендую вам писать бизнес-логику в модуле HTTP-сервиса, так как в нём отсутствует проверка кода на ошибки. Я вам привел плохой пример исключительно для простоты изложения. Вместо этого старайтесь максимально переносить свой код в общие модули.


Сталкивались с этой бородой уже.
Это фича такая или ошибка в платформе?
Если фича, то по каким вразумениям она сделана?
Если ошибка, в 1С кто-то писал?
10. smit1c 106 08.11.17 13:05 Сейчас в теме
Если с 0 учить программирование под Андроид, то лучше начинать с JAVA или всё таки Kotlin ?
11. Mi11er 85 08.11.17 14:12 Сейчас в теме
(10)
Думаю что то вроде того
JAVA + ООП -> Kotlin

Хотя Kotlin может быть полностью сольным языком в проекте.
12. Dementor 782 08.11.17 15:14 Сейчас в теме
(10) Начинать проще с языка, на котором есть учебники для начинающих. Сейчас это Java. В будущем, возможно, появятся учебники на Kotlin. А вы уже сами решайте когда хотите учить программирование для Android - сейчас или в будущем. Рекомендую startandroid.ru
Stan; smit1c; +2 Ответить
13. ylyas 25 20.11.17 10:14 Сейчас в теме
кстати вопрос.
а ошибки у вас не выдает вот в этом месте?? : .baseUrl(mUrl)
у меня ,например,ретрофит "хочет" чтобы базовый URL заканчивался слешем.
у вас, выше по тексту если смотреть - окончание без слеша...
14. ylyas 25 20.11.17 18:48 Сейчас в теме
И да, реализовал таки тоже самое на JAVA в андроид студио 2.3...
Особого увеличения кода не увидел. Разницу только в нотации увидел.
Для меня,например, менее очевидны объявления переменных в Kotlin.
Не знаю. мое мнение, что Kotlin - прослойка между Java и разработчиком.. не особо нужная..
Пока вот так
15. 🅵🅾️🆇 14.03.18 14:44 Сейчас в теме
(0) > Google взял курс на Kotlin

Не совсем так, многое (включая и интерфейс будующей ос фуксия и реклама, которая и делает им основной доход) делается на flutter + dart.
Флаттер, кстати, позволяет просто делать очень шустрые приложения сразу под ведро и огрызок. Так что извращенцы любители JS могут не грустить, а помаленьку переучиваться.

Так что немного покривили душой. А так статью в закладки, тк дай боже в ближайшем будующем снова вернусь к дружбе мобильников и 1с'ки)))
16. shumvlesu 12.10.20 15:30 Сейчас в теме
implementation "org.jetbrains.anko:anko-sdk23:$anko_version"
implementation "org.jetbrains.anko:anko-sdk23-listeners:$anko_version"

Эти две строки будут теперь выдавать ошибку.

Пропишите


...
buildscript {
ext.anko_version = '0.10.1'
}

...

dependencies {
17. shumvlesu 12.10.20 17:29 Сейчас в теме
Блин вот делал делал. И дошел до

dbStores = wms.getStores().execute().body()
До скорых встреч!

И что мне с этим делать то? :)

подскажите кто делал пример вызова этого getStores. Каким должен быть тип у dbStores?
18. shumvlesu 12.10.20 22:40 Сейчас в теме
невнимательно читал - var dbStores : Stores? = null
Но все равно непонятно где этот dbStores = wms.getStores().execute().body() вызывать
в onCreate, class BLService? Но как собственно это толкнуть то к выполнению?
startService<BLService>() должен это сделать ?
19. chubr 10 25.01.21 13:23 Сейчас в теме
Добрый день, а можно как то это пример в виде проекта выложить? А то и вправду непонятно как запускать это все дело.
К примеру: у меня в android studio код ругается на "okhttp3" и "retrofit2" в строках
import okhttp3.OkHttpClient
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
20. cdiamond 185 28.01.21 16:55 Сейчас в теме
(19) Извини, я (автор статьи) отошел от данной темы и за прошедшие годы видимо многое поменялось. Знаю интеграторов которые пошли данным путем и создали коммерческие продукты, надеюсь кто-нибудь выложит более свежие статьи.
21. chubr 10 09.02.21 15:24 Сейчас в теме
(20) Собственно почти со всем разобрался, код работает, но не понятно как инициализировать и обращаться к dbStores в MainActivity
Оставьте свое сообщение

См. также

Как я начал администрировать сервер 1С: Предприятие 8.3 с телефона Промо

Администрирование данных 1С Мобильная разработка v8 Бесплатно (free)

Развитие инструментов управления кластером серверов 1С:Предприятие 8.3.

14.04.2017    65910    user700211_a.straltsou    29    

Мобильное приложение для учета личных финансов

Работа с интерфейсом Мобильная разработка v8::Mobile Домашние учет и финансы Россия УУ Бесплатно (free)

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

08.07.2021    1273    coollerinc    16    

Фоновый сервис событий в Simple UI. Релиз Июнь 2021

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

В новом релизе появился постоянно висящий в памяти сервис для обработки внешних событий – штрихкодов, голосового ввода, сообщений от других программ и внутренних процессов. Который может управлять программой поверх стандартных процессов – что то спрашивать голосом, что то озвучивать(ассистент), показывать диалоги, запускать процессы и экраны, отправлять управляющие команды. С помощью этого можно получить многоплановый интерфейс и более удобное взаимодействие с пользователем не только через экран и ввод, но и с помощью событий голосового ввода и других средств взаимодействия. Эта статья является дополнением к основной статье по Simple UI: https://infostart.ru/public/1153616/

15.06.2021    1916    informa1555    0    

Релиз Simple UI май 2021: плиточные экраны, плиточное главное меню, картинки из кеша, новое взаимодействие с ТСД и т.д.

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

В релизе Simple UI 5.75.00 добавлен новый вид интерфейса – «плитки» и возможность переопределения стартового экрана, а также другие нововведения. Также важное нововведение - новый режим взаимодействия с некоторыми моделями ТСД - через подписку на сообщения. Дополнение к основной статье: https://infostart.ru/public/1153616/

17.05.2021    1904    informa1555    0    

Фитнес – твой личный тренер в зале и дома Промо

Пользователю системы Мобильная разработка v8 Развлечения, искусство, спорт Бесплатно (free)

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

15.04.2016    37758    Baksheev-Nikita    54    

ВИДы на жительство. Использование внешних источников данных в прикладных задачах

Внешние источники данных v8 Бесплатно (free)

На Infostart Meetup Novosibirsk выступил ведущий разработчик МКК «Ваш Инвестор» Вадим Фоминых. Он на практических примерах показал коллегам, как его команда использует внешние источники данных в прикладных задачах, призвал не отказываться от этого инструмента и объяснил – почему.

19.04.2021    1664    Shmell    4    

1С в мобильном и лицензионная политика

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

На екатеринбургском онлайн-митапе заместитель директора НП ППП и руководитель мобильного направления в фирме «1С» Анна Лавринова рассказала о мире мобайла в сфере 1С, примерах мобильных приложений и особенностях их лицензирования.

31.03.2021    1000    1C_lava    4    

Бухгалтерия 3.0. Ошибка загрузки билетов из Smartway

Внешние источники данных v8::БУ 8.3.14 БП3.0 Россия БУ Бесплатно (free)

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

18.03.2021    320    maria_vl    1    

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

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

Корпоративный мессенджер, пробы пера на мобильной платформе 1С.

18.12.2017    22123    starik-2005    70    

Как избавиться от горизонтальных серых разделителей (полосок) между элементами в форме мобильного приложения

Мобильная разработка Работа с интерфейсом v8::Mobile Бесплатно (free)

На профильных форумах часто возникает вопрос, как избавиться от горизонтальных полос-разделителей между элементами на формах мобильного приложения. Часто предлагают использовать декорации или html-поле. Однако, есть простое решение.

17.03.2021    925    Moroz2009    4    

Правила обмена больше не нужны

Внешние источники данных Обмен через XML Перенос данных из 1C8 в 1C8 Распределенная БД (УРИБ, УРБД) WEB v8 Бесплатно (free)

Есть несколько общепринятых подходов к написанию обмена между 1С-системами, каждый из которых упирается в длительное изучение технологии, мучительную отладку правил конвертации и написание большого количества сервисного кода, в котором потом тяжело разобраться. О принципах работы универсального фреймворка liteExchange, который реализует быстрые обмены между 1С и внешними системами, и берет на себя всю техническую обвязку по стандартному преобразованию данных, на INFOSTART MEETUP Saint Petersburg.Online рассказал Николай Крылов.

17.03.2021    9638    Nikola23    36    

Большой пак дополнений март 2021: регламентные задания, распознавание дат и чисел, оповещения, поля с автозаполнением и многое, многое другое

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

Релиз с огромным количеством дополнений. Дополнение к основной статье Simple UI: https://infostart.ru/public/1153616/ Перечень изменений: 1. Оптическое распознавание дат в разных форматах 2. Оптическое распознавание чисел в разных форматах 3. Запуск кода из кода синхронно/асинхронно в фоне (Python) 4. Регламентные задания с расписанием от 1 мс 5. Всплывающие сообщения 6. Уведомления из любого контекста простые 7. Уведомления с ответом (для Anroid начиная с Oreo) 8. Поле ввода с событием на каждый символ 9. Поле ввода с автозаполнением (предварительно передается список) 10. Новый настраиваемый диалог ввода и работа с ответами диалога 11. Работа с речью и голосом из любого контекста А также изменения в документации. В данную статью не вошло описание системы группового администрирования и мониторинга.

11.03.2021    1932    informa1555    20    

Отладка конфигураций на мобильной платформе Промо

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

Настройка и подключение отладчика для отладки конфигураций на мобильной платформе.

25.09.2016    52763    spezc    50    

Большой пакет дополнений для Simple UI - январь 2021

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

В этот раз множество полезных нововведений в мобильной платформе, исправлено все, о чем просили, а также прибрался в документации, актуализировал конструктор на 1С (с учетом текущих изменений, а также скорого выхода стационарного клиента) и переснял видео по-новому. Конструктор на платформе 1С:Предприятие 8.3.13.1865. Данный пост является дополнением к статье  https://infostart.ru/public/1153616/

22.01.2021    965    informa1555    9    

DaJet Exchange: обмен данными с 1С (часть 1)

Внешние источники данных v8 Бесплатно (free)

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

11.01.2021    3439    zhichkin    14    

Мобильный HTML-интерфейс, взгляд изнутри

Работа с интерфейсом Мобильная разработка v8::Mobile Бесплатно (free)

Для реализации красивого интерфейса в мобильном приложении 1С удобно использовать возможности стека HTML / CSS / JavaScript. О том, как построить отзывчивый HTML-интерфейс с перехватом событий и выполнением JavaScript-кода в поле HTML-документа на форме 1С, рассказал сотрудник отдела мобильной разработки в компании «1С-Рарус» Роман Сухоруков.

28.12.2020    3293    ingeneerz@gmail.com    10    

HTTP-сервисы в 1С Предприятие 8.3 Промо

Практика программирования WEB v8 1cv8.cf Абонемент ($m)

В платформе 1С Предприятие 8.3 появилась возможность создавать HTTP-сервисы. Пример работы.

1 стартмани

17.09.2014    91566    544    vano-ekt    59    

Младший брат Большого Брата? (управляем мобильным устройством с компьютера)

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

Сначала эта публикация задумывалась как небольшой обзор средств для облегчения жизни при мобильной разработке на 1С, но постепенно она переросла в ответ на вопрос, заданный в статье на Хабре: "Кто в доме хозяин: ПК, ноутбук, смартфон или… планшет?" Спойлер: это не они. Тех, кто заинтересовался, прошу под кат…

14.12.2020    1311    capitan    6    

Сравнение мобильных технологий сканирования штрихкодов

Сканер штрих-кода Мобильная разработка v8 Бесплатно (free)

В статье приведены результаты тестирования и сравнение популярных мобильных технологий сканирования штрихкодов

23.11.2020    1631    MaramOyka    6    

Ноябрьский релиз Simple UI: списки карточек для всех режимов работы и много полезного

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

В новом релизе Simple UI добавлены режимы представления информации в виде настраиваемого списка карточек (в альтернативу таблице или списку) для любых источников – формируемого из 1С, оффлайн и из REST-интерфейса напрямую. Расширен набор методов для обработки JSON в самостоятельном режиме и настройки для работы с HTTP запросами напрямую (не через настройки) а также множество других полезных нововведений. Основная статья по Simple UI : https://infostart.ru/public/1153616/ Платформа 1С: Предприятие для демо-базы : 8.3.14.1865.

09.11.2020    1431    informa1555    2    

Кэширование COM-соединения. Три способа Промо

Практика программирования Перенос данных из 1С7.7 в 1C8.X Внешние источники данных WEB v8 Россия Бесплатно (free)

Статья о трех способах кэширования COM-соединения в 1С:Предприятии 8.x.

11.04.2013    42689    YPermitin    41    

[mobile] Переносим HTML интерфейс на 1С

Работа с интерфейсом Мобильная разработка v8 v8::Mobile 1cv8.cf Бесплатно (free)

Разберем методы переноса HTML интерфейса на 1С на примере реализации нижнего меню для мобильного приложения. Сравним методы между собой. Данные методы можно применять не только для мобильной разработки, но и для веб-клиента и т.д

02.11.2020    7327    leobrn    66    

Обзор мобильного приложения 1С и лицензионная политика

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

Все больше задач и бизнес-процессов решается с помощью мобильных приложений. Одно подсчитывает калории, другое – показывает руководителю, сколько сделок заключено по итогам месяца, третье – используется как канал связи между клиентом и заказчиком. О плюсах разработки мобильных приложений на платформе 1С рассказала заместитель директора НП ППП, координатор по вопросам защиты ИС 1С Анна Лавринова.

12.10.2020    5859    1C_lava    50    

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

Внешние источники данных v8 УНФ Бесплатно (free)

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

12.10.2020    1031    malikov_pro    0    

Перенос данных из учетных программ Парус в конфигурации 1С Промо

Внешние источники данных v7.7 v8 БП2.0 ЗУП2.5 ЗКБУ БГУ 1С7:Бух 1С7:ЗиК 1С7:ББУ Россия БУ Госбюджет Бесплатно (free)

Статья посвящена анализу процессов переноса данных из учетных программ Парус в конфигурации 1С.

05.11.2012    53372    sklowsky    16    

Воспроизведение аудиофайлов в мобильной платформе

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

Корректное добавление аудиоинформации при сборке мобильного приложения.

17.09.2020    1064    QuirkyKot    1    

Тест скорости работы мобильной платформы 1С

Мобильная разработка Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

С помощью этого приложения вы можете измерить производительность своего устройства, используя для этого мобильную платформу 1С:Предприятие. Набор действий теста полностью повторяет аналогичный тест для стационарных ПК, поэтому результаты сравнимы.

14.09.2020    1713    capitan    25    

Team: Торговля + Склад + Производство (Мобильное приложение на платформе 1С)

Мобильная разработка Производство готовой продукции (работ, услуг) Учет ТМЦ Управление торговлей v8::Mobile УУ Бесплатно (free)

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

14.09.2020    2176    naypak    10    

Сканируем без сканера или MXL to JPG Промо

Внешние источники данных Универсальные функции Печатные формы документов v8 1cv8.cf Бесплатно (free)

Хотите конвертировать документы в формат изображения менее чем за минуту, не имея сканера? Тогда эта статья для вас.

24.05.2012    34612    shakmaev    47    

Мобильное приложение Goods info

Мобильная разработка v8 УТ11 Оптовая торговля, дистрибуция, логистика Бесплатно (free)

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

04.09.2020    1895    hpi    9    

Авто-ежедневник (мобильное приложение на платформе 1С)

Мобильная разработка v8::Mobile Автомобили, автосервисы Бесплатно (free)

С помощью этого мобильного приложения вы сможете отслеживать затраты на содержание автомобиля, узнать стоимость километра пробега, средний расход топлива и получать уведомления о приближающемся сроке замены деталей или прохождении ТО. Приложение будет развиваться с учетом общих пожеланий и надеюсь оно вас не разочарует.

25.08.2020    3436    capitan    29    

Загрузка данных из Algoritm-S в конфигурацию "Бухгалтерия предприятия 3.0 (3.0.79.21) "

Розничная торговля Внешние источники данных v8 БП3.0 Розничная и сетевая торговля (FMCG) Фармацевтика, аптеки Россия Бесплатно (free)

В статье представлен шаблон обработки для загрузки некоторых данных из программы Algoritm-S в конфигурацию "Бухгалтерия предприятия 3.0 (3.0.79.21)

04.08.2020    1676    RPGrigorev    0    

Чат и задачи с интерактивными объектами через PostgREST. Новый подход к управлению бизнес-процессами и интерфейсу

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

В новой версии Simple UI появилась возможность организовать свой корпоративный мессенджер и список задач с 1С, но не напрямую, а через PostgreSQL, чтобы не забивать 1С всякими пустяками. Причем не просто чат и задачи, а с множеством уникальных фишек: прием задач прямо из ленты чата, формат статусов в сообщении, старт процессов из задач с предопределенным состоянием переменных и сохранение переменной в задаче, отправка сообщений и задач из процессов и другое. Т.е. это такой новый способ доставки и контроля задач до исполнителя. Кроме того, в этом паке обновлений еще полный инструментарий для работы с JSON.

17.07.2020    3219    informa1555    8    

Отладка мобильного клиента

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

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

07.07.2020    4420    DmitrySinichnikov    6    

Интеграции с сервером SQL. Быстро и просто

Интеграция Внешние источники данных v8 1cv8.cf Бесплатно (free)

Решаем вопросы экспорта/импорта данных в базы отличного от 1С происхождения.

06.07.2020    3548    Infector    4    

Структура обработки загрузки цен и остатков поставщика с примерами и комментариями

Внешние источники данных WEB v8 1cv8.cf Россия Бесплатно (free)

В статье опишу структуру обработки по загрузке цен и остатков от поставщика с примерами.

27.06.2020    2108    malikov_pro    0    

Как сделать телефонный справочник компании на мобильном телефоне для iOS

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

При разработке мобильных приложений под iOS возникает много трудностей, решение которых не очевидно. Как упростить разработку под iPhone и снизить стоимость лицензий Apple с учетом лицензионной политики 1С на конференции Infostart Event 2019 Inception рассказал главный специалист ФАУ «РМРС» Ракитин Александр.

26.06.2020    3295    rujiy_kot    5    

Диадок. Подключаемый модуль. Отладка

Интеграция Внешние источники данных v8 1cv8.cf Бесплатно (free)

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

17.06.2020    10275    John_d    14    

Мобильный клиент для сканирования QR-кодов и штрихкодов и отправки их на сервер

Сканер штрих-кода Мобильная разработка v8::Mobile Бесплатно (free)

В статье рассмотрены варианты реализации мобильного сканера.

10.06.2020    7713    MaramOyka    6    

Безопасность мобильных приложений 1С, взгляд по диагонали

Информационная безопасность Мобильная разработка v8::Mobile 1cv8.cf Бесплатно (free)

Что приходит первое в голову при словах «1С Предприятие»? Даже тем, кто далек от ИТ, представляется большущий компьютер (а тем, кто недалек, стойка двух-юнитных серверов), рядом слушает музыку сервера (как вариант просто музыку) сисадмин, за стеной в опен-спейсе менеджеры принимают заказы и бухгалтерия, сдающая отчетность. «Зарплата, зарплата!»: слышны их радостные крики. «И кадры»: уточняет HR. Да, все верно. Это 1С. Кто в теме, напомнит про крики не совсем приятные: «Все тормозит! Сделайте что-нибудь, #тыжпрограммист». И борющихся за живучесть ИТ-шников. В обычном офисном потоке дел, редко кто задумывается о безопасности. А тех, кто задумывается, прошу под кат…

05.06.2020    4378    capitan    33    

Как мы загружаем данные в "Центр управления кассами Магнита"

Внешние источники данных Интеграция v8 1cv8.cf Бесплатно (free)

Статья о том, как мы делали механизм загрузки больших объемов данных в "Центр управления кассами Магнита"

08.05.2020    5626    chernenko_vv    26    

Интеграция СуперОкна7 и УНФ

Интеграция Внешние источники данных v8 УНФ Россия Бесплатно (free)

Изучаем базу данных СуперОкна7, смотрим возможности передачи и получения информации.

08.05.2020    2873    vostok1.dz    3    

Синхронизация БИТ:СКУД 8 с Parsec.Net 2.5

Интеграция Внешние источники данных v8 1cv8.cf Бесплатно (free)

Настройка синхронизации БИТ:СКУД 8 с Parsec.Net.2.5, выгрузка данных из внешней системы контроля доступа.

04.05.2020    4685    RPGrigorev    0    

Хранение статистики публикаций автора сообщества Инфостарт ® (мобильное приложение И ++)

Мобильная разработка WEB v8 1cv8.cf Бесплатно (free)

Инфостарт ® достаточно удобный в плане работы со своим личным кабинетом сайт. Но программисты тем и отличаются от большинства людей, что им хочется знать больше. Поэтому появилась конфигурация 1С (она же мобильное приложение 1С) для более подробного учета статистики публикаций: рейтинг, количество просмотров, количество комментариев в динамике и в разрезах.

24.04.2020    2593    capitan    15    

Автоматизация распределительных центров компании "Вкусвилл" на мобильной платформе 1С

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

Мобильная платформа 1С многим кажется неготовой к масштабным проектам. Ее опасаются использовать из-за нестабильности работы, багов, проблем со связью, сложностью при подборе оборудования и драйверов. Но доклад руководителя проектов в компании «Автоматизация и Консалтинг» Алексея Матюшкина на конференции INFOSTART EVENT 2019 Inception показал, что не все так плохо. За последние несколько лет мобильная платформа 1С сильно эволюционировала, ее функционал расширился, и теперь это хорошая основа для самого смелого проекта автоматизации.

13.04.2020    6687    Potroshitel    21    

Диеты: качество и креатив нового уровня

Пользователю системы Мобильная разработка v8 Развлечения, искусство, спорт Бесплатно (free)

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

06.04.2020    2584    Baksheev-Nikita    1    

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

Мобильная разработка v8::Mobile 1cv8.cf Казахстан Бесплатно (free)

Здесь представлены методы, которые помогут повысить удобство использования приложений на мобильной платформе. Разработка велась на платформе 8.3.13.64, но, возможно, они помогут и тем, кто разрабатывает на более новой.

03.04.2020    5583    user602678_maxipunchik    13    

Как я собрал для себя высокопроизводительный и бесплатный облачный бекенд для 1С на PosgreSQL + PostgREST

Производительность и оптимизация (HighLoad) WEB Интеграция Мобильная разработка Администрирование веб-серверов v8 Бесплатно (free)

В этой статье я расскажу о проблемах бека для мобильных приложений или другого фронта, который требует производительности, быстрой реакции и отказоустойчивости, и как я решил это благодаря opensource проекту PostgREST и СУБД Postgre SQL 12. Проведу простой тест производительности для сравнения 1С с данным решением. Это может быть полезно всем, кто разрабатывает мобильные приложения либо фронтсайд-приложения для 1С на чем угодно - на мобильной платформе или на нативном языке или на Simple UI. И также обзор новых функций SimpleUI для связи с этим бекендом.

31.03.2020    15322    informa1555    35