Мобильная платформа 1С:Предприятие 8 — первые шаги
(бесплатная статья по Программированию в 1С)

Другие статьи по мобильной платформе:

«Принципы синхронизации данных»

«История разработки мобильного приложения»

«Производительность мобильной платформы»

Мобильная платформа 1С:Предприятие 8 — первые шаги

Оглавление

Где работает данная платформа?

Android устройства:

  • Версия Android не ниже 2.2;
  • Доступной памяти у телефона не меньше 100 Мб.

iOS устройства:

  • iPhone – 3GS и выше;
  • iPad – 1,2,3;
  • iPod Touch – начиная с 3 поколения.

На ПК в режиме эмуляции, при помощи программы BlueStacks (это самый простой вариант):

  • Скачать с сайта www.bluestacks.com программу;
  • Установить на ПК с ОС Windows XP и выше или Mac OSX.

Отдельно дополню – желательно любое новое устройство с Андроид 4+, либо «флагманы» прошлых годов. На остальных «железках» программа хоть и работает, но только с небольшими объемами данных.

Внимание! Вся информация описанная в статье, касается только ОС Андроид!
Версия платформы 1С 8.3.4.365, версия мобильной платформы 1С 8.3.4.9.

Что может мобильная платформа?

Тут следует немного отвлечься от 1С и разобраться в политике безопасности Андроида.

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

Что же это нам дает? А дает следующее – мы можем, глядя на эти права, сразу понять – с чем наше приложение может работать, а с чем не может вообще.

Для наглядности давайте посмотрим свойства мобильной платформы 1С и мессенджера Viber.

Для этого зажимаем палец на приложении и ведем его вверх (О программе), или заходим в Настройки > Приложения > нажимаем на наше приложение.

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

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

Мобильное приложение 1С:Предприятие
Мобильное приложение 1С:Предприятие

А теперь посмотрим на права, которые требует Viber:

Мобильное приложение в 1С Предприятии-Viber
Мобильное приложение в 1С Предприятии-Viber1

На что я тут хотел бы обратить внимание – когда говорят, что 1С может звонить или отправлять смс, то это не так. 1С может вызвать окно набора номера или отправки смс, но сама она ни звонить, ни отправлять, ни принимать смс не может! Так как это, как минимум, не разрешит ей сделать Андроид (это можно обойти, но об этом не сейчас).

Так же эти права показываются в момент установки, так что, если вы устанавливаете игру, а она имеет возможно совершать звонки или отправлять смс (желтеньким выделяется), то насторожитесь, может это не такая и простая игра.

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

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

Чтобы понимать на сколько это серьезно, я написал статью «Тестирование мобильной платформы 1С», в которой я постарался дать ответ на один вопрос – на сколько критично влияет оборудование на производительность в МП.

Давайте я приведу несколько цифр:
Мобильное приложение в 1С Предприятии-производительность

Перейдя в саму статью, вы можете более детально ознакомиться с тем, что это за варианты, и даже протестировать свои устройства. Скажу лишь одно – от Варианта А до Варианта Г увеличивается количество создаваемых элементов, документов и т.д., т.е. в Варианте А – самое маленькое количество документов и элементов справочника.

На текущий момент нас интересуют только цифры. Если быть точнее, то разница между устройствами. Почему это так важно? Ответ очевиден – нам нужно понимать на сколько может затянуться синхронизация в том или ином случае.

Как вы могли увидеть, разница между стационарным компьютером и мобильной платформой 1С отличается по скорости в 10 раз, в среднем.
В самом начале, я бы рекомендовал эмулировать ситуацию на вашей фирме, для того, чтобы понять – с чем нам стоит дальше работать, и, как следствие, в каком ключе.

Приведу пример, если у Вас в фирме есть порядка 500 номенклатур и в среднем десяток документов, то можно не заморачиваться с разными сложными механизмами обмена, регистрации и т.д., а просто при каждой синхронизации обновлять все с нуля. Это достаточно удобно. Однако, если у вас 50 000 товаров, 300 000 характеристик, 1 000 000 штрихкодов и т.д., то тут уже надо бы призадуматься над более сложными механизмами синхронизации.

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

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

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

Фонарик желательно иметь, если вы планируете сканировать в темных помещениях, ну или даже просто фотографировать.

Если же вам необходимо в конечном итоге получить программу для инвентаризаций, то тут же встанет вопрос о сканировании товара, при чем встанет достаточно остро, и камерой телефона тут не обойтись. А это значит, что надо параллельно с телефоном – купить Bluetooth сканер, ну или если у вас в устройстве есть USB OTG, то HID совместимый проводной сканер.

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

Если же вы планируете купить ТСД на Андроид, то тут сходу надо понимать, что в эти ТСД встроены сканеры, которые работают по умолчанию только с предустановленными программами, и если вы попытаетесь просканировать что-то в 1С, то у Вас может ничего не получиться. Прежде чем брать такой сканер – убедитесь, что он может сканировать в абсолютно любые формы (например, в смс сообщения, или в текстовый редактор) и после сканирования – отрабатывает функция перевода строки. Это все в будущем вам облегчит страдания.

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

Как вы могли догадаться – для работы с МП нам необходим соответствующий инструментарий.

Давайте создадим некий каталог, куда мы с Вами будем скидывать все, что нам понадобится. Путь к этому каталогу должен быть коротким, не содержать пробелов и состоять только из латиницы. У меня он будет таким: C:\MobilePl. В нем я создам папку Install, куда я буду закидывать все установочные файлы. И у нас будет еще одна папка Soft, куда мы будем скидывать подготовленные приложения, устанавливать новые и ссылаться на этот путь везде, где потребуется.

Настройка платформы 1С

Для начала убедитесь, что у вас установлены следующие модули 1С:

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

Если чего-то не хватает – установите.

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

Мы, в том числе, будем рассматривать вариант обмена данными при помощи web-сервисов, поэтому нам необходим модуль для работы с веб-серверами.

Установка Apache

Так как 1С сама по себе не может выступать в роли веб-сервиса, то нам необходимо настроить или IIS или Apache. Мы будем рассматривать вариант с Apache, так как он является более легким в настройке и кроссплатформенным.

Для начала нам необходимо скачать Apache. Сделать это можно так:

Заходим на сайт http://www.apache.org/mirrors/. Это список всех доступных зеркал, на которых можно скачать Apache.

Я выбрал сайт http://apache-mirror.rbc.ru/pub/apache/, он для России. Это значения по большому счету не имеет, так как вес его маленький.

Переходя по папкам, мы доберемся вот сюда: http://apache-mirror.rbc.ru/pub/apache/httpd/binaries/win32/.

Тут нас интересует файлик httpd-2.2.25-win32-x86-no_ssl.msi. Если вы используете SSL, то качайте тот, что ниже. Если не знаете, что это такое – качайте любой.

Во время установки программа спросит про порт, который она будет прослушивать. По умолчанию – это порт 80, его и выбираем. Обратите внимание, что на 80 порту любят висеть всякие программы, которые в последствии не дадут запустить вам Apache. Чаще всего – это:

  • TeamViewer — он любит слушать 80 порт, чтобы отключить это – перейдите в Опции > Дополнительно > Показать дополнительные настройки > и поставьте галочку Не использовать входящий 80 порт.
  • Skype – чтобы отключить, следуем в Инструменты – Настройки – Дополнительно – Соединения и меняем порт.
  • ISS – само собой. Но если вы его ставили, то вы знаете как его отключить или сменить порт.

Я рекомендую потом назначить свой порт. Чтобы убедиться, что выбранный вами порт, на текущий момент, не использует ни одна программа – зайдите в Диспетчер задач > Производительность – Монитор ресурсов – Сеть – Прослушиваемые порты. Убедитесь, что порт не занят и смело его вбивайте. По опыту, я использую порты в диапазоне 40 000 – 60 000.

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

Проверить работоспособность Apache можно, забив в браузере адрес 127.0.0.1 или localhost, или IP адрес вашего компьютера (при условии того, что открыт доступ к 80 порту). Если все хорошо, то вы увидите надпись It works! Если ее нет, то, вероятнее всего, вы или не указали порт, или у вас в hosts не прописаны эти адреса.

Установка Apache ant

Если вы пока не планируете компилировать приложение до apk-файла, то можно этот пункт пока пропустить.

Это программа для сборки приложений. Нам она нужна только для сборки конечных apk-файлов.

Скачать ее можно с того же ftp, что и Apache.

Путь будет таким — http://apache-mirror.rbc.ru/pub/apache/ant/binaries/. На текущий момент там лежит версия apache-ant-1.9.2-bin.zip. Ее мы и качаем в нашу папку Install. Так как это просто архив, который не требует инсталляции – мы его сразу разархивируем в папку C:\MobilePl\Soft\ant. Обратите внимание, что это конечный путь, где лежат файлы. Т.е. я не перенес папку apache-ant-1.9.2-bin, так как, в случае обновления, вам нужно будет только удалить эти файлы и скопировать сюда новые, при этом все пути сохранятся.

Для чего еще ее можно использовать – можно почитать тут:

Эти все ссылки я привел для понимания того, что 1С его использует не спроста. Это мировая тенденция. Ранее, в версии 8.3.3 мобильной платформы, был сборщик приложений, работал он на основе жестко прописанных путей и кода. Однако, при помощи ант, можно задать скрипт действия, по которому он будет компилироваться. Их даже можно несколько собрать. Например, собирать приложения под разные имена пакетов и разные ключи разработчика.

Установка Java JDK

Если вы пока не планируете компилировать приложение до apk-файла, и использовать виртуальную машину, то можно этот пункт пока пропустить.

Так как Android, по сути, эмулирует виртуальную Java машину, то и нам от Java не уйти. Рассматриваемая нами версия мобильной платформы уже нормально работает с Java 1.7, вот ее мы и установим.

К сожалению, прямого линка на скачку нет, поэтому придётся проходить квест на скачку новой версии. На текущий момент, ссылка вот такая: http://download.oracle.com/otn-pub/java/jdk/7u45-b18/jdk-7u45-windows-i586.exe.

Идем на сайт http://www.oracle.com/technetwork/java/javase/downloads/index.html.

Видим такую картинку:

Мобильное приложение в 1С Предприятии-java

Нажимаем на JDK Download (выделил желтым).

Мобильное приложение в 1С Предприятии-Java

Соглашаемся с лицензией и качаем нужную нам версию. Есть x64 и x86, так как мы не работаем с большими объемами, то, в независимости от разрядности вашей операционной системы, качаем x86.

Мобильное приложение в 1С Предприятии-Java

Сохраняем его в наш каталог Install. Заранее создадим папку для этой программы — C:\MobilePl\Soft\jdk и C:\MobilePl\Soft\jre. Запускаем программу.

Когда программа спросит – куда установить ее, укажите путь C:\MobilePl\Soft\jdk\. Потом она спросит еще раз – куда установить jre. Указываем путь C:\MobilePl\Soft\jre\.

На этом установка Java закончена.

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

Нам необходимо скачать архив с сайта 1С. Я использую платформу 8.3.4.9. Переименовываем архив в соответствии с версией, которая в нем находиться, и копируем как есть в папку C:\MobilePl\Install\.

Давайте разберем структуру этого архива. Внутри него есть три папки:

  • Android, в которой есть 4 файла:
    • 1cem-arm.apk и 1cem-x86.apk — платформа разработчика.
    • prjandroid-arm и prjandroid-x86 — файлы для компиляции.
  • iOS, тут файлы для сборки под iPhone;
  • MobileAppMaker – тут находится конфигурация «Сборщик приложений».

