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

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

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

72
Авторизуемся в 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Объект.

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

72

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

Наименование Файл Версия Размер
Архив проекта AndroidStudio
.7z 4,73Mb
08.03.16
70
.7z 4,73Mb 70 Скачать

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

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

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

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

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

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

Вобщем если решите таки что то сделать из реально актуальных вещей - я готов вам помочь, я не жадный, у меня уже и так пол инфостарта в скайпе :)
15. Yashazz 2905 11.03.16 17:19 Сейчас в теме
(13) DitriX, а ещё от таких статей на ровном месте растёт "рейтинг"))) И потом начинаются распальцовки)
17. solarisman 135 11.03.16 22:14 Сейчас в теме
(15) Yashazz, Ладно, ладно, еще одну статью напишу в завершение и все, честно-честно. А то ишь, покусился на святой рейтинг топ-авторов.
Вот честно, как дети. Напишите то же самое приложение с использованием
(http реквесты, odata, json)
покажите что оно лучше во всем и тогда я скажу что я опозорился и статьи удалю вообще
21. WKBAPKA 215 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 2905 11.03.16 17:21 Сейчас в теме
(12) Nenaviju1C,
Что за консерватизм?? Мобильные устройства в бизнесе используются все больше и больше.
"Мутота" - это для тех кто не знает КАК.

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

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

Постараюсь написать статью 2-3 числа, был в командировке и все не разберусь с текущими задачами
24. agent00mouse 195 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. 181 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 215 11.08.17 19:07 Сейчас в теме
(26) круто конечно пишешь, но не все там просто в этом Андроид ;)
все же Андроид будет покруче и посложнее 1С в изучении :)
и поверь, сам язык Java фигня, а вот API изучить, приемы работы....
за пару дней вьехать, это ты конечно немножечко преувеличил
28. WKBAPKA 215 11.08.17 19:08 Сейчас в теме
(26) а что там в студио по щелчку мыши можно сделать?
layout-файл создать?
;)
29. WKBAPKA 215 11.08.17 19:09 Сейчас в теме
(26) мобильная платформа знаешь где нужна, когда тебе надо сделать приложение со всеми этими иерархическими справочниками и т.п.
поверь, на андроид ты таких готовых view не найдешь ... в этом сила мобильного приложения.
а если тебе надо написать приложени чисто под андроид и специфичное, то согласен, мобильная платформа тут не нужна
silberRus; +1 Ответить
30. silberRus 66 12.09.17 11:50 Сейчас в теме
Поставил плюс.

Пожелание:

- сделать на http сервисе, через rest+json. SOAP + XML все таки громоздкий, как по отношению к данным так и по отношению к реализации.
- добавить юнит тесты
49. WKBAPKA 215 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 215 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 215 12.02.18 19:41 Сейчас в теме
Вы можете убрать лишнее и использовать в своем проекте. Я скопировал код реализации получения данных с помощью класса AsynkTask . За основу брал пример из этой статьи.
37. WKBAPKA 215 12.02.18 19:42 Сейчас в теме
Проект мой, рабочий. Ещё обратите внимание на релиз платформы 1С. Проверять работу веб сервиса советую другими средствами.
38. WKBAPKA 215 12.02.18 20:22 Сейчас в теме
39. WKBAPKA 215 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 215 25.02.19 12:46 Сейчас в теме
в последних проектах я использовал библиотеку Retrofit. В 1С HTTP сервис.
45. fimbulwinter 31.10.19 23:32 Сейчас в теме
Спасибо, полезная статья.
47. WKBAPKA 215 01.11.19 12:28 Сейчас в теме
46. fimbulwinter 31.10.19 23:44 Сейчас в теме
может кто нибудь выложить проект на гитхаб?
48. WKBAPKA 215 01.11.19 12:28 Сейчас в теме
50. WKBAPKA 215 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);

            }
Показать
51. WKBAPKA 215 01.11.19 12:53 Сейчас в теме
пример приведен синхронного вызова, т.к. работает с помощью WorkManager
Оставьте свое сообщение

См. также

