Давайте подружим 1С и Android. Часть 2 - авторизуемся в 1С

Публикация № 463387

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

Авторизуемся в 1С.

Вспомним основную задачу (часть 1):

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


В этой части:

  • Создадим приложение, кастомизированое под 1С
  • Будем выполнять авторизацию в базе 1С.

Касательно веб-сервисов рассмотрим:

  • Вызов операции сервиса без параметров.
  • Вызов операции сервиса с параметрами примитивного типа.

Начнем

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

Какие осложнения нам это дает:

1) Список пользователей должен быть динамическим

2) Пароли на устройстве хранить нельзя

3) Для обращению к списку пользователей ИБ нужны административные права

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

Создадим:

  • Пользователя "WSuser", который получит логины.
  • Регистр сведений "ПользователиМобильногоКлиента" с одним-единственным измерением "Пользователь", в котором будем хранить список пользователей для авторизации на мобильном клиенте
  • XDTO-пакет "AcceptingOrdersPackage" с URI "AcceptingOrdersService"
  • Веб-серис "AcceptingOrders", определим 2 операции "GetLoginList" и "Login" первая, соответственно, будет получать список пользователей, вторая проверять имя пользователя и пароль.
  • Роль "СлужебныйПользовательМобильногоКлиента", у которой есть доступ к обеим операциям сервиса, право чтения регистра "ПользователиМобильногоКлиента" и справочника "Пользователи", право администрирования.

Теперь наш пакет и веб-сверис имеют такой вид:

 

 

Операция GetLoginList:

Функция GetLoginList()

	Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ПользователиМобильногоКлиента.Пользователь.ИдентификаторПользователяИБ КАК ИдентификаторПользователяИБ,
	|	ПользователиМобильногоКлиента.Пользователь.Наименование КАК Наименование
	|ИЗ
	|	РегистрСведений.ПользователиМобильногоКлиента КАК ПользователиМобильногоКлиента");
	Выборка = Запрос.Выполнить().Выбрать();
	
	xdtoТипОтвета = ФабрикаXDTO.Тип("AcceptingOrdersService", "LoginList");
	xdtoТипЛогин = ФабрикаXDTO.Тип("AcceptingOrdersService", "Login");
	xdtoОтвет = ФабрикаXDTO.Создать(xdtoТипОтвета);	
	
	Пока Выборка.Следующий() Цикл
		Если Не ЗначениеЗаполнено(Выборка.ИдентификаторПользователяИБ) Тогда
			Продолжить;
		КонецЕсли;	
		xdtoЛогин = ФабрикаXDTO.Создать(xdtoТипЛогин);
		xdtoЛогин.Description = Выборка.Наименование;
		xdtoЛогин.ID = Строка(Выборка.ИдентификаторПользователяИБ);
		xdtoОтвет.Login.Добавить(xdtoЛогин);
	КонецЦикла;	
	
	Возврат xdtoОтвет;
		
КонецФункции

Операция Login:

Функция Login(ID, Password)

	xdtoТипОтвета = ФабрикаXDTO.Тип("AcceptingOrdersService", "LoginResult");
	xdtoОтвет = ФабрикаXDTO.Создать(xdtoТипОтвета);	
	xdtoОтвет.Name = "";
	
	ИдентификаторПользователя = Новый УникальныйИдентификатор(ID);	
	ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ИдентификаторПользователя);
	Если ПользовательИБ <> Неопределено
		И ПользовательИБ.СохраняемоеЗначениеПароля = СтрЗаменить(Password, Символы.ПС, "") Тогда
		
		xdtoОтвет.Name = ПользовательИБ.Имя;
		xdtoОтвет.Result = Истина;
		Возврат xdtoОтвет;
		
	КонецЕсли;
	
	xdtoОтвет.Result = Ложь;
	Возврат xdtoОтвет;
	
КонецФункции

Серверная часть готова, переходим к Android

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

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

Что важно понимать при программировании обращения к сетевым ресурсам:

В андроид (Java) есть понятие потоков , параллельно работающих процессов. Основной поток программы управляет главной активностью (окно программы по-простому) и нельзя в основном потоке выполнять действия, которые будут "занимать" его. Таким образом, для обращения к веб-сервису мы должны создать дополнительный поток, Thread (я бы сказал, что это очень похоже на фоновое задание). Для того, чтобы получить ответ используется обработчик, Handler (как ОбработкаОповещения).

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

Рассмотрим основной класс - MainActivity

Опустим описание переменных кроме трех:

public static final int ACTION_ConnectionError = 0;
public static final int ACTION_GetLoginList = 1;
public static final int ACTION_Login = 2;

Это вспомогательные переменные, имеющие фиксированное значение.

1) Обработчик создания

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// Инициализируем вспомогательный класс
uiManager = new UIManager(this);
// Инициализируем менеджер настроек
preferences = PreferenceManager.getDefaultSharedPreferences(this);
// Читаем идентификатор последнего выбранного пользователя из настроек
wsParam_LoginID = preferences.getString("LoginID", "");
// Читаем настройки подключения
initiateConnectionSettings();
// Инициализируем обработчик ответа от сервиса
soapHandler = new incomingHandler(this);

if (soapParam_URL.equals(""))
// Первый запуск, открываем настройки
openSettings();
else {
// Выводим на экран форму авторизации
setContentView(R.layout.activity_main);
// Запрашиваем список пользователей
startExchange(ACTION_GetLoginList);
}
}

Думаю, комментарии излишни

2) Класс для обработки сообщений от сервиса (от параллельного потока)

private static class incomingHandler extends Handler {

private final WeakReference<MainActivity> mTarget;

// Конструктор
public incomingHandler(MainActivity context){
mTarget = new WeakReference<>(context);
}

@Override
public void handleMessage(Message msg) {

MainActivity target = mTarget.get();
switch (msg.what) {
case ACTION_ConnectionError:
uiManager.showToast("Ошибка" + getSoapErrorMessage());
break;
case ACTION_GetLoginList:
target.initiateLoginList();
break;
case ACTION_Login:
target.checkLoginResult();
break;
}

}
}

Метод "handleMessage" как раз выполняет обработку сообщения, тело сообщения - msg.what. В зависимости от значения выполняем обработку. Как мы видим, при получения сообщения об ошибке соединения, выводится сообщение. О том как оно формируется - ниже.

3) Обработчик заполнения списка пользователей после получения ответа от сервиса

protected void initiateLoginList(){

ArrayList<String> loginList = new ArrayList<>();
loginIDList = new ArrayList<>();

int count = soapParam_Response.getPropertyCount();
int position = 0;

for (int i = 0; i < count; i++) {
SoapObject login = (SoapObject) soapParam_Response.getProperty(i);
String name = login.getPropertyAsString("Description");
String id = login.getPropertyAsString("ID");
loginList.add(name);
loginIDList.add(id);

if (wsParam_LoginID.equals(id)){
position = i;
}

}

ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.spinner_user, loginList);

Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setPrompt("Выберите пользователя");
spinner.setAdapter(adapter);
spinner.setSelection(position);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
saveUserID(position);
}

@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});

}

Давайте обратим внимание на цикл:

 int count = soapParam_Response.getPropertyCount();
int position = 0;

for (int i = 0; i < count; i++) {
SoapObject login = (SoapObject) soapParam_Response.getProperty(i);
String name = login.getPropertyAsString("Description");
String id = login.getPropertyAsString("ID");
loginList.add(name);
loginIDList.add(id);

if (wsParam_LoginID.equals(id)){
position = i;
}

}

В 1С в xdto пакете мы определили тип "LoginList" со свойством типа "Login" и переменная "soapParam_Response" - ответ от сервиса типа "LoginList". Если в отладке 1С мы попытаемся посмотреть свойства пакета, то будет одно свойство типа "Login" и в нем только несколько экземпляров. Это несколько искажает представление о том, как работать с xdto в Android. Тут же у пакета "soapParam_Response" столько свойств с именем "Login", сколько экземпляров мы в него добавили в 1С. То есть у нас count логинов и мы столько же свойств и получаем - getProperty(i). Если бы в пакете были свойства другого типа, нам пришлось бы проверять имя свойства. В дальнейшем такие моменты тоже разберем.