В чем отличие файлов 1cem-arm.apk и 1cem-x86.apk? Отличие их заключается в оптимизации под одну или другую архитектуру процессоров. Чаще всего используется архитектура arm. Однако, если у вас в телефоне установлен процессор от Intel, то, вероятнее всего, у вас используется архитектура x86.

Теперь надо определиться – куда мы хотим установить мобильную платформу? У нас есть два варианта:

  • На мобильное устройство. Этот вариант самый идеальный, так как телефон будет работать значительно стабильней, чем компьютер.

  • Эмулятор андроида на ПК:
    • Если без дополнительных танцев с бубном, то можно установить эмулятор BlueStacks. Однако придётся пожертвовать стабильностью. Те, кто работали под ним, изредка замечали странное поведение форм и вылеты. Тогда как на телефоне было все отлично. Однако с ним удобно работать – достаточно установить его и нажать два раза на akp-файле и он сразу установиться в эмулятор.

    • Эмулятор Android Virtual Device (AVD). Он идет в комплекте с Андроид SDK. Этот эмулятор – самый приближенный к реальности. Однако стоит отметить, что, как и установка его самого, так и приложений под него – задача не из самых приятных.

Установка Android эмулятора AVD и Android SDK

Если вы пока не планируете компилировать приложение до apk-файла, и использовать виртуальную машину, то можно этот пункт пока пропустить.

Для установки AVD, нам потребуется скачать Android SDK, так как нам все это понадобиться далее – не удаляйте эти файлы.

Теперь давайте скачаем Android SDK – идем по этой ссылке https://developer.android.com/intl/ru/sdk/index.html.

Там раскрываем USE AN EXISTING IDE (так как наша среда разработки 1С, то другой нам не надо), и нажимаем Download the SDK Tools for Windows.
Сохраняем его в нашу папку Install.
Начинаем установку – запускайте файл. Для установки указываем путь C:\MobilePl\Soft\sdk\.

Обратите внимание, если вы не установили ранее JDK, то программа не разрешит установку.
После установки программа спросит разрешения запустить себя, соглашаемся. Если же вы убрали галочку, то запускаем файл C:\MobilePl\Soft\sdk\SDK Manager.exe.

Ставим нужные нам опции:

Мобильное приложение в 1С Предприятии-опции

Мобильное приложение в 1С Предприятии-опции

Вот тут остановимся немного поподробней. Эмулятор Андроида, сам по себе, весьма тормознут.

Однако, есть специальное решение, которое, используя инструкции процессора, ускоряет его, скажем так – прилично ускоряет. Но, как и всегда, есть нюансы – ваш процессор должен соответствовать определенным условиям:

Аппаратное обеспечение

  • Процессор Intel® с поддержкой инструкций VT-x, EM64T и Execute Disable (XD) Bit
  • Не менее 1 ГБ оперативной памяти

Поддерживаемые операционные системы

  • Microsoft Windows 7 (32/64-bit)
  • Microsoft Windows Vista (32/64-bit)
  • Microsoft Windows XP SP2 (32-bit only)

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

Как можно проверить – подходит ли это все вам? Необходимо узнать модель процессора. Сделать это можно, нажав сочетание клавиш Win+R. У вас должно всплыть окно, далее вбиваем в него: dxdiag. Появиться вот такое окно (вначале может спросить про подписи – жмем что угодно):

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

Операционная система – подходит. А вот от процессора нам нужна модель. В моем случае это i7 950. Захожу на сайт http://ark.intel.com/ и справа вверху, в окно поиска, вношу свою модель i7 950. Спускаемся вниз и смотрим:

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

Мой процессор, выпущенный в 2009 году, удовлетворяет условиям. Поэтому я ставлю ту галочку. Дополнительно про это написано на сайте http://software.intel.com/ru-ru/articles/intel-hardware-accelerated-execution-manager.

Теперь жмем кнопку Install. Далее принимаем лицензионные соглашения и начнется установка. Вся установка будет идти из интернета. Так что учтите это. После установки – закрываем все. И запускаем AVD – эмулятор Андроида, для этого открываем файл C:\MobilePl\Soft\sdk\AVD Manager.exe.

Нажимаем New и заполняем поля:

Мобильное приложение в 1С Предприятии-эмулятор Андроида

Если в двух словах, то мы по сути эмулируем некое устройство. Мы указываем какую версию Андроида использовать, какую архитектуру процессора, оперативную память, память для одной виртуальной java-машины (приложение), внутреннюю память и т.д.

Нажимаем ОК. И после этого жмем кнопку Start. У нас должна запуститься виртуальная машина на Андроиде.

Установка приложения в Андроид

На текущий момент вы должны уже были определиться с устройством, на котором вы будете запускать мобильную платформу. Рассмотрим два варианта установки приложения. Для примера, возьмем платформу для разработчиков. Напоминаю, она находится в архиве, который мы скачали ранее с сайта 1С, и называется 1cem-arm.apk и 1cem-x86.apk. Так как у меня устройство на arm-архитектуре, то я буду устанавливать файл 1cem-arm.apk.

Установка приложения на телефоне

Для установки – скопируйте его на телефон, и запустите. Перед этим убедитесь, что у вас разрешено устанавливать приложение не только с доверенных источников. Эта галочка ставится в Настройки > Безопасность. Для передачи файлов на телефон я использую программу DropBox. Т.е. я устанавливаю ее на компьютер и на телефон, потом просто скидываю в папку нужный мне файл и забираю его с телефона. Этот подход требует установки дополнительного софта, и выхода в интернет.

Установка приложения на AVD

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

Для этого создадим новый текстовый документ и нажмем Файл > Сохранить как > имя файла — «Установка apk.cmd» > Тип файла — «Все файлы» и жмем Cохранить. Далее вставим в него такой текст:

C:\MobilePl\Soft\sdk\platform-tools\adb.exe install C:\MobilePl\Soft\8.3.4.9\Android\1cem-arm.apk

Сохраним и запустим. После того, как выполнится этот скрипт – будет установлена мобильная платформа.

По умолчанию в AVD стоит андроид с локализацией для Америки. Поэтому 1С будет там на английском языке. Для работы с русской версией – зайдите в настройки локализации и выберите нужную вам локализацию.

Пишем и переносим простейшую конфигурацию на мобильное устройство

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

Так как целью данного параграфа будет написание конфигурации только под мобильную платформу, то я предлагаю убрать пару галочек из настроек конфигуратора. А именно, мы с вами уберем из контекстной подсказки те функции, которые не поддерживает МП, и из справки – ту информацию, которая не доступна на МП.

Начнем. Давайте создадим для начала новую базу данных. Тут нет ничего необычного, создаем как обычную базу данных. Входим в конфигуратор и первое что мы делаем – заходим в Сервис > Параметры:

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

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

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

Тут снимаем галочки с тех опций, которые мы не хотим видеть в справке.

Зачем это надо? Все очень просто – если вы оставите эти галочки, то вы всюду будете натыкаться на функции, которые не поддерживаются мобильной платформой и наоборот, если вы используете те функции, которые поддерживает только МП – конфигуратор будет ругаться, что их не поддерживают остальные.

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

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

Мобильное приложение в 1С Предприятии-конфигурация

После нажатия ОК – дерево метаданных изменит свой вид. В нем появятся затемненные объекты. Это объекты, с которыми МП работать не может.

Выглядит это так:

Мобильное приложение в 1С Предприятии-древо метаданных
Мобильное приложение в 1С Предприятии-древо метаданных

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

  1. Конечно же Отчеты!
  2. Отчеты — это одна из самых главных функций, которые просто обязаны быть доступны на мобильнике. Я даже с ребятами как-то написал приложение, которое эмулировало СКД конструктор (1C + Android (конструктор отчетов) v1.5.1).

    Однако тут доступны Обработки, с помощью которых можно выводить отчет. Так же 1С, на примере демо конфигурации Заказы, подключается к web-сервису на сервере, передает параметры, на сервере строиться отчет, сериализуется, сжимается и отправляется на телефон, телефон его десериализует и выводит пользователю. Минусы очевидны – только в режиме онлайн. Но и плюсы есть – можно любой сложности отчет строить, вот только поместиться ли он в 5 дюймов и ограничение связанные с использованием SOAP протокола?

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

  3. Общие реквизиты. Ну тут скорее желание удобства. Просто в случае программирования конфигурации с нуля, начинаешь понимать, как они полезны.

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

  5. Функциональные опции. Так как ролей нету, да они тут и не нужны, но в одном предприятии может быть несколько вариантов мобильного приложения, раз нельзя сделать видимость по Ролям, то хотя бы по опциям делать, дабы не держать для каждого свою отдельную конфигурацию. Но следует отметить, что мы несколько конфигураций можем уместить в одно приложение, как это сделать – мы обсудим позже.

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

Как один из предложенных вариантов был – вы делаете запрос на сервер, сервер принимает документ, сохраняет его в эксель и отправляет менеджеру на почту, но это как бы не правильно, так как опять-таки – нужен сервер и интернет. Можно конечно генерировать этот же эксель, и передать его в ответ на запрос, а потом сохранить на СД карту, но это уже дело такое, так как вопрос печати с мобильника все же остается.

С другой стороны, все эти ограничения принесли весьма положительный опыт, так как первопроходцы не решались на телефон отправлять 100 000 товаров и 25 типов цен, потому что работать с ними, с учетом текущих ограничений, было бы весьма сложно.

Самое главное – запомните один девиз:

Самое сложное при программировании под мобильную платформу – понять, что это МОБИЛЬНАЯ платформа.

Тут надо четко понимать, что мобильное приложение – это не обычная версия 1С. Так не получится вывести 20 кнопок и 30 показателей.

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

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

Основные свойства, которые надо заполнить у конфигурации

Мобильное приложение в 1С Предприятии-конфигуратор

Возвращаемся в нашу конфигурацию и до заполним свойства:

  • Имя – его желательно указывать латиницей, дальше я объясню почему;
  • Синоним – тут пишем полное название базы, она так и будет называться и на мобильном телефоне или в виде отдельного приложения, или в составе конфигураций;

  • Поставщик – укажите себя;
  • Версия – начинаем с версии 1;

Платформа для разработчика

Данный вариант предполагает наличие доступа к компьютеру из мобильного приложения через сеть. Суть заключается в следующем – мы публикуем конфигурацию приложения (это по сути своей web-сервис), мобильное приложение подключается к нему и забирает конфигурацию.

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

Мобильное приложение в 1С Предприятии-публикация конфигурации

Имя и путь к каталогу – не могут содержать кириллицу!

Давайте чуть поподробней остановимся на некоторых полях.

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

Обновлять мобильное приложение – эта галочка отвечает за очень удобную опцию. Ее имеет смысл использовать только в произвольной конфигурации, суть ее в том, что при каждом обновлении конфигурации автоматически будет обновлена конфигурация на устройстве (если на нем тоже стоит галочка, об этом позже). Кроме этого, обновлять можно и вручную.

Если, в момент нажатия кнопки Опубликовать, у вас появилось сообщение о том, что 1С не может записать данные в файл, то это у вас сработал UAC. Это значит, что вы запустили 1С не от имени администратора. Решить это проблему можно следующим путем:

Каждый раз запускать 1С от имени администратора. Правой кнопкой на ярлыке 1С > Запустить от имени администратора.

Отключить UAC (не безопасно!).