Simple UI – конструктор мобильных приложений для бизнеса. Обновление 21.11.19 - теперь доступна печать с устройства 47

Инструменты и обработки Программист Пользователь Руководитель проекта Архив с данными v8 УУ Абонемент ($m) Мобильная разработка

Simple UI – платформа для создания приложений на Android. Это продолжение и развитие проекта Simple WMS. Новая платформа содержит все, что есть в Simple WMS но, вместе с тем реализует новые подходы к разработке, которые позволяют создавать приложения для любых целей, а не только для склада. Приложение имеет полную обратную совместимость и способно запускать старые конфигурации. Тестировалось на 1С: Предприятие 8.3 релиз 8.3.13.1865.

5 стартмани

14.11.2019    3202    12    informa1555    6       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

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

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

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

1 стартмани

05.11.2019    1935    sam441    8       

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

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

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

5 стартмани

04.11.2019    1488    WKBAPKA    2       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

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

Инструменты и обработки no Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) SMS рассылки Мобильная разработка

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

2 стартмани

04.11.2019    1765    dimasikus31    2       

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

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Android Абонемент ($m) Мобильная разработка Работа с интерфейсом

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

1 стартмани

24.10.2019    1373    Crazy_Max    0       

Перенос данных КА 1.1 => ERP 2 (ЕРП) (обработка переноса документов, остатков и справочной информации из "1С:Комплексная автоматизация, ред. 1.1" в "1С:ERP Управление предприятием, ред 2"). Обновлен до КА 1.1.115.х и ERP 2.4.10.х Промо

Обработка позволяет переносить из КА 1.1 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления в случае выхода новых релизов конфигураций 1С.

29700 руб.

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

Инструменты и обработки no Приложение (apk) v8 1cv8.cf Абонемент ($m) Мобильная разработка

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

1 стартмани

22.10.2019    4241    7    Kosigo    11       

Мой помощник и бухгалтер 5

Отчеты и формы no Приложение (apk) v8::Mobile Домашние учет и финансы Россия УУ Android Абонемент ($m) Учет доходов и расходов Мобильная разработка

Домашняя бухгалтерия, записная книжка, контакты, напоминания, сканер штрих-кода, матрица Эйзенхауэра - все в твоём телефоне.

1 стартмани

26.09.2019    1900    2    user-sergey    10       

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

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

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

Инструменты и обработки Программист Конфигурация (md, cf) v8::Mobile Android Абонемент ($m) Разработка внешних компонент Мобильная разработка Защита и шифрование

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

5 стартмани

17.09.2019    1695    1    IgorKissil    0       

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

Отчеты и формы Программист Конфигурация (md, cf) v8::Mobile Абонемент ($m) Работа с интерфейсом Мобильная разработка

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

5 стартмани

05.09.2019    2235    21    Baksheev-Nikita    10       

Перенос данных КА 1.1 / УПП 1.3 => БП 3.0 (перенос остатков, документов и справочников из "1С:Комплексная автоматизация 1.1" / УПП 1.3 в "1С:Бухгалтерия 3.0"). Обновлен до версий КА 1.1.115.х, УПП 1.3.127.х! Промо

Разработка позволяет перенести остатки по всем счетам бух.учета в программу "1С:Бухгалтерия предприятия 8", ред. 3.0 на выбранную дату начала ведения учета. Также переносятся документы за период и вся необходимая справочная информация. Правила оперативно обновляю при выходе новых релизов. Рассылка обновлений правил бесплатно в течение 12 месяцев. Есть видеодемонстрация проведения переноса данных. Конфигурации при использовании обмена остаются полностью типовыми. Перенос данных возможен в Бухгалтерию 3.0 версии ПРОФ, КОРП или базовую.

24700 руб.

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

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

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

1 стартмани

07.08.2019    3748    5    chemezov    8       

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

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

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

1 стартмани

18.07.2019    2693    7    savostin.alex    0       

Базовый курс для начинающих 1С-программистов. Пятый поток. Онлайн-курс с 12 февраля по 15 апреля 2020 г. Промо

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

4500/9500 рублей

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