Сам же экземпляр списка, полученный методом getProperty(i) имеет тип так же SoapObject. Его поля имеют строковый тип и получаются так - getPropertyAsString("Description").

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

4) Обработчик авторизации

public void checkLoginResult(){

Boolean isLoginSuccess = Boolean.parseBoolean(soapParam_Response.getPropertyAsString("Result"));

if (isLoginSuccess){
soapParam_user = soapParam_Response.getPropertyAsString("Name");
EditText wsParam_Password = (EditText) findViewById(R.id.wsParam_Password);
soapParam_pass = wsParam_Password.getText().toString();
setActivityTaskList();
}
else
uiManager.showToast("Ошибка! Неверно введен пароль");

}

Обратите внимание на то, как мы получаем реквизит типа булево - приходится парсить его из строки. Так же можно воспользоваться методом "getPrimitiveProperty". Аналогично с данными типа число.

5) Обработчик разбора ошибок сервиса

private static String getSoapErrorMessage () {

String errorMessage;

if (responseFault == null)
errorMessage = "Отсутствует соединение с сервером.";
else{
try {
errorMessage = responseFault.faultstring;
}
catch (Exception e) {
e.printStackTrace();
errorMessage = "Неизвестная ошибка.";
}
}

return errorMessage;
}

В случае ошибки при вычислении на стороне 1С в responseFault.faultstring будет полное описание ошибки.

6) Вызов операции веб-сервера

protected void startExchange(int ACTION){

SOAP_Dispatcher dispatcher = new SOAP_Dispatcher(soapParam_timeout, soapParam_URL, soapParam_user, soapParam_pass, ACTION);
dispatcher.start();

}

В качестве параметра передается переменная ACTION - номер операции для вызова сервиса.

 

Рассмотрим класс SOAP_Dispatcher - это основной класс для работы с сервисом 1С

public class SOAP_Dispatcher extends Thread {

int timeout;
String URL;
String user;
String pass;
int ACTION;
SoapObject soap_Response;
final String NAMESPACE = "AcceptingOrdersService";

public SOAP_Dispatcher(int soapParam_timeout, String soapParam_URL, String soapParam_user, String soapParam_pass, int SOAP_ACTION){
timeout = soapParam_timeout;
URL = soapParam_URL;
user = soapParam_user;
pass = soapParam_pass;
ACTION = SOAP_ACTION;
}

@Override
public void run() {

switch (ACTION) {
case MainActivity.ACTION_GetLoginList:
GetLoginList();
break;
case MainActivity.ACTION_Login:
Login();
break;
}

if (soap_Response != null) {
MainActivity.soapParam_Response = soap_Response;
MainActivity.soapHandler.sendEmptyMessage(ACTION);
} else {
MainActivity.soapHandler.sendEmptyMessage(MainActivity.ACTION_ConnectionError);
}

}

void GetLoginList(){

String method = "GetLoginList";
String action = NAMESPACE + "#AcceptingOrders:" + method;
SoapObject request = new SoapObject(NAMESPACE, method);
soap_Response = callWebService(request, action);

}

void Login(){

String method = "Login";
String action = NAMESPACE + "#AcceptingOrders:" + method;
SoapObject request = new SoapObject(NAMESPACE, method);
request.addProperty("ID", MainActivity.wsParam_LoginID);
request.addProperty("Password", MainActivity.wsParam_PassHash);
soap_Response = callWebService(request, action);

}


private SoapObject callWebService(SoapObject request, String action){

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
envelope.dotNet = true;
envelope.implicitTypes = true;
HttpTransportSE androidHttpTransport = new HttpTransportBasicAuthSE(URL, user, pass, timeout);
androidHttpTransport.debug = true;

try {
androidHttpTransport.call(action, envelope);
return (SoapObject) envelope.getResponse();
} catch (Exception e) {
e.printStackTrace();
MainActivity.responseFault = (SoapFault) envelope.bodyIn;
}

return null;
}

}

Здесь:
NAMESPACE - пространство имен, заданное в 1С
timeout,
URL,user,pass - параметры подключения
public
SOAP_Dispatcher - конструктор класса
run() - обработчик, срабатываемый при вызове метода start() экземпляра класса (смотри 6) Вызов операции веб-сервера)

Далее следуют как раз вызовы операций веб-сервисов:

void GetLoginList(){

String method = "GetLoginList";
String action = NAMESPACE + "#AcceptingOrders:" + method;

SoapObject request = new SoapObject(NAMESPACE, method);

soap_Response = callWebService(request, action);

}

Здесь:

  • method - имя операции веб сервиса как в 1С
  • AcceptingOrders - имя сервиса
  • request - вспомогательная переменная
  • callWebService - служебный метод, его можно просто скопировать.
  • soap_Response - ответ от сервиса.


Обратите внимание: переменная soap_Response имеет тип SoapObject, как и метод callWebService. Если операция веб-сервиса будет возвращать ответ примитивного типа - string или boolean, то ответ будет типа SoapPrimitive и для таких операций нужны отдельные методы и переменные.

void Login(){

String method = "Login";
String action = NAMESPACE + "#AcceptingOrders:" + method;

SoapObject request = new SoapObject(NAMESPACE, method);
request.addProperty("ID", MainActivity.wsParam_LoginID);
request.addProperty("Password", MainActivity.wsParam_PassHash);

soap_Response = callWebService(request, action);

}

Это уже вызов операции с параметрами. Ничего сложного нет, параметр вставляется так:

request.addProperty("ID", MainActivity.wsParam_LoginID);

Таким образом, класс SOAP_Dispatcher получился довольно универсальным и добавление операции на сервисе не создаст нам трудностей.

Пароли

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

Вот мы ввели пароль, теперь выполним проверку. В 1С у пользователя ИБ есть свойство "СохраняемоеЗначениеПароля" которое составляется следующим образом: вычисляется хеш-функция SHA1 от пароля и через запятую хеш-функция от пароля в верхнем регистре. Из соображений безопасности нам этот хеш надо вычислять на мобильном устройстве. Для работы с текстом есть отдельный класс Parser_Text

Вот метод, вычисляющий хеш от пароля:

public static String getPassHash(String text){ 

return base64string(sha1(text)) + "," + base64string(sha1(text.toUpperCase()));

}

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

Кастомизация

Далее не относящееся к веб-серсиам. Сделаем наше приложение более-менее похожим на 1С:

 

 

 

Чтобы все элементы управления были одинаковыми без вмешательства разработчика, в файле Styles.xml описываем стили.

<style name="AppTheme" parent="android:Theme.NoTitleBar.Fullscreen">
<item name="android:textViewStyle">@style/textViewStyle</item>
<item name="android:editTextStyle">@style/editTextStyle</item>
<item name="android:spinnerStyle">@style/spinnerStyle</item>
<item name="android:windowBackground">@color/form</item>
</style>

<style name="textViewStyle" parent="android:Widget.TextView">

<item name="android:textColor">@color/text</item>
<item name="android:textSize">@dimen/textsize</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginTop">@dimen/layout_vertical_margin</item>
<item name="android:paddingBottom">@dimen/element_vertical_padding</item>
<item name="android:paddingTop">@dimen/element_vertical_padding</item>
<item name="android:paddingLeft">@dimen/element_horizontal_padding</item>
<item name="android:paddingRight">@dimen/element_horizontal_padding</item>

</style>

<style name="editTextStyle" parent="android:Widget.EditText">

<item name="android:textColor">@color/text</item>
<item name="android:textSize">@dimen/textsize</item>
<item name="android:background">@drawable/edit</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginTop">@dimen/layout_vertical_margin</item>
<item name="android:singleLine">true</item>