Зайти в свойства ярлыка 1С, и поставить галочку Выполнять эту программу от имени администратора.

У каждого из этих вариантов есть свои плюсы и минусы. Какой подойдет вам – решайте сами.

Если у вас все получилось, то давайте убедимся в том, что наша конфигурация была правильно опубликована. Для этого перейдем по ссылке http://127.0.0.1/orders/. Мы должны увидеть xml-файл. Это и есть структура нашей конфигурации.

Теперь заходим в ранее установленное приложение, и нажимаем кнопку Добавить.

Видим вот такую картинку:

Мобильное приложение в 1С Предприятии-проверка публикации

В поле адрес вбиваем IP компьютера, на котором опубликована конфигурация. Если надо, то можно указать другой порт, например, http://192.168.1.2:54215/orders. Учтите, просто вбив адрес без http:// у вас может ничего не сработать. Как узнать IP адрес вашего компьютера, и что должен быть открыт нужный порт и т.д. – я тут рассказывать не буду.

Далее жмем кнопку Загрузить.

Мобильное приложение в 1С Предприятии-проверка публикации IP

Увидим вот такую картинку. Давайте остановимся не на долго. Помните мы заполняли свойства конфигурации? Ну вот тут можете сопоставить одно к другому и использовать в своих целях.

Обязательно поставьте галочку Перезапуск из конфигуратора.

Нажимаем Готово. Теперь откроется окно выбора конфигурации. Если зажать на конфигурации палец и из всплывающего меню выбрать Изменить, то станет доступным такое окно:

Мобильное приложение в 1С Предприятии- окно выбора конфигурации

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

Давайте зайдем в конфигурацию, и посмотрим, что у нас получилось.

Мобильное приложение в 1С Предприятии-конфигурация результат

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

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

А теперь нажмем кнопку Обновить. И смотрим на телефон – приложение могло обновиться, а могло и нет. (почему? Раньше же обновляло.) Если не обновилось, тогда выводим кнопочку:

Мобильное приложение в 1С Предприятии-обновление

И нажимаем на нее, смотрим на открытую конфигурацию в телефоне. Через пару секунд, телефон должен перезапустить конфигурацию, и мы увидим вот такую форму:

Мобильное приложение в 1С Предприятии-запуск конфигурации

Я специально выделил заголовки в рамку, и хочу сейчас вернуться в свойство формы:

Мобильное приложение в 1С Предприятии-свойство формы

В Андроиде есть разграничение между заголовком основной программы и заголовками формы которые показывает программа. 1С тоже так сделали, но, тут видать ошибка, потому что эти два заголовка идентичные, и ни один из них скрыть, для освобождения пространства – вы не можете.

Заголовок берется из свойств формы согласно приоритетам как я расписал в картинке, т.е. вначале программа берет Расширенное представление и т.д. Поведение идентично стационарной платформе, однако иногда про это забывают.

Для того, чтобы попрактиковаться – предлагаю скопировать нашу тестовую базу и переименовать ее в warehouse (дальше по статье поймете почему). И в каждой базе – изменим надпись с «Привет МИР!» на «Заказы» и «Склад». Обязательно подключите эту базу в платформу для разработчиков и попробуйте поочередно обновлять базы, зайдите и выйдите. Цель – понять, как работают обновления базы с компьютера.

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

Конфигурация для компиляции приложения

Помните в архиве, скаченном с сайта 1С, у нас была конфигурация? Давайте теперь разберемся с ней. Для этого нам понадобятся обе базы. Начнем с того, что после установки вам надо вначале зайти в конфигуратор и создать пользователя с админскими правами. После этого – заходим в базу.

Сразу заходим в Сервис > Настройки приложения и заполняем все, что нам надо. Что и зачем – написано в справке, основная идея в том, что если работаете вы с разных компьютеров, то надо что бы на каждом из них были установлены все пакеты и прописаны пути.

1С, кроме прочего – требует еще утилиту PuTTY, она нужна при компиляции под iOS. К сожалению, обойти это не получается, т.е. разработчики уже сразу считают, что вы будете компилировать под iOS. Поэтому я просто выбираю папку Soft и все.

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

Тут в наименование берется имя компьютера, поэтому не меняйте его.

Далее идем в Сервис > Редактирование поставщика.

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

com.example.helloworld.

Где com – обычно либо окончание сайта, либо просто локаль автора (например — ru, ua и т.д.).

Example – либо продолжение сайта, либо ваше ФИО. Т.е. по сути, нечто уникальное, которое идентифицирует вас.

Helloworld – имя приложения. В нашем случае это может быть orders.

Я выбрал себе такое имя пакета: ua.dnv + имя приложения

Внимание! Имя должно содержать только латиницу и цифры, ну и часть спец символов. Каждая часть названия – подчиняется правил объявления переменной, т.е. нельзя называть вот так rfё.1cd.dd#

Далее нам необходимо создать ключ поставщика. Это очень важный шаг. Например, если андроид нашел приложение с таким же именем пакета, то он проверяет подпись – если подпись не совпадает, то андроид не обновит это приложение. Соответственно, если вы потеряете ключ, то обновить существующие приложения у клиентов не выйдет. А если вы распространяете свое приложение про помощи площадки Google Play, то вы не сможете обновить там приложение. Придется создавать новое при этом теряя все скачки, голоса и т.д.

Итак, нажимаем на ссылку Создать ключ разработчика. Все поля, кроме пароля и псевдонима – можно заполнять на каком угодно языке.

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

Я заполнил вот так. Жмем теперь Сформировать ключ. Дальше программа заполнит все сама.

Мобильное приложение в 1С Предприятии-поставщик мобильных решений

Ставим галочку «Для ОС Android» и записываем элемент.

Далее нам надо подключить архив мобильной платформы, что бы программа могла скомпилировать все. Для этого сверху откроем справочник Мобильные платформы. Тут надо обратить внимание на такой момент – вся эта информация будет храниться в базе, т.е. если мы каждую платформу будем вставлять в базу в полном объеме – у нас очень быстро вырастит база, а нам это не надо. Поэтому мы немного урезаем архив. Из справки:

При загрузке система ожидает, что мобильная платформа будет представлена zip-файлом со следующей структурой (регистр имени файла и каталога — важен!), остальные файлы в архиве игнорируются:

  • Android\prjandroid-arm.zip — мобильная платформа для ОС Android на платформе ARM
  • Android\prjandroid-x86.zip — мобильная платформа для ОС Android на платформе x86
  • iOS\prjios.zip — мобильная платформа для iOS (мульти язычная)
  • iOS\prjios_en_ru.zip — мобильная платформа для iOS (только русский и английский языки)

Так как я не компилирую под iOS, но выбора у меня нет, то мне придется и те файлы оставить. Убедимся, что при входе в архив – у нас вначале появляется папка Android и iOS, а в них уже те файлы что надо. Т.е. в архиве должна быть только 1 папка.

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

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

Если бы сюда еще информация о найденных и исправленных багов добавлялась – этой конфигурации бы цены не было :).

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

Назовем файл как-то по-человечески, например, orders и warehouse соответственно. Это xml-представление конфигурации. В конфигурации для сборки – открываем справочник Мобильные конфигурации и для каждой конфигурации создаем независимые группы первого уровня — Заказы и Склад. Заходим в группу и добавляем элемент. Слева вверху нажимаем Загрузить конфигурацию и выбираем соответствующий файл.

Далее программа подхватывает имя конфигурации и ее версию. Тоже самое сделаем для конфигурации Склад.

А теперь пора бы уже создать и приложение, но придётся заполнить еще одну форму. Для этого открываем справочник Мобильные приложения и создаем группу, без группы нельзя. В группе мы указываем все что нам может пригодится.

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

Называем группу, в нашем случае – это Заказы.

Ставим галочку Для ОС Android.

Выбираем версию мобильной платформы, на которой будем компилировать.

Пишем идентификатор решений – orders. Справа покажется полный идентификатор приложения, еще правее есть кнопка Проверить уникальность идентификатора. Она проверяет идентификаторы в текущей базе. Идеально было бы, что бы программа проверяла уникальность на площадке, где вы собираетесь разместить приложение в будущем. Но пока и так сойдет.

Указываем версию приложения и номер сборки.

Тут остановимся подробней. По номеру сборки – программа Android проверяет версию программы, т.е. если у вас установлена программа с номером сборки 22, то программу с номером сборки 20 вы уже не поставите. Этот номер не имеет дробной части, это целое число. На моей практике – доходило до нескольких тысяч. Это не значит, что если вы подняли номер сборки – то «обязаны» опубликовать приложение.

А версия приложения – это представления для пользователя. Как все любят, что-то вроде 1.21.44.

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

Теперь давайте-таки создадим само приложение. Заходим в созданную группу и создаем новый элемент:

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

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

Теперь нам надо забрать эти файлы. Забрать их можно на вкладке Результаты сборки.

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

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

Повторите тоже самое для конфигурации «Склад». И тоже установите на телефон. И так, нам надо работать с двумя конфигурациями, а это дико не удобно, когда они являются разными приложениями. Давайте сделаем так, чтобы эти две конфигурации у нас были в одном приложении. Для этого создадим новую группу в справочнике Мобильные приложения. И заполним ее вот так:

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

Отличие в том, что в табличной части, где указываются ресурсы конфигураций – я указал и Заказы и Склад. Теперь создаем элемент справочника в этой группе:

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

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

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

Но давайте разберемся попутно с еще одним моментом – это иконки и заставка. Для этого откроем справочник Графические ресурсы. И создадим там новый элемент, который назовем Заказы+Склад.

1С нам подсказывает структуру архива:

При загрузке графической информации системы ожидает, что графическая информация будет представлена zip-файлом со следующей структурой (регистр имени файла и каталога — важен!):

  • Android\icon-36×36.png
  • Android\icon-48×48.png
  • Android\icon-72×72.png
  • Android\icon-96×96.png
  • Android\splash-320×480.png
  • Android\splash-480×854.png
  • Android\splash-640×960.png
  • Android\splash-768×1024.png
  • Android\splash-800×1280.png
  • Android\splash-854×480.png
  • Android\splash-1024×768.png
  • Android\splash-1280×800.png
  • Android\splash-1536×2048.png
  • Android\splash-2048×1536.png

Где icon – иконка соответствующего разрешения для приложения, а splash – заставка. Давайте сделаем такой архив. Для этого зайдем, например, на сайт http://www.iconsearch.ru справа вверху выберем фильтр для иконок 128х128. И найдем то, что нам по нраву. Не забываем про лицензии на приложения. Мне, например, понравилась вот эта иконка http://www.iconsearch.ru/detailed/19501/6/.

Тут нужного мне формата нету, поэтому я просто качаю эту иконку и пережимаю под меньшие размеры. Потом иду на другой сайт, например, на этот http://wallpaperswide.com, и ищу то что мне понравилось. Я думаю, что все понимают, что изображение должно нормально выглядеть и под разные форматы экрана (4:3, 16:9) и под разные разрешения экрана, ну и, конечно же, под разную ориентацию.

Мне, например, понравилась вот эта картинка:
http://wallpaperswide.com/footprints_2-wallpapers.html.

Там же я качаю нужные мне форматы. Однако обратите внимание – все придется пережать в png, и повернуть на 90 градусов, так как в имени — разрешение не зря указанно именно в такой последовательности. У меня получился вот такой набор:

Мобильное приложение в 1С Предприятии-  ярлык

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

Вот так теперь оно выглядит среди прочих приложений:

