Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.


Живой поиск
sizelarge
placeholderВведите тему вопроса

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

 

Оглавление

Мобильный контейнер

Как убрать сообщение "Ненадёжный корпоративный разработчик" при запуске мобильного клиента на iOS?


Данная ошибка возникает при первом запуске приложения на iOS 9 и выше.

Исправить данную ситуацию можно следующим образом:

  1. Зайти в "Настройки"
  2. Зайти в "Основные" -> "Профиль"
  3. Выбрать корпоративную программу "BIT Intellectual Technology Ltd"
  4. Нажать "Доверять BIT Intellectual Technology Ltd" и ещё раз "Доверять"


Поддерживает ли мобильный контейнер работу с переадресацией при загрузке данных?

 


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

Помимо этого, переадресация должна быть настроена в IIS не через HTTP Redirect, а через URL Rewrite.

Пример для редиректа на HTTPS версию сайта:

Блок кода
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url=".*" />
<conditions><add input="

{HTTPS}

" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://

{HTTP_HOST} {REQUEST_URI}

" redirectType="Temporary" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>

Как оптимизировать производительность работы мобильного приложения?

Информация

 Рекомендации актуальны для платформы версии 2.0

Скрипт

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

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

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

Оптимизация скрипта

  • Циклы. Если речь идет о проходе циклом по коллекции с целью отбора, то лучше отказаться от цикла в пользу запроса (тем более, раз у нас есть пользовательские таблицы). Запрос с условием отработает значительно быстрее цикла. При этом неважно, что там итерировалось, массив или набор записей.
  • Создание контроллера - тоже время! Хоть и тратится оно только при первом открытии. Поскольку никому не известно, отчего зависит время, затрачиваемое на парсинг, можно только интуитивно догадываться что можно как то повлиять на него засчет размера контроллера. Таким образом, перенос функций из локального контроллера в Global - это не только работа над архитектурой, но и уменьшение времени CreateController на первом открытии экрана.
  • Большие миксины - тоже нехорошо для производительности, почему - смотри выше.

    Можно прогреть контроллер, добавив его в Configuration.xml, например:

    Блок кода
    languagexml
    themeEclipse
    <c:WarmupActions>
    	<c:WarmupAction Controller="Order\Order_SKUs.js" Function="WarMupFunction" />
    </c:WarmupActions>

    Разметка

    Итератор

    • Вызов функций из итератора в разметке - это очень плохо! Делать это следует если вообще уже никак иначе не выполнить задачу (и огрести новую, по разгону производительности, ага). Для примера, на отработку приведенной ниже несложной функции, уходит ~0,0019 с. А если таких итераций хотя бы 50, то это уже плюс 0,1 секунда.

      Блок кода
      languagejs
      themeEclipse
      function FormatValue(value) {
      	return String.Format("{0:F2}", value || 0);
      }
    • От количества отображаемых контроллов скорость открытия экрана зависит почти линейно. Сюда же относятся SwipeLayout, даже не смотря на то, что он может быть скрыт на момент вывода. Разметка, которая находится между тегами <s:If> и <s:Else> и не должна выводиться по условию, на время открытия экрана не влияет.

     

     


    Серверное приложение

    Какие компоненты IIS необходимо включить для полноценной работы сервера?


    Windows 2008Windows 2012



    Как сменить пароль от решения?


    Пароль от решения можно сменить с помощью utils.exe

    1. Откройте командную строку
    2. Перейдите в каталог с utils.exe
      Выполните команду

      Блок кода
      > utils -ssp -host http://192.168.44.138/bitmobile -p 11111 -sn dublin -sp Password5555
      
        -ssp - команда, выполняющая установку пароля для solution'a
        -host - адрес сервера, на котором располагается solution
        -p - root пароль от сервера
        -sn - название solution'a, которому задается пароль
        -sp - пароль, который вы хотите задать для solution'a

      После выполнения команды вы можете подключаться к solution'у с новым паролем.

    Как сменить пароль от сервера?


    Пароль сервера задается в файле Web.config

    1. Открыть файл Web.config в редакторе (например, Notepad++)

    2. Задать пароль к серверу в теге <add key="RootPassword" value="%password%" />

    3. Сохранить изменения

    4. Перезапустить сервер

    Как перезагрузить все данные на сервере?


    Для перезагрузки всех данных необходимо:

    1. Получить файл метаданных и данных из учетной системы. Например, получить файл метаданных и данных можно с помощью обработки "Выгрузка данных", которая входит в стандартную конфигурацию 1С БИТGrotem.Мобайл. 
    2.  Отправить полученные данные на сервер.Отправить данные на сервер можно с помощью приложения utils.exe, используя команды -dm и -ud. Подробное описание использования команд можно найти в инструкции по развертыванию решения.
    3.  Очистить кэш в мобильных приложениях. Инструкцию по очистке кэша для устройств Android и iOS можно найти на портале технической поддержки.

    Как установить пользователя, от имени которого будет запускать пул в IIS?


    Данная статья актуальна для серверов, у которых в строке подключения используется SSPI (Windows Authentification).

    1. Находим пул приложений



    2. Жмем Advanced Settings (Дополнительные настройки), находим пункт Identity (Идентификация), жмем на многоточие.



    3. Выбираем Custom Account и забиваем данные нашего пользователя


    4. В итоге должно быть так

    Как решить проблему рассинхронизации 1С и сервера

    БИТ.Мобайл

    Grotem?


    В случае штатной работы обработки синхронизации 1С с сервером БИТ:Мобайл обе Grotem обе базы согласованы по данным объектов, участвующих в обмене.

    В случае, к примеру, восстановления базы данных 1С из резервной копии, данные могут "разъехаться". Это может привести либо к ошибкам обмена (foreign key constraint violation, в случае отсутствия записи в справочной таблице) либо, что еще хуже, к некорректным данным в системе (например неправильная цена. по которой формируется заказ).

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

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

    Для частных случаев решение будет зависеть от того, какие объекты нужно сравнить.

    Пример, сравнение прайс-листов:

    1. Выполнить на стороне 1С запрос: 
      ВЫБРАТЬ Ref.Number, СУММА(Price) ИЗ Document.PriceList_Prices GROUP BY Ref.Number
    2. В базе данных сервера создать временную таблицу: 
      CREATE TABLE dbo.Temp(Number VARCHAR(100), Amount DECIMAL(10,2))
    3. Результат запроса п.1 превратить в скрипт вида INSERT INTO dbo.Temp(Number,Amount) VALUES(''..","...") для каждой строки и выполнить скрипт на сервере.

    4. Выполнить запрос сравнения двух таблиц:

      SELECT *
      FROM [dbo].[Temp] t1
      JOIN
      (
      SELECT h.Number, SUM(p.Price) as amount
      FROM [Document].[PriceList] h
      JOIN [Document].[PriceList_Prices] p on p.Ref = h.Id
      GROUP BY h.Number
      ) t2 on t1.n = t2.Number
      WHERE t1.p <> t2.amount

     
    1. Как сбросить список авторизованных устройств?


      Для сброса списка авторизованных устройств на сервере GROTEM достаточно перезапустить пул приложений, к которому обращается application (зачастую это DefaultAppPool)