</style>

<style name="spinnerStyle" parent="android:Widget.Spinner">

<item name="android:textColor">@color/text</item>
<item name="android:textSize">@dimen/textsize</item>
<item name="android:background">@drawable/spinner</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:dropDownWidth">wrap_content</item>

</style>

Все необходимые ресурсы есть в архиве с проектом.

 

В следующей части:

  • Поработаем с последовательностью xdto (ПоследовательностьXDTO в 1С)
  • Посканируем при помощи камеры устройства
  • Вызовем операцию сервиса с параметром типа xdtoОбъект.

Каждый раз я буду выкладывать архив проекта, если нет необходимости - не качайте

Скачать файлы

Наименование Файл Версия Размер
Архив проекта AndroidStudio

.7z 4,73Mb
08.03.16
78
.7z 4,73Mb 78 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. infosoft-v 463 08.03.16 19:24 Сейчас в теме
Отличная статья. Спасибо.
2. Ann.prog1C 08.03.16 21:48 Сейчас в теме
3. flyer 230 09.03.16 07:33 Сейчас в теме
продолжайте слежу за темой
4. gudun_ku 61 09.03.16 09:28 Сейчас в теме
Отличная статья. Код под Андроид хорош, оценил, что легко переложить на net cf, чем я и займусь как-нибудь. Жду продолжения, про сканирование.
5. Ibrogim 1151 09.03.16 09:49 Сейчас в теме
Вот теперь ставлю плюс.

Вы кстати вдохновили меня тоже статью написать)
6. WKBAPKA 220 09.03.16 10:30 Сейчас в теме
о, отличная статья. спасибо
7. Yashazz 3269 09.03.16 16:14 Сейчас в теме
Вообще не очень понимаю, нафига это всё... Мобильное приложение - кривоватое побочное дитя попытки 1С угнаться за модой, которое однажды канет в прошлое, как веб-расширения и тому подобная мутота... Охота вам силы тратить.
8. solarisman 136 09.03.16 20:31 Сейчас в теме
(7) Yashazz, Не понял, при чем тут мобильное приложение 1С? Приложение нативное, написанное на Java. По поводу
канет в прошлое
- дык все в прошлое канет, что же теперь, ничего не делать? Google задумывается переходить с Java и заглядывается на другие языки. Никто же разработку не бросает.
Designer1C; +1 Ответить
9. dj_serega 371 10.03.16 08:15 Сейчас в теме
10. solarisman 136 10.03.16 09:00 Сейчас в теме
(9) dj_serega, Вообще не понял, о чем речь здесь? HTTP - протокол передачи данных, SOAP - протокол доступа к объектам, который использует HTTP.
11. solarisman 136 10.03.16 09:36 Сейчас в теме
Коллеги, давайте по существу, хочется конструктивной критики.
13. DitriX 1812 11.03.16 09:54 Сейчас в теме
(11) тут говорить особо не очем, то о чем вы пишете - говорили еще в 2012 году :)
Лучше вы не написали, чем было, новые механизмы (http реквесты, odata, json) - не использовали. И я в упор не пойму почему.
Как учебный материал - ваши статьи вобщем то тоже бесполезны (ИМХО). Это скорее смахивает на записки самому себе. А люди ставят плюсы просто потому что тут 1С+Андроид :)

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

P.S. Без обид, просто от таких статей все 1С ники и думают, что другие языки и направления - очень сложны в освоении.
dj_serega; +1 3 Ответить
14. solarisman 136 11.03.16 10:41 Сейчас в теме
(13) DitriX, А на что обижаться, все правильно написано.
Конечно, мне до ваших статей далеко, но и на фурор я не рассчитывал.
19. DitriX 1812 12.03.16 06:15 Сейчас в теме
(14) Ни в коем случае я не пытаюсь тут устроить дедовщину.
Наоборот, если вы таки хотите сделать качественные статьи и для себя новое узнать, то я готов вам даже помочь с написанием, т.е. подсказать что лучше писать, в каком виде подавать и т.д.
Просто обидно смотреть когда люди тратят свое время на написание сомнительных вещей.
Поэтому если вы заинтересованы написать такой цикл статей - то добро пожаловать ко мне в личку.

(17) (http реквесты, odata, json) оно лучше, но у каждого своя задача.

Вобщем если решите таки что то сделать из реально актуальных вещей - я готов вам помочь, я не жадный, у меня уже и так пол инфостарта в скайпе :)
15. Yashazz 3269 11.03.16 17:19 Сейчас в теме
(13) DitriX, а ещё от таких статей на ровном месте растёт "рейтинг"))) И потом начинаются распальцовки)
17. solarisman 136 11.03.16 22:14 Сейчас в теме
(15) Yashazz, Ладно, ладно, еще одну статью напишу в завершение и все, честно-честно. А то ишь, покусился на святой рейтинг топ-авторов.
Вот честно, как дети. Напишите то же самое приложение с использованием
(http реквесты, odata, json)
покажите что оно лучше во всем и тогда я скажу что я опозорился и статьи удалю вообще
21. WKBAPKA 220 15.03.16 10:01 Сейчас в теме
(13) DitriX, я поддержу автора. Для меня, как человека, который изучает Андроид, эта статья очень полезна. Меня больше интересует не подача текста, а примеры, которые автор очень любезно выложил.
44. Denzip 22.03.19 22:52 Сейчас в теме
(11)отличная статья. Какая тут критика?
Я давно искал способ написать интернет магазин со связью 1с. По ходу нашёл точку опоры!
Огромное Вам спасибо за труды. Это многого стоит
12. Nenaviju1C 10.03.16 11:05 Сейчас в теме
Нечто подобное тоже себе организовал:
База (если так можно сказать) 1с - самописная конфиг-я для формирования ежемесячных отчетов по счетчикам гор/хол воды для ЖКХ с рассылкой определенную дату по регламенту от своего имени (*@mail.ru) на почту ЖКХ.

Мобильное приложение написано на java (Android Studio). Транспорт использую тот же - WS (soap).
Писал ЭТО для себя от нечего делать :) ... да и надоело счета собирать в папке на компе вручную ))

По потоку:
Из базы передается список XDTO состоящий из GUID "документа-отчета" и даты отчета.
Каждая строка содержит список XDTO (номер счетчика + замеры до и после)

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

При открытии layouta документа (в т.ч. и нового) уже установлены номера счетчиков - только надо внести показания и все.
Как то так ...

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

Что за консерватизм?? Мобильные устройства в бизнесе используются все больше и больше.
"Мутота" - это для тех кто не знает КАК.
16. Yashazz 3269 11.03.16 17:21 Сейчас в теме
(12) Nenaviju1C,
Что за консерватизм?? Мобильные устройства в бизнесе используются все больше и больше.
"Мутота" - это для тех кто не знает КАК.

Ясно. Внимательно читать не умеете. Я же не про мобильные устройства "вообще" написал. Я про мобильное приложение 1С. И кое-что о перспективах оного знаю.
18. solarisman 136 11.03.16 22:34 Сейчас в теме
(16) Yashazz,
И кое-что о перспективах оного знаю.

Поделитесь секретом-то. А то я понять не могу, почему у нас региональный пищевой холдинг автоматизируется на мобильной платформе.
20. CheBurator 3422 12.03.16 06:54 Сейчас в теме
(18) как заавтоматизируется и выйдет в плановую работу - отпишитесь. порадуемся или поплачем вместе...
22. mkostya 28 24.03.16 18:24 Сейчас в теме
Все отлично, заработало. Жду следующей статьи.
Там будет и критика и предложения))
23. solarisman 136 30.03.16 15:29 Сейчас в теме
(22) Значит буду делать работу над ошибками :)