Мобильное приложение в 1С Предприятии-  мобильные приложения рабочий стол

Вот так оно выглядит среди остальных приложений. Кстати обратите внимание на то, что при пережатии при помощи Paint – иконка потеряла прозрачность. Так что учтите это. Вот так теперь выглядит окно запуска:

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

И при входе – мы увидим пустой список баз, нажимаем Добавить. И выбираем нужный нам шаблон.

Мобильное приложение в 1С Предприятии-  шаблон

Почему шаблон? Потому что у вас может быть много баз с одинаковыми конфигурациями. При обновлении – вы обновляете шаблон, и, как следствие, все базы, которые были на основе него сделаны.

Мобильная платформа, конфигурация, обновление

Каким образом можно разрабатывать под мобильную платформу

К текущему моменту вы уже должны были бы определиться с вопросом о том, подходит вам мобильная платформа или нет. В независимости от вашего ответа мы пойдем дальше.
Итак, как же все-таки работать с мобильной платформой? Как передать в нее конфигурацию?
Давайте начнем с того – каким образом можно получить то, что мы хотим на мобильном устройстве?

Напомню, на текущий момент у нас существуют два варианта:

  1. Установить платформу для разработчика и добавить в нее конфигурацию через публикацию на компе.
  2. Скомпилировать нашу конфигурацию до apk-файла (это файл установки программы на андроиде) и запустить его на нашем телефоне.

Обновляемая конфигурация

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

Под нее программировать довольно просто: сконфигурировали — опубликовали в web (в конфигураторе: Конфигурация — Мобильное приложение — Публиковать; указываем имя публикации, отличное от имени публикации базы данных для веб доступа, если таковое имеется), затем нажали кнопку «Обновить» на телефоне. Или поставили галочку «Обновлять мобильные приложения» в конфигурации: тогда при входе пользователя в базу на телефоне (при наличии доступа к серверу конфигураций) или если он находиться в текущий момент в этой конфигурации, то мобильное приложение само обновит конфигурацию. Не нужно ничего компилировать и обновлять вручную. Правда в этом случае вы не сможете обновить мобильную платформу, не скинув ее отдельным файлом, или без помощи других сервисов.

Фиксированная конфигурация

Это вариант скомпилированной до apk-файла конфигурации.

Соответственно, если вы изменили что-то в конфигурации, вам необходимо всем пользователям отправить этот файлик (вес — около 40 Мб, стоит отметить, что с версии 8.3.3.42 – файл весит чуть более 20 Метров, но теперь надо самостоятельно контролировать архитектуру процессора и ставить соответствующую версию), и все должны переустановить приложение на телефоне. В этом случае обновится и платформа, и конфигурация. Данные должны остаться.

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

Выбрав этот вариант, вы можете расположить свой apk-файл в интернет-магазинах типа Google Play, где приложение будет продаваться или распространяться бесплатно (к слову, 1С еще не определилась с лицензиями до конца, но разрешает использовать без её ведома до 50 мобильных устройств).

Если конфигурация обновляется, вы размещаете новый apk-файл в интернет-магазине, и вскоре он обновится у всех купивших приложение.

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

Этот вариант подходит также для отладки конфигурации до момента конечной компиляции до apk-файла.

Предыдущая версия статьи опубликована на ресурсе infostart.ru.
Текущая версия статьи модифицирована и актуализирована под новые версии (2014 год).

PDF-версия статьи для участников группы ВКонтакте

Мы ведем группу ВКонтакте — http://vk.com/kursypo1c.

Если Вы еще не вступили в группу — сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.

[sociallocker id=»136011″]
Статья по программированию - в PDF-формате

Статья в PDF-формате

Вы можете скачать эту статью в формате PDF по следующей ссылке: Курсы-по-1С.рф — Мобильная платформа 1СПредприятие 8 первые шаги.pdf

[/sociallocker]
Если Вы уже участник группы — нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.