Отчеты и формы Программист Пользователь Приложение (apk) v8 v8::Mobile 1cv8.cf Украина УУ Монитор заказов Абонемент ($m) Мобильная разработка

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

4 стартмани

06.06.2019    2907    yarsort    9       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

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

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

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

1 стартмани

06.06.2019    3935    13    vasilievil    4       

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

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

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

5 стартмани

27.05.2019    4876    26    informa1555    20       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

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

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

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

1 стартмани

26.05.2019    2231    3    o.kovalev    4       

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

Инструменты и обработки Программист Пользователь Приложение (apk) v8 1cv8.cf Россия Абонемент ($m) Мобильная разработка

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

1 стартмани

20.05.2019    3038    2    rujiy_kot    2       

Перенос данных УТ 10.3 => УТ 11 / КА 2 / ERP 2 (ЕРП 2) (документы, остатки и справочная информация из "1С:Управление торговлей, ред. 10.3" в УТ 11 / КА 2 / ERP 2). Обновлен до УТ 10.3.56.х, УТ 11.4.10.х, КА 2.4.10.х и ERP 2.4.10.х! Промо

Уже более 100 компаний приобрели перенос и выполнили переход на УТ 11 / КА 2 / ERP 2 с помощью нашей разработки! Обработка перехода с УТ 10.3 на УТ 11 / КА 2 / ERP 2 позволяет перенести не только остатки на указанную дату (как типовой перенос), но и все возможные документы за выбранный период. При выходе новых релизов этих программ оперативно выпускаем обновление обработки. Предоставляем техническую поддержку. Можем сделать бесплатный тестовый перенос!

29700 руб.

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

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

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

3 стартмани

04.05.2019    8762    57    MarkoSokolov    47       

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

Отчеты и формы no Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Мобильная разработка

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

2 стартмани

29.04.2019    2797    6    noprogrammer    0       

Перенос данных БП 3.0 => УТ 11 / КА 2 / ERP 2 (ЕРП) (перенос остатков, документов и справочной информации из "1С:Бухгалтерия предприятия 8", ред.3.0). Обновлено до БП 3.0.73.х, УТ 11.4.10.х, КА 2.4.10.х., ERP 2.4.10.х! Промо

Переносятся документы за выбранный период, справочная информация и остатки по счетам бух. учета в программу УТ 11 / КА 2 / ЕРП 2 (ERP). Переносятся все возможные виды операций ввода остатков на нужную дату. Есть отбор по периоду переноса документов и фильтр по организации, доступен выбор даты ввода остатков. Если нужно переносить что-то дополнительно, то обычно бесплатно добавляем это в перенос . Смотрите видеодемонстрацию со звуком - советами по переносу и рекомендациями настройки программ.

29700 руб.

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

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

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

1 стартмани

17.04.2019    2593    5    MrChe    1       

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

Инструменты и обработки Программист Конфигурация (md, cf) v8::Mobile Android Абонемент ($m) Разработка внешних компонент Мобильная разработка

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

2 стартмани

15.04.2019    3241    6    IgorKissil    1       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

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

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

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

1 стартмани

09.04.2019    2352    1    ziercool    1       

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

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

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

1 стартмани

28.02.2019    3288    Grivba    7       

Перенос документов, остатков и справочников КА 1.1 => КА 2 / УТ 11. Обновлено до КА 2.4.10.х и УТ 11.4.10.х! Промо

Более 130 компаний выполнили переход на КА 2 или УТ 11 с помощью нашей разработки! Позволяет перенести не только остатки и справочники (как типовая обработка), но и документы за нужный период времени. Предоставляем техподдержку, оперативно исправляем замечания, выпускаем обновления при выходе новых релизов программ 1С. Вы можете проверить разработку до покупки: сделаем бесплатный тестовый перенос из вашей базы КА 1.1 и предоставим доступ к базе-результату через веб-клиент!

29700 руб.

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

Статья Программист Нет файла v8::Mobile Android Абонемент ($m) Разработка внешних компонент Мобильная разработка

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

31.01.2019    9186    101    IgorKissil    17       

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

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

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

1 стартмани

30.01.2019    4162    5    ruslan_hut    2