Постараюсь написать статью 2-3 числа, был в командировке и все не разберусь с текущими задачами
24. agent00mouse 205 14.03.17 08:26 Сейчас в теме
2-3 Апреля? Долго, ну да ладно, ждём. Пилю приложение на базе 1С мобильного приложения, Да, функционал/идею протестировать годно, что серьёзнее и удобнее - нативный Java ведра нужен. т.ч. жду следующей статьи. Спасибо за разработку.
И вопрос, soap конечно удобна, сам через неё работаю, но быстрее и главное проще же дёргать 1С за URL через HTTPСервисы, и как решается вопрос безопасного подключения(ssl)?
Кому интересно, HTTPСервисы (I5-2500 (3,3GHz), 8Gb RAM, Пустая процедура ответа ~ 20000 подключений одновременно, с живой процедурой думаю цифра просядет)
25. user706108_prog 02.05.17 16:20 Сейчас в теме
Если в 1С не создавать пакет XDTO, то из мобильного приложения нельзя будет подсоединиться к веб-сервису 1С? В чем суть пакета XDTO?
Тимур, а Вы в своем мобильном приложении какие библиотеки используете?
ksoap2 используете или нет?
26. Serg O. 187 11.08.17 15:33 Сейчас в теме
главная идея вообще - БОМБА!
1) мобильная платформа 1С - не нужна вообще!

2) вместо этого - делаем красивое и простое приложение...
в среде разработки - Android Studio

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

со стороны 1С - всё понятно, делаем web-сервисы и публикуем на "где-нибудь"

мы тоже до этого "дошли" не так давно... один чел. у нас на Android Studio пишет
другой - web-сервисы для него клепает...

для программистов 1С - конечно трудновато "вспониминать" универ - создавать классы, методы, java язык с кучей скобок,
вспоминать основы ООП...
но визуальная среда - Android Studio - достаточно легка и интуитивно-понятна и многие вещи делаются по щелчку мыши
в youtube - есть циклы обучения по Android Studio - я пару вечеров посидел... и вроде "вкурил" тему...

Более того, Android Studio имеет автоматическую синхронизацию проекта в github
Предлагаю проект выложить в Github - и далее там развивать эту тему...

для "живого" проекта - наверное все-таки лучше приглашать отдельного java-программиста
27. WKBAPKA 220 11.08.17 19:07 Сейчас в теме
(26) круто конечно пишешь, но не все там просто в этом Андроид ;)
все же Андроид будет покруче и посложнее 1С в изучении :)
и поверь, сам язык Java фигня, а вот API изучить, приемы работы....
за пару дней вьехать, это ты конечно немножечко преувеличил
28. WKBAPKA 220 11.08.17 19:08 Сейчас в теме
(26) а что там в студио по щелчку мыши можно сделать?
layout-файл создать?
;)
29. WKBAPKA 220 11.08.17 19:09 Сейчас в теме
(26) мобильная платформа знаешь где нужна, когда тебе надо сделать приложение со всеми этими иерархическими справочниками и т.п.
поверь, на андроид ты таких готовых view не найдешь ... в этом сила мобильного приложения.
а если тебе надо написать приложени чисто под андроид и специфичное, то согласен, мобильная платформа тут не нужна
silberRus; +1 Ответить
30. silberRus 67 12.09.17 11:50 Сейчас в теме
Поставил плюс.

Пожелание:

- сделать на http сервисе, через rest+json. SOAP + XML все таки громоздкий, как по отношению к данным так и по отношению к реализации.
- добавить юнит тесты
49. WKBAPKA 220 01.11.19 12:38 Сейчас в теме
31. ECartman 2 12.02.18 11:34 Сейчас в теме
Настроил сервер 1с по инструкции. Скачал проект для Android. Теперь если я захожу браузером по ссылке, то получаю xml файл - т.е. вроде со стороны 1с все работает. Но вот если запускаю apk на андроиде то получаю сообщение "невозможно соединиться с сервером". Подскажите куда копать?
32. ECartman 2 12.02.18 12:58 Сейчас в теме
(31) В классе MainActivity
в параметрах подключения проставляю

public void saveSettings(View v){

    soapParam_server    = etSoapServer.getText().toString();
    soapParam_database  = etSoapDatabase.getText().toString();
    soapParam_user      = etSoapUser.getText().toString();
    soapParam_pass      = etSoapPass.getText().toString();
    soapParam_timeout   = Integer.parseInt(etSoapTimeout.getText().toString());
    soapParam_URL       = "http://" + soapParam_server + "/" + soapParam_database + "/ws/AcceptingOrders.1cws?wsdl";

    SharedPreferences.Editor editor = preferences.edit();
    editor.putString("server", soapParam_server);
    editor.putString("database", soapParam_database);
    editor.putString("user", soapParam_user);
    editor.putString("pass", soapParam_pass);
    editor.putString("URL",        soapParam_URL);
    editor.putInt("timeout", soapParam_timeout);
    editor.apply();

    setContentView(R.layout.activity_main);
    startExchange(ACTION_GetLoginList);

}

protected void initiateConnectionSettings(){

    soapParam_server    = preferences.getString("server", "192.168.0.25");
    soapParam_database  = preferences.getString("database", "AcceptingOrders");
    soapParam_user      = preferences.getString("user", "WSUser");
    soapParam_pass      = preferences.getString("pass", "1234");
    soapParam_URL       = preferences.getString("URL", "http://192.168.0.25/AcceptingOrders/ws/AcceptingOrders.1cws?wsdl");
    soapParam_timeout   = preferences.getInt("timeout", 10);

}
Показать
33. ECartman 2 12.02.18 13:08 Сейчас в теме
(32) Если обращаться через браузер к урлу "http://192.168.0.25/AcceptingOrders/ws/AcceptingOrders.1cws?wsdl", то получаю следующий xml- файл

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap12bind="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="AcceptingOrders" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="AcceptingOrdersService" xmlns:xsd2="AcceptingOrders" name="AcceptingOrders" targetNamespace="AcceptingOrders">
<types>
<xs:schema xmlns:tns="AcceptingOrdersService" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="AcceptingOrdersService" attributeFormDefault="unqualified" elementFormDefault="qualified">
<xs:complexType name="Login">
<xs:sequence>
<xs:element name="ID"/>
<xs:element name="Description"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="LoginList">
<xs:sequence>
<xs:element name="Login"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="LoginResult">
<xs:sequence>
<xs:element name="Result"/>
<xs:element name="Name"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs1="AcceptingOrdersService" xmlns:xs2="AcceptingOrders" targetNamespace="AcceptingOrders" elementFormDefault="qualified">
<xs:import namespace="AcceptingOrdersService"/>
<xs:element name="GetLoginList">
<xs:complexType>
<xs:sequence/>
</xs:complexType>
</xs:element>
<xs:element name="GetLoginListResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="return" type="xs1:LoginList"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Login">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" type="xs:string"/>
<xs:element name="Password" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="LoginResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="return" type="xs1:Login"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<message name="GetLoginListRequestMessage">
<part name="parameters" element="tns:GetLoginList"/>
</message>
<message name="GetLoginListResponseMessage">
<part name="parameters" element="tns:GetLoginListResponse"/>
</message>
<message name="LoginRequestMessage">
<part name="parameters" element="tns:Login"/>
</message>
<message name="LoginResponseMessage">
<part name="parameters" element="tns:LoginResponse"/>
</message>
<portType name="AcceptingOrdersPortType">
<operation name="GetLoginList">
<input message="tns:GetLoginListRequestMessage"/>
<output message="tns:GetLoginListResponseMessage"/>
</operation>
<operation name="Login">
<input message="tns:LoginRequestMessage"/>
<output message="tns:LoginResponseMessage"/>
</operation>
</portType>
<binding name="AcceptingOrdersSoapBinding" type="tns:AcceptingOrdersPortType">
<soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetLoginList">
<soapbind:operation style="document" soapAction="AcceptingOrders#AcceptingOrders:GetLoginList"/>
<input>
<soapbind:body use="literal"/>
</input>
<output>
<soapbind:body use="literal"/>
</output>
</operation>
<operation name="Login">
<soapbind:operation style="document" soapAction="AcceptingOrders#AcceptingOrders:Login"/>
<input>
<soapbind:body use="literal"/>
</input>
<output>
<soapbind:body use="literal"/>
</output>
</operation>
</binding>
<binding name="AcceptingOrdersSoap12Binding" type="tns:AcceptingOrdersPortType">
<soap12bind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetLoginList">
<soap12bind:operation style="document" soapAction="AcceptingOrders#AcceptingOrders:GetLoginList"/>
<input>
<soap12bind:body use="literal"/>
</input>
<output>
<soap12bind:body use="literal"/>
</output>
</operation>
<operation name="Login">
<soap12bind:operation style="document" soapAction="AcceptingOrders#AcceptingOrders:Login"/>
<input>
<soap12bind:body use="literal"/>
</input>
<output>
<soap12bind:body use="literal"/>
</output>
</operation>
</binding>
<service name="AcceptingOrders">
<port name="AcceptingOrdersSoap" binding="tns:AcceptingOrdersSoapBinding">
<documentation>
<wsi:Claim xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/" conformsTo="http://ws-i.org/profiles/basic/1.1"/>
</documentation>
<soapbind:address location="http://192.168.0.25/AcceptingOrders/ws/AcceptingOrders.1cws"/>
</port>
<port name="AcceptingOrdersSoap12" binding="tns:AcceptingOrdersSoap12Binding">
<soap12bind:address location="http://192.168.0.25/AcceptingOrders/ws/AcceptingOrders.1cws"/>
</port>
</service>
</definitions>
Показать
34. WKBAPKA 220 12.02.18 14:50 Сейчас в теме
 @Override
    protected String doInBackground(Void... voids) {
        try {

            DataXML.append("Подключение к серверу ...");
            sendMessage(MainActivity.STATUS_MESSAGE);

            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
            request.addProperty("IDLogin",mlogin);
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.setOutputSoapObject(request);
            //envelope.dotNet = true;
            //envelope.implicitTypes = true;
            HttpTransportSE androidHttpTransport = new HttpTransportBasicAuthSE(URL, "pass", "pass");
            androidHttpTransport.debug = true;
            try {
                DataXML.append("Получение данных ...");
                sendMessage(MainActivity.STATUS_MESSAGE);

                androidHttpTransport.call(SOAP_ACTION, envelope);
                SoapObject resultRequestSOAP = (SoapObject) envelope.bodyIn;
                //Log.d(LOG_TAG, resultRequestSOAP.toString());
                return envelope.getResponse().toString();
                //return resultRequestSOAP.toString();
            }catch (Exception e){
                DataXML.append("Ошибка при получении данных <" + e.toString() + ">");
                sendMessage(MainActivity.STATUS_ERR);
//                e.printStackTrace();
            }


        }catch (Exception e) {
            DataXML.append("Ошибка при подключении к серверу <"+ e.toString() + ">");
            sendMessage(MainActivity.STATUS_ERR);
//            Log.d(LOG_TAG,e.toString());
//            e.printStackTrace();
        }
        return "";
    };