Комментарии / обсуждение (293):

  1. Анна

    Подскажите, есть конфигурация для мобильной платформы. Записываю ее в файл, она записывается в формате 1cema.zip. В архиве папка Android внутри которых папки ARM и i386, в них драйвера для оборудования.
    На устройстве развернут webserver for android, через который в мобильной платформе подключаю файл 1cema.xml, драйвера также надо перебрасывать в какую-то папку на устройстве?

      • Анна

        ну вот записываю в файл демо библиотеку подключаемого оборудования для мобильной платформы. Получаю 1cema.zip и там в папке android в корне com_1c_MobileBarcodeScanner, в папке ARM com_1c_MobileBarcodeScanner,RSDriver,RSPrinter и в папке i386 такиеже

        • Поддержка курса по EDT

          потому что это работа с внешнии компонентами, а их надо подключать отдельно в сборщике при компиляции. Если я вас правильно понял

  2. Глебов Александр

    Хочу сделать обмен между стационарной базой и моб. приложением. Как правильней организовать: через HTTP (Post) или Web (SOAP) сервис?

  3. Анна

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

  4. freez1301

    Подскажите пожалуйста, как можно отредактировать AndroidManifest.xml. Неужели ставить точку останова в сборщике перед моментом компиляции? Или же его можно отредактировать в prjandroid-arm?

    • Поддержка курса по EDT

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

      • freez1301

        ну если я все правильно понимаю, то если добавить такую строку android:screenOrientation=»landscape», то приложение не будет реагировать на поворот экрана (взял это с stackoverflow, только начинаю разбираться с моб платформой)

      • Анна

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

            • Поддержка курса по EDT

              Обновление от 02.09.2016
              Версия 3.01 (тестовая)
              Среди обновлений:
              1. Поддержка Android 6
              2. Возможность получить IMEI
              3. На Android 6 — не работают больше FakeSMS

              • Анна

                3. На Android 6 — не работают больше FakeSMS

                Получается в данной версии работы с NFC нету?

                • Поддержка курса по EDT

                  Почему же, есть, только принцип работы — через глобальные оповещения.

  5. Виталий

    Добрый день!

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

    • Поддержка курса по EDT

      Зависит от пришивок, также можно скачать внешние приложения, помню такие раньше были, а из самой 1С — разве что только если написать соответствующую ВК.

  6. Анна

    Подскажите, как избавиться от запроса в цикле, а то медленно так получается. Какие методы есть, чтобы избежать данную конструкцию?

    ПроцентПереоценка = Константы.ПроцентПереоценкаТовара.Получить();

    Для каждого СтрокаПроверки из Товары Цикл

    Запрос = Новый Запрос;
    Запрос.Текст =
    «ВЫБРАТЬ
    |ТоварыВРозницеОстатки.Номенклатура,
    |ТоварыВРозницеОстатки.КоличествоОстаток,
    |ЦеныНоменклатурыСрезПоследних.Цена КАК Закуп,
    |ЦеныНоменклатурыСрезПоследних.Цена КАК Розница,
    |ЦеныНоменклатурыСрезПоследних.ТипЦен
    |ИЗ
    |РегистрНакопления.ТоварыВРознице.Остатки КАК ТоварыВРозницеОстатки
    |ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
    |ПО ТоварыВРозницеОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
    |ГДЕ
    |ТоварыВРозницеОстатки.Номенклатура = &н
    |И ЦеныНоменклатурыСрезПоследних.ТипЦен = &тр»;

    Запрос.УстановитьПараметр(«н», СтрокаПроверки.Номенклатура);
    Запрос.УстановитьПараметр(«тр», Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию(«Розничные»));

    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();

    Пока Выборка.Следующий() Цикл

    Если Выборка.КоличествоОстаток>0 Тогда

    если Строка(СтрокаПроверки.ТипЦен)= «Розничные» Тогда

    РозницаЦена= Выборка.Розница;
    ПроцентОтЧисла = РозницаЦена * (ПроцентПереоценка/100);
    Разница = РозницаЦена-ПроцентОтЧисла;

    Если Разница >= СтрокаПроверки.Цена Тогда

    Сообщить(Строка(СтрокаПроверки.Номенклатура) + » нельзя переоценить в меньшую сторону пока он не реализуется по розничной цене «+ РозницаЦена + » !»);
    КонецЕсли;

    КонецЕсли;

    КонецЕсли;

    КонецЦикла;

    КонецЦикла;

    • Поддержка курса по EDT

      Добрый вечер. Я не знаю как это относится к мобильной платформе :) Но вам явно надо пройти обучение, вы допускаете самые примитивные ошибки.
      В целом, ваш запрос будет выглядет вот так:

      ПроцентПереоценка = Константы.ПроцентПереоценкаТовара.Получить();
       Товар = Товары.Выгрузить().ВыгрузитьКолонку("Номенклатура");
       
       Запрос = Новый Запрос;
       Запрос.Текст =
       "ВЫБРАТЬ
       |  Товары.Номенклатура КАК Номенклатура,
       |  Товары.ТипЦен КАК ТипЦен,
       |  Товары.Цена
       |ПОМЕСТИТЬ Товары
       |ИЗ &Товары КАК Товары
       |ИНДЕКСИРОВАТЬ ПО
       |  Номенклатура,
       |  ТипЦен;
       |ВЫБРАТЬ
       |  ВложенныйЗапрос.Номенклатура,
       |  ВложенныйЗапрос.Розница
       |ИЗ
       |  (ВЫБРАТЬ
       |      ТоварыВРозницеОстатки.Номенклатура КАК Номенклатура,
       |      ЦеныНоменклатурыСрезПоследних.Цена КАК Розница,
       |      ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен
       |  ИЗ
       |      РегистрНакопления.ТоварыВРознице.Остатки(, Номенклатура В (&Номенклатура)) КАК ТоварыВРозницеОстатки
       |          ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(,ТипЦен = &ТипЦен И Номенклатура В (&Номенклатура)) КАК ЦеныНоменклатурыСрезПоследних
       |          ПО ТоварыВРозницеОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура) КАК ВложенныйЗапрос
       |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Товары КАК Товары
       |      ПО ВложенныйЗапрос.Номенклатура = Товары.Номенклатура И ВложенныйЗапрос.ТипЦен = Товары.ТипЦен
       |ГДЕ ВложенныйЗапрос.Розница - ВложенныйЗапрос.Розница * (&ПроцентПереоценка / 100) >= Товары.Цена";
       
       Запрос.УстановитьПараметр("Номенклатура", Товар);
       Запрос.УстановитьПараметр("ПроцентПереоценка", ПроцентПереоценка);
       Запрос.УстановитьПараметр("ТипЦен", Справочники.ТипыЦенНоменклатуры.ПолучитьСсылку(Новый УникальныйИдентификатор("sfgsdg43-dfgdfg-gerg-ergergr")); //нельзя искать по имени, и по коду тоже, лучше по UID
       Запрос.УстановитьПараметр("Товары",Товары.Выгрузить(,"Номенклатура,ТипЦен,Цена");
       РезультатЗапроса = Запрос.Выполнить().Выгрузить();
       
       
       Для Каждого Стр Из РезультатЗапроса Цикл
           Сообщить("" + Стр.Номенклатура + " нельзя переоценить в меньшую сторону пока он не реализуется по розничной цене" + Стр.Розница + " !")      
       КонецЦикла;

      Писал в блокноте, так как нету такой конфы как у вас, так что могут быть ошибки.

      Я советую настоятельно пройти этот курс 1С за 21 день

  7. Анна

    Подскажите ,пожалуйста, как исправить ошибку и где смотреть. При обмене между ERP — БП

    Событие: Получение.
    Объект XDTO: Документ.ПоступлениеИРеализация, №00УП-0145698 от 21.07.2015 14:48:25.

    {ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(1446)}: Ошибка при вызове метода контекста (ПрочитатьXML)
    ФабрикаXDTO.Тип(КомпонентыОбмена.ФайлОбмена.URIПространстваИмен, КомпонентыОбмена.ФайлОбмена.ЛокальноеИмя));
    по причине:
    Ошибка преобразования данных XDTO:
    Чтение объекта типа: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.0}КлючевыеСвойстваСтатьяРасходов — [50555,11]
    Проверка дополнительного свойства:
    форма: Текст
    имя:

    • Ольга Кузнецова

      Здравствуйте!
      Ошибка произошла при загрузке объекта XDTO Документ.ПоступлениеИРеализация. Но в стандартных пакетах EnterpriseData такого объекта нет. Может быть, пакет был изменен в конфигурации одной из баз? Тогда нужно скопировать его в конфигурацию другой базы, чтобы он был одинаковый.

      • Анна

        теперь она не при получение документа. Пакет вроде проверила.

        Событие: Получение.
        Объект XDTO: УдалениеОбъекта, .

        {ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(1446)}: Ошибка при вызове метода контекста (ПрочитатьXML)
        ФабрикаXDTO.Тип(КомпонентыОбмена.ФайлОбмена.URIПространстваИмен, КомпонентыОбмена.ФайлОбмена.ЛокальноеИмя));
        по причине:
        Ошибка преобразования данных XDTO:
        Чтение объекта типа: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.0}КлючевыеСвойстваСтатьяРасходов — [103905,8]
        Проверка дополнительного свойства:
        форма: Текст
        имя:

        • Ольга Кузнецова

          Теперь при получении удаления объекта эта ошибка происходит. Все равно на несоответствие пакетов в базах похоже

      • Анна

        перенесла пакет XDTO из старой БП в обновленную. Прошлая ошибка прошла, но появилась вот такая

        {ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(1513)}: Значение не является значением объектного типа (Значение)
        ПолученныеДанныеСсылка = СсылкаОбъектаПоУИДОбъектаXDTO(ДанныеXDTO.Ссылка.Значение,

        • Ольга Кузнецова

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

        • Ольга Кузнецова

          И еще если Вы просто пакет скопировали, могут возникать ошибки, связанные с тем, что правила в базе настроены для другого пакета. Нужно посмотреть, чем отличаются пакеты эти. Для этого их можно, например, выгрузить в xsd-файлы и использовать в конфигураторе сервис «Сравнить файлы»

  8. Анна

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

  9. Анна

    А можете подсказать по БСП 2.3?

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

    {ОбщийМодуль.СтандартныеПодсистемыПовтИсп.Модуль(640)}: Не найдено серверное служебное событие «СтандартныеПодсистемы.КалендарныеГрафики\ПриОбновленииПроизводственныхКалендарей».
    ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(«ru = ‘Не найдено серверное служебное событие «»%1″».'»), Событие);

    Даже не знаю, где исправлять.

    • Поддержка курса по EDT

      Что-то вообще ничего не понятно, уточните вопрос и больше подробностей.

      • Анна

        Добавила в конфигурацию библиотеку стандартных подсистем 2,3. Добавила там подсистемы: Календарные графики и производственные графики. При создании производственного графика возникает ошибка про которую писала выше.

        • Поддержка курса по EDT

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

  10. lm-alex

    Доброго дня, может кто подаст идею решения на iOS. Есть HTML поле с объектом canvas, как получить DataURL обратно в 1С? На компьютере все работае через событие ПриНажатии, как быть с мобильной частью.
    Спасибо!

    • Поддержка курса по EDT

      Этот функционал не поддерживается в мобильной.
      Эта функция вызывается только при нажатии на гипер ссылку. Значит в ардес гиперрссылки и передавайте то что надо.
      Более подробно эта задача, с примерами, рассматривается на новом курсе http://курсы-по-1с.рф/1c-v8/1c-mobile-2016/.

  11. Анна

    Подскажите, как проверить есть ли добавляемая запись в табличной части документа?

    Пробовала так:

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

      СтруктураОтбора = Новый Структура;
      СтруктураОтбора.Вставить(«Цвета»,Цвета);
      ПодходящиеСтроки = Объект.Цвета.НайтиСтроки(СтруктураОтбора);
      Вот в последнее переменной и будут найденные строки. Если

      ПодходящиеСтроки.Количество() = 0 //Тогда строк не нашлось
  12. Игорь

    Мобильное приложение нормально опубликовалось под Апач. В виртуальной машине загрузилось, а на мобильнике не загружается: Ошибка HTTP при обращении к серверу: http://192.xxx.x.xx (port 80) after 30000ms
    При этом 80-ый порт вроде как именно Апач и использует (httpd.exe).
    В чем может быть ошибка?

    • Поддержка курса по EDT

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

      • Глебов Александр

        У меня та же ошибка при подключении через через интернет. На мобильном: Crome не заходит, нормально отображается только в браузере Puffin. Во внутренней сети все нормально.

          • Глебов Александр

            Мобильное приложение нормально опубликовалось под Апач. В виртуальной машине загрузилось, а на мобильнике не загружается: Ошибка HTTP при обращении к серверу: http://192.xxx.x.xx (port 80) after 30000ms При этом 80-ый порт вроде как именно Апач и использует (httpd.exe). В чем может быть ошибка?

            • Поддержка курса по EDT

              Проверяли — порт открыт? И с мобильника в браузере запускали?

              • Глебов Александр

                Из вне в windows через любой браузер — нормально. Проблема только подключения с мобильного устройства, Crome не выводит ни чего, страничка просто не отображается и висит. Нормально отобразилось только в браузере puffin, т.е. открылся xml файл конфигурации. Может проблема с сетью 4G? Я уже не знаю куда копать.

                • Поддержка курса по EDT

                  А какой IP адрес вы пишите на мобильном устройстве?
                  И он у вас в этот момент находится в wifi или мобильном интернете.

                • Глебов Александр

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

                  • Поддержка курса по EDT

                    Вы на том же компьютере проверяете? Или на каком то другом? Который не в вашей сети?
                    Так как роутер может вас перебрасывать на внутренний IP, даже если вы в браузере указываете внешний. Так что это не показатель.
                    А вот если вы подключаете, например, к домашнему компу через рабочий комп, то тут да, тогда можно копаться на устройстве :)

  13. Анна

    А подскажите как реализовать следующую вещь:

    На форме нужно сделать элементы управления через изображения:
    http://eslovnyk.com/img/Tooth_document.png

    Нужно создать макет на который разместить картинки и поставить им гиперссылке? Как это перенси в форму?

    • Поддержка курса по EDT

      Можно просто картинками, с указанием что это гипер сылка, и ловить нажатие на них.
      С табличным документов — будет сложнее.
      Либо сделайте табличную часть и в нее уже иконки добавьте.

        • Поддержка курса по EDT

          Ну так вы же динамически будете создавать элементы. Почему не должно работать? Конечно может оформление хромать будет.
          Второй вариант — это веб страница.
          Третий — флажки напротив картинок.
          Но вы учтите, что картинки должны быть минимум 1см, иначе пальцем не попасть, а в телефон может столько и не влезть.

      • Анна

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

        • Поддержка курса по EDT

          В смысле? А зачем вам их перемещать?
          Вы с управляемыми формами хорошо знакомы?

          • Анна

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

            • Поддержка курса по EDT

              А зачем вам это? Я в упор не понимаю задачи :)
              Смотрите, вы выводите каждый зуб отдельной картинкой, и у каждой картинки формируете событие ПриНажатии.Зачем вам картинку на картинку накладывать?

              • Анна

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

                • Поддержка курса по EDT

                  Подставляйте туда пустую картинку, а не просто убирайте все.

  14. Анастасия

    Обмен данными Клиент-Сервер работает на компьютере. переношу клиент на мобильную платформу, выполняю обмен , получаю ошибку:

    {ОбщаяКоманда.ВыполнитьОбмен.МодульКоманды(12)}: Ошибка при вызове метода контекста (Синхронизация)
    по причине:
    Ошибка вызова операции сервиса: {DataTrasfer}:ОбменДанными:Синхронизация()
    по причине:
    Ошибка SOAP сервера: Неизвестная ошибка. {WebСервис.ОбменДанными.Модуль(29)}: Ошибка при вызове метода контекста (НачатьЧтение)
    по причине:
    {WebСервис.ОбменДанными.Модуль(29)}: Ошибка при вызове метода контекста (НачатьЧтение)
    по причине:

    по причине:
    Номер сообщения меньше или равен номеру ранее принятого сообщения

    • Поддержка курса по EDT

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

      • Анастасия

        Разобралась, но если в справочнике записи находятся в папках то они не передаются . НапримерСправочник Статья , а в нём две папки: Поступления и расходы. Данные в этих папках не обновляются с мобильной платформой

        • Поддержка курса по EDT

          Проверьте порядок загрузки и иерархию на мобильном устройстве, она вообще там есть?

  15. Вика

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

    При выполнение синхронизации выдает ошибку:
    {ОбщаяКоманда.ВыполнитьСинхронизацию.МодульКоманды(14)}: Ошибка при вызове конструктора (WSОпределения): При создании описания сервиса произошла ошибка. http://192.168.100.104/mybox/ws/ОбменДанными.1cws?wsdl

    Гугл выдает по ссылке следующее:

    soap:Client
    Ошибка вызова операции сервиса: {DataTransfer}:ОбменДанными:getWSDL()
    по причине:
    Ошибка инициализации библиотеки модулей
    по причине:
    {WebСервис.ОбменДанными.Модуль(3,41)}: Переменная не определена (Данные)

    • Поддержка курса по EDT

      Ну во первых — никогда не используйте кириллицу в местах, где планируется работа через сеть, нигде, ни в именах пользователей, ни в путях.
      Но ошибка у вас не тут, а тут:
      soap:Client
      Ошибка вызова операции сервиса: {DataTransfer}:ОбменДанными:getWSDL()
      по причине:
      Ошибка инициализации библиотеки модулей
      по причине:
      {WebСервис.ОбменДанными.Модуль(3,41)}: Переменная не определена (Данные)
      Это декодированные данные. Декодировать такие штуки можно, например, здесь.

      • Вика

        Теперь столкнулась с такой ошибкой:

        {ОбщаяКоманда.ВыполнитьСинхронизацию.МодульКоманды(23)}: Ошибка при вызове метода контекста (Синхронизация): Ошибка вызова операции сервиса: {DataTransfer}:ОбменДанными:Синхронизация(): Ошибка SOAP сервера: Неизвестная ошибка. {WebСервис.ОбменДанными.Модуль(11)}: Ошибка при вызове метода контекста (НачатьЧтение)
        по причине:
        {WebСервис.ОбменДанными.Модуль(11)}: Ошибка при вызове метода контекста (НачатьЧтение)
        по причине:

        по причине:
        Неизвестный получатель

        код вроде тот:
        Процедура ПринятьИзменениеПоПлану(СтрокаСообщения)
        ЧтениеХМЛ = Новый ЧтениеXML;
        ЧтениеХМЛ.УстановитьСтроку(СтрокаСообщения);

        ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
        ЧтениеСообщения.НачатьЧтение(ЧтениеХМЛ);

        Пока ВозможностьЧтенияXML(ЧтениеХМЛ) Цикл
        Данные = ПрочитатьXML(ЧтениеСообщения.ЧтениеXML);
        Если Не Данные = Неопределено Тогда

        Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
        Данные.ОбменДанными.Загрузка = Истина;

        Данные.Записать();

        КонецЕсли;
        КонецЦикла;

        ЧтениеСообщения.ЗакончитьЧтение();
        КонецПроцедуры

        • Поддержка курса по EDT

          по причине:
          Неизвестный получатель

          Проверьте состав плана обмена на клиенте и на сервере

          • Вика

            С телефона синхроназация выполняеяется, а с кмпоьютера выдает
            {ОбщаяКоманда.ВыполнитьСинхронизацию.МодульКоманды(66)}: Ошибка при вызове метода контекста (НачатьЗапись): Неизвестный получатель. Подскажите, как исправить(

            Код команды ВыполнитьСинхронизацию:
            &НаКлиенте
            Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
            Если ВыполнитьСинхронизациюНаСервере() Тогда
            Сообщить(«Синхронизация прошла успешно!»);
            Иначе
            Сообщить(«При синхронизации были ошибки!»);
            КонецЕсли;
            КонецПроцедуры

            &НаСервере
            Функция ВыполнитьСинхронизациюНаСервере()
            Попытка
            ВСОпределение = Новый WSОпределения(«http://192.168.100.104/mybox/ws/ОбменДанными.1cws?wsdl»);
            ВСервис = ВСОпределение.Сервисы.Получить(«DataTransfer»,»ОбменДанными»);
            ВТочкаВхода = ВСервис.ТочкиПодключения.Получить(«ОбменДаннымиSoap»);
            ВОперация = ВТочкаВхода.Интерфейс.Операции.Получить(«Синхронизация»);

            Данные = Новый ХранилищеЗначения(ЗарегестрироватьВыгрузку(), Новый СжатиеДанных(9));

            ДанныеXDTO = ВСОпределение.ФабрикаXDTO.Создать(ВОперация.Параметры.Получить(«Данные»).Тип, Данные);

            ВСПрокси = Новый WSПрокси(ВСОпределение, «DataTransfer»,»ОбменДанными»,»ОбменДаннымиSoap») ;
            Ответ = ВСПрокси.Синхронизация(ДанныеXDTO);
            ПринятьИзменениеПоПлану(Ответ.Получить());
            Возврат Истина
            Исключение
            Сообщить(ОписаниеОшибки());
            Возврат Ложь;
            КонецПопытки;
            КонецФункции

            Процедура ПринятьИзменениеПоПлану(СтрокаСообщения)
            ЧтениеХМЛ = Новый ЧтениеXML;
            ЧтениеХМЛ.УстановитьСтроку(СтрокаСообщения);

            ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
            ЧтениеСообщения.НачатьЧтение(ЧтениеХМЛ);

            ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель,ЧтениеСообщения.Отправитель.НомерПринятого);

            Пока ВозможностьЧтенияXML(ЧтениеХМЛ) Цикл
            Данные = ПрочитатьXML(ЧтениеСообщения.ЧтениеXML);
            Если Не Данные = Неопределено Тогда

            Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
            Данные.ОбменДанными.Загрузка = Истина;

            Данные.Записать();

            КонецЕсли;
            КонецЦикла;

            ЧтениеСообщения.ЗакончитьЧтение();
            КонецПроцедуры

            Функция ЗарегестрироватьВыгрузку()

            ЗаписьХМЛ = Новый ЗаписьXML;
            ЗаписьХМЛ.УстановитьСтроку();
            ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();

            Узел = ПланыОбмена.ОбменСМобильнымиУстройствами.НайтиПоКоду(«ЦБ»);

            ЗаписьСообщения.НачатьЗапись(ЗаписьХМЛ,Узел);
            ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(Узел,ЗаписьСообщения.НомерСообщения);
            Пока ВыборкаИзменений.Следующий() Цикл
            ОбъектОбмена = ВыборкаИзменений.Получить();
            ЗаписатьXML(ЗаписьХМЛ,ОбъектОбмена);
            КонецЦикла;

            ЗаписьСообщения.ЗакончитьЗапись();

            Возврат ЗаписьХМЛ.Закрыть();

            КонецФункции

            • Поддержка курса по EDT

              смотрите составы планов обмена, у вас какой то объект зарегестрирован в одной базе и не зарегестрирован в другой
              На плане обмена — правой кнопкой — состав. Они должны быть идентичны в двух базах

  16. Николай

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

    • Поддержка курса по EDT

      Хм… Я даже не знаю что ответить. Вы хоть начните с чего-то :) Покажите где и что не получается.

    • Поддержка курса по EDT

      Если вы про эту ошибку:

      При запуске приложения на устройствах под управлением ОС Андроид 6.0 происходит ошибка
      Ошибка загрузки библиотек. Требуется перезагрузка или переустановка приложения.

      То да, вышло обновление 8.3.6.215 от 30.10.15

            • Поддержка курса по EDT

              Даже не знаю ответить. Что за приложение? Какая конфигурация? Начиная с какой версии начала проявляться ошибка? Вобщем тут слишком много вопросов.

              • Анастасия

                мобильная платформа 8.3.6.215.
                Приложение , которое идет с платформой (1cem-arm). В нем пытаюсь открыть свое приложение и выдает эту ошибку.

                • Поддержка курса по EDT

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

  17. Ар

    Попробовал создать, но на телефоне не работает. Создал объект тип=диаграмма, перекинул его на форму, создал команду:

    &НаКлиенте
    Процедура Сформировать(Команда)
        // Вставить содержимое обработчика.
        Получить(ТабДок);
    КонецПроцедуры

    &НаСервере
    Процедура Получить(Диаграмма)
       
         Диаграмма = Новый Диаграмма;
        // Вставить содержимое обработчика.
        //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
        // Данный фрагмент построен конструктором.
        // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
       
        Запрос = Новый Запрос;
        Запрос.Текст =
            "ВЫБРАТЬ
            |   Доход.Кошелек КАК Кошелек,
            |   СУММА(Доход.Сумма) КАК Сумма
            |ИЗ
            |   Документ.Доход КАК Доход
            |
            |СГРУППИРОВАТЬ ПО
            |   Доход.Кошелек
            |ИТОГИ
            |   СУММА(Сумма)
            |ПО
            |   Кошелек";
       
        РезультатЗапроса = Запрос.Выполнить();
       
        Диаграмма.Обновление = Ложь;
        Диаграмма.Очистить();
        Диаграмма.АвтоТранспонирование = Ложь;
        Точка = Диаграмма.УстановитьТочку("Сумма");
       
        ВыборкаКошелек = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
       
        Пока ВыборкаКошелек.Следующий() Цикл
            Серия = Диаграмма.УстановитьСерию(ВыборкаКошелек.Кошелек);
            Серия.Текст = ВыборкаКошелек.Кошелек;
            Серия.Расшифровка = ВыборкаКошелек.Кошелек;
            Диаграмма.УстановитьЗначение(Точка, Серия, ВыборкаКошелек.Сумма, Серия.Расшифровка);
        КонецЦикла;
        Диаграмма.ТипДиаграммы = ТипДиаграммы.Круговая;
        Диаграмма.АвтоТранспонирование = Истина;
        Диаграмма.Обновление = Истина;
       
        //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    КонецПроцедуры

    Что не так?

    • Поддержка курса по EDT

      Ну по сути — все не так :)
      Конструктор вам просто строит заполнение данных, но не связывает их ни с чем. Т.е. вам надо создать свой табличный документ, разместить на нем диаграмму и потом выполнить код:

      &НаКлиенте
      Процедура Прочее(Команда)
          ТаблДок = Новый ТабличныйДокумент;
          ТаблДок = ПрочееФрагмент();
          СделатьДиаграмму(ТаблДок);
          ТаблДок.Показать();
                           
      КонецПроцедуры

      &НаСервере
      Функция ПрочееФрагмент()
         
          Возврат ПолучитьОбщийМакет("График");

      КонецФункции

      &НаСервере
      Процедура СделатьДиаграмму(ТаблДок)
          Диаграмма  = ТаблДок.Рисунки.D1.Объект;
              //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
          // Данный фрагмент построен конструктором.
          // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
         
          Запрос = Новый Запрос;
          Запрос.Текст =
              "ВЫБРАТЬ
              |   ПоступлениеТоваров.Контрагент КАК Контрагент,
              |   СУММА(ПоступлениеТоваров.СуммаДокумента) КАК СуммаДокумента
              |ИЗ
              |   Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
              |
              |СГРУППИРОВАТЬ ПО
              |   ПоступлениеТоваров.Контрагент
              |ИТОГИ
              |   СУММА(СуммаДокумента)
              |ПО
              |   Контрагент";
         
          РезультатЗапроса = Запрос.Выполнить();
         
          Диаграмма.Обновление = Ложь;
          Диаграмма.Очистить();
          Диаграмма.АвтоТранспонирование = Ложь;
          Точка = Диаграмма.УстановитьТочку("СуммаДокумента");
         
          ВыборкаКонтрагент = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
         
          Пока ВыборкаКонтрагент.Следующий() Цикл
              Серия = Диаграмма.УстановитьСерию(ВыборкаКонтрагент.Контрагент);
              Серия.Текст = ВыборкаКонтрагент.Контрагент;
              Серия.Расшифровка = ВыборкаКонтрагент.Контрагент;
              Диаграмма.УстановитьЗначение(Точка, Серия, ВыборкаКонтрагент.СуммаДокумента, Серия.Расшифровка);
          КонецЦикла;
         
          Диаграмма.АвтоТранспонирование = Истина;
          Диаграмма.Обновление = Истина;
         
          //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

         
      КонецПроцедуры
  18. Ар

    Как создавать графики на мобильной платформе без обмена? В Вашем видео был пример с получением отчёта через обмен , а если У меня приложение само по себе то тогда как ?Программным путём делать их?

    • Поддержка курса по EDT

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

        • Поддержка курса по EDT

          Ну тогда да, строить вручную. Пока в мобильной 1С не все конструкторы и объекты доступны. Так что да — график надо будет строить вручную.

    • Поддержка курса по EDT

      Ну тут только официально 1С вам может ответить. Но если вы нашли баги, то пишите в 1С, и это ускорит выход исправлений.

  19. Настя

    Проблема с получением ключа разработчика. При создание выдает, что выполнение операции завершено с ошибками:1. Версия сборщика 1.0.4.40. На прошлых версиях все работало…..

    • Поддержка курса по EDT

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

      • Настя

        Финальную строку выдает:

        "C:\Program Files\Java\jdk1.8.0_60\bin\keytool" -genkeypair -v -keystore key.key -alias mybox -storepassmyboxmm -keypassmyboxmm -keyalg RSA -keysize 2048 -validity 10000 -dname"CN=Фамилия OU=Подразделение O=Организавция L=Город S=Область C=ru_RU"

        тут все норм с проблемами?

        • Поддержка курса по EDT
          "C:\Program Files\Java\jdk1.8.0_60\bin\keytool" -genkeypair -v -keystore key.key -alias mybox -storepass#myboxmm -keypass#myboxmm -keyalg RSA -keysize 2048 -validity 10000 -dname#"CN=Фамилия OU=Подразделение O=Организавция L=Город S=Область C=ru_RU"

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

          • Настя

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

  20. Настя

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

    • Поддержка курса по EDT

      попробуйте типо такого 1.0.0, Ну или ищите код в конфигураторе, по этой ошибке и увидите — что 1С ждет.
      З.Ы. В таких случаях — называйте версию сборщика, а то их уже много :)

  21. Татьяна

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

    Лог:
    Дата и время начала сборки : 06.10.2015 14:30:40
    Версия мобильной платформы : 8.3.6.182
    Графическая информация : MyBox — Полный набор для Android
    Путь к Android SDK : C:\mobile1c
    Используется Android SDK : 23
    Путь к Apache Ant : C:\mobile1c\apache-ant-1.9.5
    Путь к Java : C:\Program Files\Java\jdk1.8.0_60
    Рабочий каталог (и кеш) : C:\mobile1c\work
    Распаковка мобильной платформы
    Распаковка мобильной конфигурации: 0
    Распаковка картинки: Android\icon-36×36.png — указана
    Распаковка картинки: Android\icon-48×48.png — указана
    Распаковка картинки: Android\icon-72×72.png — указана
    Распаковка картинки: Android\icon-96×96.png — указана
    Распаковка картинки: Android\icon-144×144.png — указана
    Распаковка картинки: Android\splash-320×480.png — указана
    Распаковка картинки: Android\splash-480×854.png — указана
    Распаковка картинки: Android\splash-640×960.png — указана
    Распаковка картинки: Android\splash-768×1024.png — указана
    Распаковка картинки: Android\splash-800×1280.png — указана
    Распаковка картинки: Android\splash-854×480.png — указана
    Распаковка картинки: Android\splash-1024×768.png — указана
    Распаковка картинки: Android\splash-1280×800.png — указана
    Распаковка картинки: Android\splash-1536×2048.png — отсутствует
    Распаковка картинки: Android\splash-2048×1536.png — отсутствует
    Установка полного идентификатора приложения: com.e1c.mk1.mybox
    Установка версии приложения: 1
    Установка номера сборки приложения: 1
    Установка ключа для работы с картами Google
    Необходимый элемент обнаружен, значение установлено
    Проверка версии мобильной платформы, а также установка разрешений (если это необходимо)
    Устанавливаются разрешения, используемые мобильными конфигурациями
    Обрабатывается разрешение: Multimedia, Да
    Обрабатывается разрешение: Location, Да
    Обрабатывается разрешение: Telephony, Да
    Обрабатывается разрешение: Calendars, Нет
    Обрабатывается разрешение: LocalNotification, Нет
    Обрабатывается разрешение: Contacts, Да
    Обрабатывается разрешение: PushNotification, Нет
    Подготовка файла управления сборкой: local.properties.xml
    Подготовка файла управления сборкой: build.xml
    Подготовка файла управления сборкой: make.bat
    Начинается сборка
    Buildfile: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\build.xml

    -set-mode-check:

    -set-release-mode:

    -release-obfuscation-check:
    [echo] proguard.config is ${proguard.config}

    -check-env:
    [checkenv] Android SDK Tools Revision 24.3.4
    [checkenv] Installed at C:\mobile1c

    -setup:
    [echo] Project Name: 1cem
    [gettype] Project Type: Application

    -build-setup:
    [getbuildtools] Using latest Build Tools: 23.0.1
    [echo] Resolving Build Target for 1cem…
    [gettarget] Project Target: Android 6.0
    [gettarget] API level: 23
    [echo] ———-
    [echo] Creating output directories if needed…
    [mkdir] Created dir: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res
    [mkdir] Created dir: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\rsObj
    [mkdir] Created dir: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\rsLibs
    [mkdir] Created dir: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\gen
    [mkdir] Created dir: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\classes
    [mkdir] Created dir: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\dexedLibs
    [echo] ———-
    [echo] Resolving Dependencies for 1cem…
    [dependency] Library dependencies:
    [dependency] No Libraries
    [dependency]
    [dependency] ——————
    [echo] ———-
    [echo] Building Libraries with ‘release’…
    [subant] No sub-builds to iterate on

    -dex:

    -crunch:
    [crunch] Crunching PNG Files in source dir: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\res
    [crunch] To destination dir: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res
    [crunch] Processing image to cache: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\res\drawable-hdpi\icon.png => C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-hdpi\icon.png
    [crunch] (processed image to cache entry C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-hdpi\icon.png: 0% size of source)
    [crunch] Processing image to cache: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\res\drawable-hdpi\move_button.png => C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-hdpi\move_button.png
    [crunch] (processed image to cache entry C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-hdpi\move_button.png: 0% size of source)
    [crunch] Processing image to cache: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\res\drawable-ldpi\icon.png => C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-ldpi\icon.png
    [crunch] (processed image to cache entry C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-ldpi\icon.png: 0% size of source)
    [crunch] Processing image to cache: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\res\drawable-ldpi\move_button.png => C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-ldpi\move_button.png
    [crunch] (processed image to cache entry C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-ldpi\move_button.png: 0% size of source)
    [crunch] Processing image to cache: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\res\drawable-mdpi\icon.png => C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-mdpi\icon.png
    [crunch] (processed image to cache entry C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-mdpi\icon.png: 0% size of source)
    [crunch] Processing image to cache: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\res\drawable-mdpi\move_button.png => C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-mdpi\move_button.png
    [crunch] (processed image to cache entry C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-mdpi\move_button.png: 0% size of source)
    [crunch] Processing image to cache: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\res\drawable-xhdpi\icon.png => C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-xhdpi\icon.png
    [crunch] (processed image to cache entry C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-xhdpi\icon.png: 0% size of source)
    [crunch] Processing image to cache: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\res\drawable-xhdpi\move_button.png => C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-xhdpi\move_button.png
    [crunch] (processed image to cache entry C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-xhdpi\move_button.png: 0% size of source)
    [crunch] Processing image to cache: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\res\drawable-xxhdpi\icon.png => C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-xxhdpi\icon.png
    [crunch] (processed image to cache entry C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable-xxhdpi\icon.png: 0% size of source)
    [crunch] Processing image to cache: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\res\drawable\edit_shadow.9.png => C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable\edit_shadow.9.png
    [crunch] (processed image to cache entry C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable\edit_shadow.9.png: 0% size of source)
    [crunch] Processing image to cache: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\res\drawable\trans.png => C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable\trans.png
    [crunch] (processed image to cache entry C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\res\drawable\trans.png: 0% size of source)
    [crunch] Crunched 11 PNG files to update cache
    [crunch] C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\res\drawable\trans.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited

    -package-resources:
    [package] C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\AndroidManifest.xml:58: Tag attribute name has invalid character ‘%’.
    [package] C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\AndroidManifest.xml:59: Tag attribute name has invalid character ‘%’.
    [package] Result: 1

    -package:
    [apkbuilder] Current build type is different than previous build: forced apkbuilder run.
    [apkbuilder] Creating 1cem-release-unsigned.apk for release…

    BUILD FAILED
    C:\mobile1c\tools\ant\build.xml:958: The following error occurred while executing this line:
    C:\mobile1c\tools\ant\build.xml:969: The following error occurred while executing this line:
    C:\mobile1c\tools\ant\build.xml:312: com.android.sdklib.build.ApkCreationException: java.io.FileNotFoundException: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\1cem.ap_ does not exist
    at com.android.sdklib.build.ApkBuilder.init(ApkBuilder.java:469)
    at com.android.sdklib.build.ApkBuilder.(ApkBuilder.java:396)
    at com.android.ant.ApkBuilderTask.execute(ApkBuilderTask.java:334)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:396)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at com.android.ant.IfElseTask.execute(IfElseTask.java:124)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at com.android.ant.IfElseTask.execute(IfElseTask.java:124)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:396)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:435)
    at org.apache.tools.ant.Target.performTasks(Target.java:456)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1376)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1260)
    at org.apache.tools.ant.Main.runBuild(Main.java:853)
    at org.apache.tools.ant.Main.startAnt(Main.java:235)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:285)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:112)
    Caused by: java.io.FileNotFoundException: C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\1cem.ap_ does not exist
    at com.android.sdklib.build.ApkBuilder.checkInputFile(ApkBuilder.java:938)
    at com.android.sdklib.build.ApkBuilder.init(ApkBuilder.java:438)
    … 62 more

    Total time: 1 second

    • Поддержка курса по EDT

      Похоже, что ошибка в этом месте:
      [package] C:\mobile1c\work\a2f48d10-ffc2-475e-a28b-f02161a51381\bin\AndroidManifest.xml:59: Tag attribute name has invalid character ‘%’.
      Вы нигде там % в настройках не используете? Можете пройтись точкой останова и словить момент, когда идет удаление временных файлов, и там уже открыть манифест, который сгенерировался и проверьте его на содержание спец символов.

      • Татьяна

        Попробовала собрать на платформе 8.3.5. Собрать собрала, а приложение не устанавливается. А если все делать без галочки геопозицирование в требуемых разрешениях то все работает на всех платформа. % нигде не нашла

        • Поддержка курса по EDT

          Тогда сделайте проще — сравните полученный вами манифест, с тем, который идет в платформе для разработчиков, а именно этот пункт:

          <permission    
                name="com.e1c.mobile.permission.MAPS_RECEIVE"
                protectionLevel="signature"/>
          <uses-permission name="com.e1c.mobile.permission.MAPS_RECEIVE"/>

          Потому что в шаблоне он выглядит вот так:

            <permission android:name="%application.package%.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
            <uses-permission android:name="%application.package%.permission.MAPS_RECEIVE"/>

          Т.е. есть подозрение, что 1С просто не заменяет имя пакета в этом куске.

          • Татьяна

            манифест в платформе для разрабов:

            манифесты, которые генерирует сборщик там набор символов. гугл выдает :
            This page contains the following errors:

            error on line 1 at column 1: Document is empty
            error on line 1 at column 1: Encoding error
            Below is a rendering of the page up to the first error.

            • Поддержка курса по EDT

              Перед удалением файлов временных — поставьте останову и посмотрите на сгенерированный манифест.

              • Татьяна

                Подскажите на какой строчке поставить точку останова. В общих модулях->сборкамобильныхприложений->в какой процедуре?

                • Поддержка курса по EDT

                  ищи где идет удаление файлов, вот перед ними и ставьте точку, в разных версиях — может отличаться положение

          • Татьяна

            манифесты, которые генерирует сборщик там набор символов. гугл выдает : This page contains the following errors: error on line 1 at column 1: Document is empty error on line 1 at column 1: Encoding error Below is a rendering of the page up to the first error. Источник: ©Курсы-по-1С.рф

            • Поддержка курса по EDT

              Перед тем, как происходит сама сборка, он генерирует манифест и потом компилирует приложение, а потом его удаляет.

  22. Татьяна

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

    • Поддержка курса по EDT

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

      Запуск = Новый ЗапускПриложенияМобильногоУстройства();
      Запуск.Действие = "android.location.GPS_ENABLED_CHANGEPICK";
      Запуск.Данные     = "enabled:true";
      Запуск.Запустить(Истина);

      Но на всех можно открыть окно включения GPS, при помощи вызова намерения:

      android.settings.LOCATION_SOURCE_SETTINGS

      Однако вы не получите ответ, вида — включили или нет. После закрытия окна — надо будет проверить вручную доступность провайдеров и если не доступны, то попросить еще раз включить. Как то так.

  23. Владимир

    Как сделать фото с задней камеры?

    Нашел такую строчку в 1с:итс
    Передняя = СредстваМультимедиа.ПоддерживаетсяФотоснимок(ТипКамерыУстройства.Передняя);

    но пишет типкамерыустройства переменная не определена

  24. Владимир

    Проблемы с мультимедиа. После сборки APK не работает мультимедиа. Как в сборщике приложение в мобильной конфигурации есть таблица с разрешением:
    Multimedia, Location, Contacts, Calendars,Telephony но Использование не стоит. Как включить мультимедию в сборку?

  25. kuza_87

    {CommonModule.FileOperations.Module(296)}: Выполнение операции завершено с ошибками: 1
    Raise NStr(«en=’Operation completed with errors:’;ru=’Выполнение операции завершено с ошибками:'») + » » + ReturnCode;

    Вот такая ошибка при создании ключа разработчика.

    • Поддержка курса по EDT

      Это баг в конфигурации, пробуйте создать ключ в более старой версии, а потом ее обновить, или создать ключ отдельно.
      Тут можно почитать как это сделать. Вас интересует до 3 пункта. потом полученный ключ импортируете в 1с

  26. RedBull

    уважаемые спецы 1С. Подскажите, можно ли из скомпилированного файла apk извлечь конфигурацию? Если да, то как…

    • Поддержка курса по EDT

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

  27. piterpen323

    Здравствуйте. Немного знакомлюсь с мобильным приложением, благодаря вашему курсу (подписался на платный курс, жду когда выйдет, в прошлом году опоздал), дошел до написания своей конфигурации.
    У меня вопрос.
    При работе с мобильной платформой проблем не возникает. Обновляю на компе — обновляется на мобильнике. Данные при этом не теряются.
    Далее скомпилировал apk и разместил на Play Market.
    Все хорошо, но возникает проблема. При обновлении приложения через PlayMarket, как я понимаю, оно удаляется и устанавливается заново. То есть после обновления база данных очищается. Хотелось бы узнать как хранятся данные, как ее можно сохранять перед обновлением и восстанавливать после обновления?

    • Поддержка курса по EDT

      На самом деле разницы нет. Единственное — вы не можете установить приложение самостоятельно, а потом обновить его с гугл плэй. Т.е. надо устанавливать и обновлять только через гугл плей. Нельзя комбинировать.
      А на счет курса — уже начинается третий поток. Так что не пропустите. И там мы кстати рассматриваем вариант сохранения данных и восстановление.

      • piterpen323

        По моим наблюдениям, приложение, установленное в ручную (просто устанавливаю apk), после установки, показывается в гугл плэй как установленное. Более того, оно обновляется через гул плэй. Но при обновлении через гугл плэй данные приложения теряются.

        • Поддержка курса по EDT

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

          Почему именно так работает — ну тут уже скорее вопрос к гуглу:)

  28. Александр

    Здравствуйте, я в проекте в одной из форм в мобильном приложении показываю картинку товара. Создаю поле картинки, Двоичные данные записываю в реквизит справочника с Типом ХранилищеЗначения, далее пользуюсь функцией ПолучитьНавигационнуюСсылку. Картинка показывается, но не всегда, то есть иногда выдает пустое поле. Подозреваю, что ХранилищеЗначения не стабильно срабатывает. Подскажите, пожалуйста, как это можно оптимизировать. Платформа 8.3.5.1088.

    • Поддержка курса по EDT

      В двух словах — переопределяйте хранилище на клиенте и указываейте адрес именно этого хранилища.
      Мы вроде в бесплатном тренинге эту тему затрагивали, там где с мультимедиа работали. И лучше данные такого типа или вообще хранить вне базы, или уже в регистре сведений, они работают значительной быстрее и не будет нагрузок при получении объекта номенклатуры.
      Кроме этого — версия стационарной 1С — мне ни о чем не говорит :)

        • San4opa

          Вроде все случилось через регистр сведений.Но вот на клиенте почему то не воспринимает структуру Новый ХранилищеЗначения(Картинка), пишет: Тип не определен (ХранилищеЗначения), на сколько я понимаю должен определять.

          • Поддержка курса по EDT

            Я не верно выразился. На клиенте такой объект не доступен. Я имел ввиду, что надо получить данные из хранилища (получить именно объект, т.е. например фото) реквизита, или регистра, а потом сново поместить в хранилище, но в контексте этой формы, и дать ссылку на это хранилище.

                • San4opa

                  Ничего сверхестественного) в данном случае просто указал адрес для ресурса РС с типом ХранилищеЗначения. Вытаскиваю картинку из базы на сервере, точнее строку в формате base64, редактирую ее, преобразую в ДвоичныеДанные, тут же создаю РС, и в форме указываю адрес. Как-то так.

                • San4opa

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

                • San4opa

                  Наврал, опять баг проявился, с такой же частотой 50/50. Причем сначала все было хорошо. Может я что-то не так делаю. В общей форме на сервере получаю Двоичные, потом создаю РС,чтобы поймать Баг создал временный каталог и туда записывал ДД из Хранилища:
                  Картинка = Новый ХранилищеЗначения(ДД);
                  Картинка.Получить().Записать(Файл);
                  Так вот когда картинка не проявляется выдает ошибку: Значение не является значением объектного типа (Записать). Как это можно обойти?

                • San4opa

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

                  • Поддержка курса по EDT

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

                • San4opa

                  Кажется нашел ошибку, в момент, когда не срабатывает, двоичных данных вообще нет. Буду искать.

  29. Александр

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

  30. Алексей

    Здравствуйте. Такой вопрос. Можно ли как-то опубликовать типовую конфигурацию в качестве мобильного приложения? С чистой конфой всё отлично, но писать кучу функционала с нуля, как-то долго, да и бессмысленно по моему. Можно же в типовой конфе включить «Назначение использования: Мобильное устройство», но почему тогда опубликовать эту конфу нельзя, вылетает куча ошибок. Пробовал публиковать УПП 1.3 и УТ 11.
    Или всё же придется писать с нуля?

    • Поддержка курса по EDT

      Ну не все так просто. Помните переход с обычных форм на управляемые? Вот тут тоже самое. Т. Е. Просто опубликовать — не выйдет, так как это в корне не верно в принципе. Ну представьте себе на телефоне только конфа весить будет 400метров, сколько же грозиться все это будет?
      Так что это только внешнее решение. Ну или если конфа самописная, то можно и так как вы говорите. Но при маленьком объеме. Кстати мы это в курсе тоже рассматриваем.

  31. Андрей

    Подскажите,публикация приложения 1С прошла успешно, теперь нам нужно зайти в ранее установленное приложение, и нажимаем кнопку Добавить.
    ТАк вот никак не могу понять в какое «ранее установленное приложение»? Имеется ввиду, то для которого мы создали CMD файл?
    Так вот, он у меня выполнился. Захожу в Android Virtual Devices Manager и стартую emulator for AVD ‘MP’. Появляется черное окно, справа какие-то навигационные кнопки. Я так понял, что у меня платформа 1cem-arm.apk не установилась?

    • Поддержка курса по EDT

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

  32. max0boy

    При сборке приложения появляется сообщение»приложение собрано с ошибками» Приложения не создаются. Не пойму откуда копать. В журнале сборки присутствуют такие строки:-
    «Версия мобильной платформы : 8.3.4.21
    Графическая информация :
    Путь к Android SDK : H:\Android\SDK
    Путь к Apache Ant : H:\1С\MobilePl\Soft\ant
    Путь к JAVA : C:\Program Files\Java\jdk1.7.0_51
    Распаковка мобильной платформы
    Распаковка мобильной конфигураци:0»
    Что-то в логе может подтолкнуть на ошибку?

    • Поддержка курса по EDT

      Имя пользователя в виндовс на русском? Если да, то смените или пропишите жесткие пути.
      Укажите кроме этого адрес к кешам для сборки.
      Все пути на латинице должны быть.

  33. Max

    при сборки приложение сообщение»приложение собрано с ошибками» Приложения не создаются. Не пойму откуда копать. В журнале сборки присутствуют такие строки:-
    «Версия мобильной платформы : 8.3.4.21
    Графическая информация :
    Путь к Android SDK : H:\Android\SDK
    Путь к Apache Ant : H:\1С\MobilePl\Soft\ant
    Путь к JAVA : C:\Program Files\Java\jdk1.7.0_51
    Распаковка мобильной платформы
    Распаковка мобильной конфигурацичто-то в логе может подтолкнуть на ошибку?

    • Поддержка курса по EDT

      Имя пользователя в виндовс на русском? Если да, то смените или пропишите жесткие пути.
      Укажите кроме этого адрес к кешам для сборки.
      Все пути на латинице должны быть.

  34. for1ckurses

    Дмитрий, скажите, пожалуйста, есть ли какой-то способ выбирать файлы на моб. устройстве? Как ни крутил ДиалогВыбораФайла и ПоместитьФайл — ничего не получилось, не работает. Неужели нет никакого способа сделать такое простое действие, которое могут целая куча разных приложений?

  35. venvlad

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

  36. Евгений

    На Win8 ни как не удается скомпилировать сборку. Вылетает:»Ошибка совместного доступа к файлу……» И перезагружал и под админом заходил и темп чистил. Не пойму кто кому мешает.

    • Chip

      У меня в Win8 все ок. 1С надо только под правами админа запустить иначе эта ошибка вылетает

    • Jon2013

      Разобрался. Если заполнить путь «Кеш сборщика», создав любой каталог , все будет ОК.
      Потом наступил еще на грабли. Если Пользователь компа написан на кириллице, процесс сборки просто вылетает по не найденному пути.
      Но это может и мой косяк при установке приложений, не указал путь установки. Он и забабахал что-то в общую кучу.

  37. Ekovichev

    Статья супер, большое спасибо.
    1. Замучался с установкой Apache, у меня 80 порт прослушивала system служба «NT Kernel & system» и для того чтобы ее сбросить, пришлось править реестр. Подробнее здесь: http://myhelpit.ru/index.php?id=163
    2. Конфа мобильный сборщик в не хотела собирать *.apk. Во первых была проблема с совместным доступом к файлам. Решил так: Перенес папку Temp в c:\temp, как это сделать много статей. Потом осталась проблема с авт. удалением файлов из temp-а. Пришлось залезть в конфу и закоментировать 2 строчки кода, там, где происходит очистка кеша.
    3. Мобильник не видел опубликованной конфы. Дело в том, что у меня комп. выходит в интернет через роутер и для того, чтобы мобильник увидел опубликованную конфу. необходимо пробросить 80 порт на роутер. Тоже статей много.
    4. свой ip адрес лучше узнавать на сторонних ресурсах, например на сайте 2ip.ru

  38. ci4e

    «Нам необходимо скачать архив с сайта 1С. Я использую платформу 8.3.4.9.» — здесь ссылка дает ответ «403 Forbidden». Это нормально?

  39. Александр

    Хорошая статья, но вопрос по лизензионности хотелось бы поподробней

  40. anastasita

    Спасибо большое за такую подробную и полезную статью! Очень много нового узнала!

  41. Rustik666

    В типовой конфигурации 1с Управление торовлей 11 ред. есть синхронизация с мобильным приложением 1С: Заказы.
    Франчайзи мне не смог толком пояснить, может вы ответите.
    Означает ли это что купив Управление торговлей ты бесплатно получаешь еще и мобильное приложение.
    И возможно ли изменять это приложение 1С: Заказы или только использовать его, как есть….

    • Поддержка курса по EDT

      Нет, можно подключить ERP монитор. Скачать на маркете можно

  42. Eagle

    Ссылка на статью «Тестирование мобильной платформы 1С» перекидывает на страницу с 404 ошибкой

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

 Ознакомлен с условиями Публичной оферты и Пользовательского соглашения
 Согласен на обработку персональных данных (Политика обработки ПДн)