Показать


рабочий код из моего проекта
35. ECartman 2 12.02.18 16:07 Сейчас в теме
(34)
рабочий код из моего проекта


Прошу прощения, это модификация этого проекта или это кусок кода из Вашего проекта? Просто не понимаю, как это может быть для меня полезно? В какой класс это нужно вставить и откуда нужно вызывать функцию "doInBackground"? Просто у меня проблема с подключением. Андроид просто не может обратиться к серверу. Библиотеку ksoap2 я качал jar и подключал через меню file->project structure->dependies.
36. WKBAPKA 220 12.02.18 19:41 Сейчас в теме
Вы можете убрать лишнее и использовать в своем проекте. Я скопировал код реализации получения данных с помощью класса AsynkTask . За основу брал пример из этой статьи.
37. WKBAPKA 220 12.02.18 19:42 Сейчас в теме
Проект мой, рабочий. Ещё обратите внимание на релиз платформы 1С. Проверять работу веб сервиса советую другими средствами.
38. WKBAPKA 220 12.02.18 20:22 Сейчас в теме
39. WKBAPKA 220 13.02.18 11:17 Сейчас в теме
Еще обратите внимание, что на 1С:Предприятие 8.3 (8.3.9.1850) работать не будет, нужно ставить свежее платформу
40. zoytsa 09.02.19 06:48 Сейчас в теме
Коллеги, запутался с создагнием XDTO-пакета.
Как LoginList создать, состоящий из Login?

Вот так пробую (и еще много как):
<xs:schema xmlns:tns="AcceptingOrdersService" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="AcceptingOrdersService" attributeFormDefault="unqualified" elementFormDefault="qualified">
	<xs:complexType name="Login">
		<xs:sequence>
			<xs:element name="ID"/>
			<xs:element name="Description"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="LoginList">
		<xs:sequence>
			<xs:element name="Login" type="tns:Login"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="LoginResult">
		<xs:sequence>
			<xs:element name="Result"/>
			<xs:element name="Name"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>
Показать
41. user966277 2 25.02.19 09:23 Сейчас в теме
(0)Здравствуйте помогите вывести qr-код в табличный документ

&НаКлиенте
Процедура печатькода(Команда)
	ТабДок1=внешнийQR();
	Если ТабДок1<>Ложь Тогда
		ТабДок1.Показать();
	КонецЕсли;

КонецПроцедуры




&Наклиенте
Функция внешнийQR()

	

    
#Если МобильноеПриложениеКлиент  Тогда

        
        НовВз = Новый ЗапускПриложенияМобильногоУстройства();		
		НовВз.Действие="com.google.zxing.client.android.ENCODE";
		НовВз.ДополнительныеДанные.Добавить("ENCODE_DATA","123","String");
		НовВз.ДополнительныеДанные.Добавить("ENCODE_TYPE","Text","String");
		НовВз.ДополнительныеДанные.Добавить("ENCODE_FORMAT","UPC_A","String");
		НовВз.Запустить(Истина);
		
		//Для Каждого Стр Из НовВз.ДополнительныеДанные Цикл 
		//Сообщить(Стр.Ключ+" - "+Стр.Значение); 
		//	КонецЦикла;
		
		
		    Для Каждого Стр Из НовВз.ДополнительныеДанные Цикл

								Сообщить(Стр.Ключ+" - "+Стр.Значение);
                            
        КонецЦикла;
		  
					
	#КонецЕсли


	

	 
КонецФункции // внешнийQR()
Показать





(0)
42. WKBAPKA 220 25.02.19 12:46 Сейчас в теме
в последних проектах я использовал библиотеку Retrofit. В 1С HTTP сервис.
45. fimbulwinter 31.10.19 23:32 Сейчас в теме
Спасибо, полезная статья.
47. WKBAPKA 220 01.11.19 12:28 Сейчас в теме
46. fimbulwinter 31.10.19 23:44 Сейчас в теме
может кто нибудь выложить проект на гитхаб?
48. WKBAPKA 220 01.11.19 12:28 Сейчас в теме
50. WKBAPKA 220 01.11.19 12:48 Сейчас в теме
статья устаревшая. Лучше попробуйте Retrofit.
Проще отлаживать, проще подключать, можно работать с GSon

вот пример интерфейса:


public interface ApiService {
    @GET("{secondURL}/{id}/products")
    Call<List<RetrofitProduct>> getListProducts(@Path(value =  "secondURL", encoded = true) String secondURL, @Path("id") String id_client);

}


вот вызов

   response = mApiService.getReport(
                    App.getDefaultSecondURL(),
                        App.CONSTANT_ID_PARTNER,
                        "reports",
                            retrofitDataReport).execute();

            if (response.isSuccessful()) {
                updateInfoReportData(idReport, response.body());
            }else {
                String errorMessage = response.raw().toString() + "\n"
                        + response.errorBody().string();
                updateInfoReportData(idReport, response.raw().toString());
                MyLog.d(errorMessage);
                res.putString(KEY_EVENT_TEXT_ERROR, errorMessage);

            }
Показать
52. FEAS88 8 07.05.20 15:44 Сейчас в теме
(50)
в последних проектах я использовал библиотеку Retrofit. В 1С HTTP сервис.


Тоже пробую через Retrofit. Но как авторизоваться на http сервисе? Подскажите плиз
53. WKBAPKA 220 09.05.20 11:45 Сейчас в теме
(52) https://infostart.ru/public/1148840/

можно тут почитать
если лень, то примерно так

if (retrofit == null) {
            OkHttpClient okHttpClient = new OkHttpClient.Builder()
                    .readTimeout(300, TimeUnit.SECONDS)
                    .addInterceptor(new BasicAuthInterceptor(user, pwd))
                     .build();


где BasicAuthInterceptor выглядит так

class BasicAuthInterceptor implements Interceptor{
    private String credentials;

    public BasicAuthInterceptor(String user, String password) {
        credentials = Credentials.basic(user, password);
    }

    *Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        Request authenticatedRequest = request.newBuilder()
                .addHeader("Authorization", credentials)
                .build();
        return chain.proceed(authenticatedRequest);
    }

}
Показать
54. WKBAPKA 220 09.05.20 11:46 Сейчас в теме
(53) я в статье расписал как, можете скачать пример, он полностью работоспособный
51. WKBAPKA 220 01.11.19 12:53 Сейчас в теме
пример приведен синхронного вызова, т.к. работает с помощью WorkManager
Оставьте свое сообщение

См. также

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019) Промо

Инструментарий разработчика Сканер штрих-кода Терминал сбора данных Мобильная разработка Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ v8 v8::Mobile БУ УУ Абонемент ($m)

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    39609    246    informa1555    200    

Нано HTTP сервер - внешняя компонента для мобильного приложения 1C, на Android

Разработка внешних компонент Мобильная разработка v8 v8::Mobile 1cv8.cf Абонемент ($m)

Нано HTTP сервер на терминале сбора данных "ATOL Smart.Lite android 7.0". Работает только с GET и POST запросами. Аутентификация BASE64. Не поддерживает HTTPS и не передает файлы. В прикрепленном архиве исходники на компоненту (С++ и java для Android Studio 3.6.2), ЦФ - мобильного приложения и тестовая обработка.

1 стартмани

22.06.2020    878    3    SanyMaga    0    

miniWms. Программное решение для автоматизации склада

Мобильная разработка Учет ТМЦ v8 УТ11 Оптовая торговля, дистрибуция, логистика УУ Абонемент ($m)

Готовое Android приложение для автоматизации складских операций УТ 11. Доработка конфигурации не требуется. Навыки разработчика не требуются.

1 стартмани

16.06.2020    778    2    Basili02    3    

Мобильная платформа. Уникальный идентификатор устройства Android при помощи внешней компоненты. Не IMEI

Разработка внешних компонент Мобильная разработка v8::Mobile Абонемент ($m)

Идентифицируем устройства, на которых установлены копии нашего приложения.

3 стартмани

23.04.2020    1612    1    kinan    3    

Беспроводные метки NFC Промо

Мобильная разработка v8::Mobile Абонемент ($m)

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

1 стартмани

16.05.2017    20254    46    PloAl    18    

Android Java и NativAPI C++ внешняя компонента для широковещательных сообщений (отправка и прием). Подключаем сканер ШК и клавиатуру к "1С мобильное приложение"

Оптовая торговля Розничная торговля Сканер штрих-кода Разработка внешних компонент Мобильная разработка v8::Mobile Оптовая торговля, дистрибуция, логистика Абонемент ($m)

Подключаем сканер ШК и клавиатуру к "1С мобильное приложение", на терминале сбора данных "ATOL Smart.Lite android 7.0". Работаем с буфером обмена. В архиве к теме; 1. исходник компоненты (папка package готовый zip); 2. исходник "AccessibilityService" для перехвата клавиатуры (папка package готовый apk); 3. cf - тестовая конфигурация

1 стартмани

15.04.2020    1983    15    SanyMaga    19    

Мобильная платформа. Реакция на внешнее событие в Android при помощи внешней компоненты

Мобильная разработка Разработка внешних компонент v8::Mobile Молдова Абонемент ($m)

Внешняя компонента для мобильной платформы на Android. Пришиваем платформе уши, чтобы лучше слышать.

3 стартмани

06.04.2020    2422    4    kinan    13    

[Расширение] Готовые решения для инвентаризации товаров и основных средств на мобильных устройствах для КА, УТ, ERP и БП 3.0 на базе Simple UI

Оптовая торговля Розничная торговля Учет ОС и НМА Мобильная разработка Учет ТМЦ v8 ERP2 БП3.0 УТ11 КА2 БУ УУ Абонемент ($m)

В расширениях для Бухгалтерия 3.0 и КА2.4/УТ11.4/ERP2.4 представлены готовые рабочие места для онлайн и оффлайн инвентаризации товаров (для БП 3.0 также инвентаризации основных средств) на базе бесплатного конструктора мобильного фронта Simple UI. При этом используется расширенная работа с идентификацией товаров и ОС с помощью различных подходов – сканирование штрих кода, распознавание артикулов и инвентарных номеров и различные поиски. Также используются различные возможности платформы Simple UI. Используются только бесплатные возможности Simple UI (не Pro-версия), т.е. решение бесплатное. Данная разработка может быть полезна как конечным пользователям, так и разработчикам в качестве заготовки, так как на базе этих блоков можно сделать ввод любого документа конфигурации , связанного с товаром или с ОС. Тестировалось на 1С 8.3.13.1865, КА 2.4.8.63 и БП 3.0.74.69

5 стартмани

28.02.2020    2613    12    informa1555    5    

Приложение Android для идентификации/распознавания образов (с обучением с одного раза, One-Shot Learning) с возможностью работы с 1С через веб-сервис Промо

Мобильная разработка v8 Абонемент ($m)

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

1 стартмани

19.06.2018    13688    4    informa1555    15    

Пример реализации HTML-формы календаря для мобильного приложения

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

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

5 стартмани

13.02.2020    2609    10    ingeneerz@gmail.com    0    

Наш путь к эффективной инвентаризации склада

Учет ТМЦ Учет ТМЦ Розничная торговля Мобильная разработка v8 УУ Абонемент ($m)

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

8 стартмани

12.01.2020    2873    1    Johny_v    21    

Обмен данными с Android через USB

Практика программирования Мобильная разработка v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка с примером обмена данными конфигурации 1С через USB. Без установки Web сервера и настройки WiFi.

1 стартмани

23.12.2019    2834    4    asdfgcom    2    

Мобильное приложение "Отчет по проделанной работе" Промо

Мобильная разработка Учет рабочего времени Учет рабочего времени v8 Россия УУ Абонемент ($m)

Приложение выполняет фиксацию рабочего времени у клиентов, а также заявок на работы, пригодится как шаблон для разработки своего или как готовое решение для работников в сфере услуг, которые фиксируют время у клиентов. В приложении 2 документа: первый "отчет за день", второй "заявка" и полезный инструмент "Отчет задачи", который в свою очередь создан для просмотра, анализа и закрытия заявок. Тестировал на Iphone 6s.

10 стартмани

01.12.2017    20002    10    olejnikov_m    6    

Simple UI: простой конструктор мобильных приложений для устройств на Android.Самый быстрый способ создания рабочего места на смартфоне или ТСД. Обновление от 30.05.2020: июньский пак дополнений

Мобильная разработка v8 УУ Абонемент ($m)

Simple UI – это бесплатная платформа для создания мобильных рабочих мест на Android. Конструктор позволяет создавать мобильные клиенты для учетных систем и самостоятельные приложения на телефонах, ТСД (терминалах сбора данных), планшетах, электронных киосках и других устройствах. При этом не нужно разбираться в мобильной разработке, Android SDK ведь основная цель платформы – максимально упростить процесс разработки и поддержки, сделать его визуальным, собирать приложения из готовых блоков с минимумом кода. Причем код обработчиков можно писать на языке учетной системы либо задавать логику обработки событий с помощью команд REST, SQL и визуального конструктора. Проект постоянно развивается изыскивая новые способы упрощения разработки и повышения функционала и является пожалуй самым быстрым способом как создать MVP-проект так и продакшн-систему под конкретное внедрение или тиражный продукт.Тестировалось на 1С: Предприятие 8.3 релиз 8.3.13.1865.

5 стартмани

14.11.2019    10914    97    informa1555    71    

Получение AndroidID в мобильном приложении

Мобильная разработка v8::Mobile Россия Абонемент ($m)

Получаем Android DeviceID в мобильном приложении/клиенте, используя стороннее приложение.

1 стартмани

05.11.2019    6242    3    sam441    11    

Использование библиотеки Retrofit в проектах на Андроид

Мобильная разработка v8 1cv8.cf Абонемент ($m)

Использование библиотеки Retrofit в проектах на Андроид для обмена данными с 1С с помощью HTTP-сервисов, с примерами и готовым рабочим шаблоном.

5 стартмани

04.11.2019    5111    3    WKBAPKA    8    

Внешние компоненты. Мобильное приложение 1С Промо

Разработка внешних компонент Мобильная разработка v8::Mobile 1cv8.cf Абонемент ($m)

Пример применения технологии внешних компонент для мобильной платформы 1С (Android)

1 стартмани

17.02.2017    41086    118    flyer    35    

Мобильное приложение для Android для отправки СМС из 1C

SMS рассылки Мобильная разработка v8 1cv8.cf Абонемент ($m)

Вашему вниманию предлагается мобильное приложение (конфигурация .cf) + HTTP сервис для отправки СМС из 1С8

2 стартмани

04.11.2019    5908    3    dimasikus31    2    

Мобильная платформа. Косяки работы с интерфейсом

Мобильная разработка Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Думаю, каждый, кто хоть немного акцентировался на работе интерфейса на мобилке, сталкивался с проблемами с управлением элементами формы. О них и предлагаю поговорить.

1 стартмани

24.10.2019    3872    0    Crazy_Max    2    

ODa - Android приложение для подключения к любой конфигурации 1С, используя OData протокол

Мобильная разработка v8 1cv8.cf Абонемент ($m)

В платформе 1С реализована прекрасная возможность работы с открытым веб-протоколом OData, который предоставляет любой другой платформе интерфейс доступа - возможность запрашивать и обновлять данные из базы 1С. Далее в статье будут описаны особенности работы мобильного приложения ODa, которое без программировании на стороне Android'a позволит разработчикам публиковать базы 1С, что даст возможность обычным пользователям взаимодействовать с объектами метаданных, используя нативные элементы интерфейса платформы Android.

1 стартмани

22.10.2019    8251    8    Kosigo    11    

Hello world на metadata.js Промо

Инструментарий разработчика WEB Мобильная разработка v8 1cv8.cf Абонемент ($m)

Про браузерные offline-first приложения можно написать миллионы слов. Сэкономлю своё и ваше время и перейду сразу к делу. В статье не будет рекламы и агитации за новые технологии, не будет критики традиционных или попсовых решений. Рассмотрим по шагам разработку простейшей программы на metadata.js. Постараюсь сделать акцент не на том «как это сделано», а «почему сделано именно так»

1 стартмани

11.08.2016    56158    111    unpete    208    

Компонента аутентификации и шифрования с помощью биометрической информации для Андроид

Разработка внешних компонент Мобильная разработка Защита и шифрование v8::Mobile Абонемент ($m)

Компонента для мобильной платформы, позволяющая идентифицировать пользователя и шифровать данные с помощью биометрических сканеров.

5 стартмани

17.09.2019    4760    1    IgorKissil    7    

Мобильный терминал - универсальное мобильное решение для автоматизации учета на складских предприятиях, в торговых залах и складах при магазинах с применением технологии Штрих-кодирования

Сканер штрих-кода Терминал сбора данных Мобильная разработка Управление торговлей Оптовая торговля Учет ТМЦ Оптовая торговля Учет ТМЦ v8 1cv8.cf Россия УУ Абонемент ($m)

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

1 стартмани

09.09.2019    1633    3    @lexandr    7    

Пример простого и приятного внешнего HTML интерфейса для мобильного приложения

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

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

5 стартмани

05.09.2019    6194    56    Baksheev-Nikita    13    

Telemonitor - объединяем Telegram и 1С Промо

Сервисные утилиты Администрирование данных 1С Мобильная разработка v8 1cv8.cf Абонемент ($m)

Не так давно Telegram предоставил API для создания ботов. Telemonitor - программа, позволяющая легко настроить собственного бота для работы с 1С.

1 стартмани

09.08.2015    75065    208    salexdv    178    

ERP 2.4 "Рабочее место работника склада" на ТСД + Android 7

Терминал сбора данных Рабочее место Мобильная разработка Учет ТМЦ Учет ТМЦ v8 ERP2 УУ Абонемент ($m)

Решение задачи использования терминала сбора данных в режиме онлайн при помощи типовой обработки ERP 2.4 "Рабочее место работника склада", запуском ERP на мобильном клиенте 1С. Для настройки использовался ТСД Urovo V5100 на ОС Андроид 7.

1 стартмани

07.08.2019    9279    10    chemezov    8    

Мобильное приложение 1С для помарочной инвентаризации маркируемой (алкогольной) продукции

Терминал сбора данных Мобильная разработка Розничная торговля Розничная торговля v8::Mobile Розничная и сетевая торговля (FMCG) УУ Абонемент ($m)

Мобильное приложение 1С для помарочной инвентаризации маркируемой (алкогольной) продукции на ТСД под Android. Получение данных марок (штрихкодов), используя БПО для мобильного приложения. Разработка на платформе 8.3.13.1809. Мобильная платформа 8.3.13.64. Версия сборщика 2.0.8.19.

1 стартмани

18.07.2019    6244    16    savostin.alex    5    

Инвентаризация на мобильном устройстве. УТ 10

Мобильная разработка Учет ТМЦ Учет ТМЦ v8 УТ10 УУ Абонемент ($m)

Мобильное приложение и обработка выгрузки для инвентаризации в УТ 10.

2 стартмани

22.06.2019    4441    10    olejnikov_m    0    

7 причин, почему интеграция стала приятной. Не упускайте ряд потрясающих возможностей Промо

Внешние источники данных Интеграция Мобильная разработка v8 1cv8.cf Абонемент ($m)

В статье показаны примеры получения данных без программирования на стороне «1С:Предприятие 8». Вам нужно проверить гипотезу и проанализировать данные, почему бы не интегрироваться с Excel? Используете технологии .NET и «1С:Предприятие 8», процесс связывания систем движется катастрофически медленно? Хотите native Android приложение с вашими данными всегда под рукой?

1 стартмани

01.10.2015    54595    44    pbazeliuk    18    

Мобильное приложение "Сбор заказов" версия 2.0.1

Мобильная разработка Монитор заказов v8 v8::Mobile 1cv8.cf Украина УУ Абонемент ($m)

Приложение «Сбор заказов» разрабатывалось и разрабатывается для хранения и накопления данных от торговых представителей и автоматического обмена данными с программой учёта на базе платформы 1С:Предприятие. Мобильное приложение написано на технологии мобильной платформы 1С:Предприятие. Механизм обмена данных происходит посредством почтового сервера. В дальнейшем будет реализован механизм непосредственного доступа приложения к учётной системе через прямое интернет-соединение. FTP-соединение не работает как надо, так что будем довольствоваться тем, что есть... :)

4 стартмани

06.06.2019    6147    2    yarsort    10    

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

Мобильная разработка Финансовый учет и бюджетирование (FRP) Финансовый учет и бюджетирование (FRP) v8 v8::Mobile Домашние учет и финансы Россия УУ Абонемент ($m)

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

1 стартмани

06.06.2019    8935    28    vasilievil    5    

[Расширение] для подключения мобильного устройства к УТ11.4/ КА 2/ERP 2 для работы с ордерным складом на базе Simple WMS. Для автоматизации склада нужен только телефон

Сканер штрих-кода Терминал сбора данных Мобильная разработка Управление торговлей Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 ERP2 УТ11 КА2 УУ Абонемент ($m)

Представляю готовое решение для работы с ордерами и проведения инвентаризаций в виде расширения на базе конструктора Simple WMS. Не требует доработки конфигурации, подключается как обычное расширение. Работать может с обычного телефона на Андроид либо с ТСД либо через RDP. Расширение содержит справочники, поэтому режим совместимости конфигурации должен быть не меньше 8.3.11. Расширение написано для конфигурации Управление торговлей 11.4.7 и тестировалось на Комплексная автоматизация 2.4.7.151.

5 стартмани

27.05.2019    10671    32    informa1555    27    

Давайте подружим 1С и Android. Часть 1 - постановка задачи и подход к решению Промо

Мобильная разработка v8 Абонемент ($m)

Серия уроков по созданию простейшего приложения на платформе Android для взаимодействия с 1С.

1 стартмани

29.02.2016    29842    40    solarisman    32    

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

Мобильная разработка Финансовый учет и бюджетирование (FRP) Финансовый учет и бюджетирование (FRP) v8 Домашние учет и финансы УУ Абонемент ($m)

Мобильное приложение по учету личных финансов, имеется возможность вести учет по банкам, по валюте сканировать чеки, вести учет по статьям движения денежных средств, реализована возможность резервного сохранения данных и синхронизации с приложением на ПК. Имеется демо-версия и собранный apk файл. Тестирование производилось Android 7.0 1С:Предприятие 8.3 (8.3.14.1694) Мобильная платформа 1С:Предприятия 8.3.14.53.

1 стартмани

26.05.2019    5578    2    o.kovalev    4    

Оффлайн телефонный справочник для IOS и Android

Мобильная разработка v8 1cv8.cf Россия Абонемент ($m)

Как сделать телефонный справочник компании на мобильном телефоне для IOS, если у тебя android, бюджет в 100 долларов, несколько стартмани, а ты мастер программирования только в 1С? + БОНУС, как в компании бесплатно использовать телефонный справочник IOS и Android.

1 стартмани

20.05.2019    6330    2    rujiy_kot    2    

Шаблон http-сервиса для вашего проекта

Внешние источники данных WEB Мобильная разработка v8 v8::Mobile 1cv8.cf Абонемент ($m)

Http-сервис для обмена данными в формате JSON. Обработчики этого сервиса находятся во внешней обработке, что позволяет дорабатывать его без изменения конфигурации. Также прилагаю пример мобильного приложения для работы с данным сервисом (получает номенклатуру и остатки на складе). Сервис очень быстро разворачивается и масштабируется под ваши задачи.

3 стартмани

04.05.2019    17181    68    MarkoSokolov    47    

Как сделать простое мобильное веб-приложение в 1С Промо

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

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

1 стартмани

04.06.2014    54845    78    rtnm    24    

Управление задачами (мобильное приложение)

Мобильная разработка v8 1cv8.cf Абонемент ($m)

Конфигурация "Управление задачами" для мобильного приложения.

2 стартмани

29.04.2019    5497    11    noprogrammer    0    

EGAIS Scan - приложение для ТСД

Терминал сбора данных Мобильная разработка Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 УТ10 УПП1 УТ11 КА2 Россия УУ Абонемент ($m)

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

1 стартмани

17.04.2019    5116    4    MrChe    2    

Управление ТСД Zebra с помощью внешней компоненты для мобильной платформы

Разработка внешних компонент Мобильная разработка v8::Mobile Абонемент ($m)

Представлена внешняя компонента для управления сканерами терминалов Zebra из мобильных приложений 1С.

2 стартмани

15.04.2019    6816    19    IgorKissil    4    

Создание и управление интернет магазином на Android в режиме "Online" Промо

Мобильная разработка v8 1cv8.cf Абонемент ($m)

“DjanorgStore-Client” – обработка для управления в режиме "onLine" контентом приложения интернет магазина на Android платформах

1 стартмани

08.10.2012    23123    6    Kosigo    22    

Мобильный менеджер

Мобильная разработка Оптовая торговля Розничная торговля Оптовая торговля Розничная торговля v8 1cv8.cf Россия УУ Абонемент ($m)

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

1 стартмани

09.04.2019    4062    1    ziercool    1    

Подписи для 1С

Мобильная разработка Документооборот и делопроизводство Документооборот и делопроизводство v8 Россия Абонемент ($m)

Получение подписей в Мобильной платформе 1С с помощью приложения.

1 стартмани

28.02.2019    6480    4    Grivba    7    

Внешние компоненты мобильной платформы 1С для ОС Андроид

Разработка внешних компонент Мобильная разработка v8::Mobile Абонемент ($m)

На трех простых примерах описана процедура разработки внешних компонент для Андроид. Статья написана по мотивам доклада на конференции INFOSTART 2018 EDUCATION.

31.01.2019    15172    0    IgorKissil    25    

Мобильное приложение 1С для просмотра контактов в базе Промо

Мобильная разработка v8 БП2.0 УТ10 УНФ Абонемент ($m)

Партнеры: нативное приложение для просмотра контактов из вашей базы 1С на iPhone c iOS trendy интерфейсом

1 стартмани

29.08.2014    26777    1    playertwo    8    

Мобильное приложение для формирования заказов. Агент

Мобильная разработка Управление торговлей Управление взаимоотношениями с клиентами (СRM) Оптовая торговля Розничная торговля Управление взаимоотношениями с клиентами (СRM) Оптовая торговля Розничная торговля v7.7 v8 Оптовая торговля, дистрибуция, логистика УУ Абонемент ($m)

Мобильное приложение на платформе Андроид для формирования заказов клиентов. Основное предназначение - работа торговых агентов, представителей, что включает в себя: список клиентов с адресами, телефонами, историей взаиморасчетов; список товаров с остатками, с несколькими типами цен; составление заявки; регистрация поступления оплаты; отслеживание координат. Приложение можно состыковать с 1С любой версии. Поддерживаемые протоколы передачи: файловый (FTP), Web-service, HTTP-service.

1 стартмани

30.01.2019    7651    6    ruslan_hut    2    

Адаптация кода конфигурации для работы с мобильным клиентом

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

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

1 стартмани

17.12.2018    5265    5    nbeliaev    0    

Мобильное приложение: Терминал сбора данных (Автоматизация работы склада в режиме он-лайн)

Терминал сбора данных Мобильная разработка Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8::ОУ v8::Mobile ERP2 УТ11 КА2 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия УУ Абонемент ($m)

Мобильное приложение предназначено для автоматизации работы склада в режиме он-лайн. Программа работает на ТСД (или на смартфоне) под управлением Android. Для работы необходим постоянный доступ к веб-публикации центральной базы данных через интернет.

1 стартмани

10.12.2018    14763    66    prof-it60    22    

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

Мобильная разработка v8 Абонемент ($m)

Простой, но полноценный HTML-редактор для мобильного приложения с поддержкой CSS и JavaScript Релиз платформы: 8.3.12 Релиз мобильной платформы: 8.3.13

1 стартмани

07.12.2018    5533    15    djvu    1    

Мобильное приложение "Вслух"

Мобильная разработка v8 Обучение, бизнес-тренинг, курсы Россия Абонемент ($m)

Не с кем учить уроки? Говорящий репетитор в твоём мобильном! Обучающее мобильное приложение для детей и слабовидящих.

1 стартмани

16.11.2018    6269    3    RSConsulting    4