Добрый день.

Возникла необходимость добавить проверку значения поля, например, чтобы оно соответствовало определённому регулярному выражению. Делал это через Custom бизнес-правило. Для установки валидности поля использовался код:

record.changeProperty("ColumnName", {
    isValid: {
        value: isValid,
        message: columnMessage
    }
});

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

Есть возможность как-то решить данную проблему, желательно не модифицируя сам объект.

Нравится

3 комментария

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

Зверев Александр,

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

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

Показать все комментарии

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

Нравится

3 комментария

Что такое «время начала календаря»? От сотворения мира?

Зверев Александр,

в представлении Расписание  время начала дня. Обычно это 8 или 9 утра. В моб приложении день начинается с 0 часов дня.  

Стандартно есть только переключение между днём и неделей, время начала дня не настраивается.

Возможно, такое удастся поменять силами разработчика, логика этого раздела реализована в схемах MobileActivityGridPageViewV2 и MobileActivityGridPageControllerV2.

Показать все комментарии

Симптомы

Суть проблемы: в чешской локализации невозможно добавить стандартную деталь. При сохранении изменений в консоли ошибка «Cannot read property 'name' of undefined» (версия 7.7).

 Кейс 1:

- открываем в мастере мобильного приложения «Настроить детали» в разделе «Заказы» (Objednбvky).

 Изображение удалено.

- добавляем деталь «Продукт в заказе» (Produkt v objednбvce)

 Изображение удалено.

- в результате добавления детали «Продукты в заказе» в дизайнере мобильного приложения происходит свал:

 Изображение удалено.

Изображение удалено.

Если опять перейти в настройки детали, то caption этой детали не отображается.

 Изображение удалено.

Кейс 2:

- в мастере мобильного приложения открыть настройки стандартной детали, например, раздела «Контрагенты» (Firmy)

 Изображение удалено.

- ничего не добавляем, а только необходимо нажать на кнопку сохранить;

 Изображение удалено.

- заново открываем настройки детали раздела «Контрагенты».  Увидим, что caption снова не отображаются. Снова нажимаем на сохранить.

 Изображение удалено.

- в результате возникает такая же ошибка.

 Изображение удалено.

Доп. информация:

- На русской и английской локализации не удается воспроизвести ошибку.

- В 7.8 не удалось воспроизвести, так как нет демки с чешской локализацией.

- При создании детали нормально формируется код:

{
    "operation": "insert",
    "name": "settings",
    "values": {
        "entitySchemaName": "Order",
        "details": [],
        "columnSets": [],
        "localizableStrings": {
            "primaryColumnSetOrder_caption": "Zбkladnн informace",
            "OrderProductDetailV2StandartDetailOrder_caption": "Produkt v objednбvce"
        },
        "settingsType": "RecordPage",
        "operation": "insert"
    }
},

но у самой локализационной строки OrderProductDetailV2StandartDetailOrder_caption значение пустое. Если же туда добавить руками Produkt v objednбvce, то на странице перечня деталей карты Заказ мобильного приложения название появляется. Если же мы будем добавлять деталь сразу на страницу - то тоже самое сначала название детали видно, но после ее конфигурирования, сохранения страницы и повторного ее открытия видим undefined вместо названия. При этом никаких ошибок ни в консоли, ни в запросах нет.

Решение

Для решения проблемы необходимо:

1)      Создать замещающий клиентский модуль(Nahrazující uživatelský modul) для схемы «Mobile app module - Section designer»

Внутри написать такой код:

define("MobileSectionDesignerModule", [],
    function() {
        return {};
    }
);
Ext.define("Terrasoft.MobileDesignerSchemaManager.override", {
    override: "Terrasoft.MobileDesignerSchemaManager",
    statics: {
        getCultureValues: function(value) {
            var res = this.callParent(arguments);
            res["cs-CZ"] = value;
            return res;
        }
    }
});

 

2)      После чего, удалить проблемный раздел из конфигурации:

А) Удалить схемы

UsrMobileOrderActionsSettingsDefaultWorkplace

UsrMobileOrderGridPageSettingsDefaultWorkplace

UsrMobileOrderProductActionsSettingsDefaultWorkplace

UsrMobileOrderProductGridPageSettingsDefaultWorkplace

UsrMobileOrderProductRecordPageSettingsDefaultWorkplace

UsrMobileOrderRecordPageSettingsDefaultWorkplace

 

Б) В манифесте MobileApplicationManifestDefaultWorkplace

Удалить локализируемую строку OrderSectionTitle

И в блоке "Modules" удалить "Order"

3)      И снова добавить раздел и деталь  через дизайнер.

Нравится

Поделиться

0 комментариев
Показать все комментарии

Доброго времени!

Возникла необходимость фильтрации записей в детали "UsrProductInAccount" раздела Контрагенты "Account". Данная деталь отображена в манифесте

"Models": {
        "UsrProductInAccount": {
            "RequiredModels": [
                "UsrProductInAccount",
                "Account",
                "Product",
                "SocialMessage"
            ],
            "ModelExtensions": [],
            "PagesExtensions": [
                "UsrMobileUsrProductInAccountActionsSettingsFieldForceWorkplace",
                "UsrMobileUsrProductInAccountGridPageSettingsFieldForceWorkplace",
                "UsrMobileUsrProductInAccountRecordPageSettingsFieldForceWorkplace",
                "UsrMobileProductInAccountConfig"
            ]
        }
    }

Созданный модуль "UsrMobileProductInAccountConfig" отобразил в манифесте и прописал сам фильтр. Фильтр исключает все записи с заполненным реквизитом "UsrDateSale".

Terrasoft.sdk.Module.addFilter("UsrProductInAccount", Ext.create("Terrasoft.Filter", {
    name: "UsrProductInAccountFilter",
    type: Terrasoft.FilterTypes.Group,
    subfilters: [
            Ext.create("Terrasoft.Filter", {
                property: "UsrDateSale",
                    // Оператор отрицания
                isNot: false,
                    // Не заполнено
                value: null
            })
        ]
    }));

Выполняю синхронизацию. Результат не получен. В чём может быть причина?

Спасибо.

Нравится

1 комментарий

Алексей, здравствуйте!

Это не раздел (Terrasoft.sdk.Module), а стандартная деталь. Соответственно, для нее нужно использовать Terrasoft.sdk.Details. А именно нужно добавить в схему UsrMobileAccountModuleConfig след. код:

 
Terrasoft.sdk.Details.addFilter("Account", "UsrSchema4DetailStandardDetail", {
   property: "UsrDateSale",
   isNot: false,
   value: null
});

В результате к существующей фильтрации детали по родительской записи (по контрагенту) добавится необходимая клиенту фильтрация по колонке UsrDateSale.

Показать все комментарии

Симптомы

Ошибка: у сотрудника не отображается в мобильной версии завершенная активность (визит). Сам же визит отображается в десктопе (представление «Расписание» в активностях). Используется платформа UIv1. Версия приложения 7.6 pharma

Кейс:

  1. Засихронизироваться под пользователем;
  2. Открыть расписание/список активностей за 23.03.2017;
  3. В результате визит «Визит к врачу: ФИО, Адрес, ДЕРМАТОЛОГ» не отображается за 23.03.2017.

Доп. инфа:

В десктопе данный визит есть

Также данная активность если открыть активности контакта врача.

Причина

В этом проекте доработана базовая фильтрация раздела Активности (проектное решение)

Происходит дополнительная фильтрация по НОВЫМ полям «Начало факт» и «Завершение факт»

Примерно такая:

SELECT *
FROM [Activity] AS [Activity]
WHERE 
(
    (
        NOT([Activity].[StatusId] = '4bdbb88f-58e6-df11-971b-001d60e938c6')
        AND
        datetime([Activity].[DueDate]) >= datetime('2017-03-22 22:00:00.000Z')
    )
    OR
    (
        [Activity].[StatusId] = '4bdbb88f-58e6-df11-971b-001d60e938c6'
        AND
        datetime([Activity].[ActualDueDate]) >= datetime('2017-03-22 22:00:00.000Z')
    )
)
AND
(
    (
        [Activity].[StatusId] = '4bdbb88f-58e6-df11-971b-001d60e938c6'
        AND
        datetime([Activity].[ActualStartDate]) <= datetime('2017-03-23 21:59:59.000Z')
    )
    OR
    (
        NOT([Activity].[StatusId] = '4bdbb88f-58e6-df11-971b-001d60e938c6')
        AND
        datetime([Activity].[StartDate]) <= datetime('2017-03-23 21:59:59.000Z')
    )
)

У данной активности

Не заполнено поле «Завершение факт» поэтому она и не попадает в реестр мобильного приложения.

Решение

Заполнить колонку "Завершение факт" и/или "Начало факт" (ActualDueDate или ActualStartDate) тем же значением, что и в колонках "StartDate" и "DueDate" на уровне БД.

Нравится

Поделиться

0 комментариев
Показать все комментарии

Доброго времени!

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

Спасибо!

Нравится

4 комментария

Есть несколько вариантов обходных решений. 

1. В манифесте выставляем параметр - PreferedFilterFuncType: 'Terrasoft.FilterFunctions.SubStringOf'. 

Поиск станет не чуствителен к регистру. Но и станет искать по подстроке (во всех разделах).

2. Вводим при поиске значок %. 

Проверялось только на английской локализации.

Мотков Илья,

Всё реализовано именно так, как описано в 1 пункте. В результате тестов было замечено, что на Android устройствах, в режимах работы online/offline всё корректно работает. На ios же в online поиске всё отрабатывает корректно, а вот offline чувствителен к регистру.

Мотков Илья,

Причём заметил, что на английской локализации всё корректно, что нельзя сказать про русскую в режиме Offline на ios. 

Спасибо за уточняющую информацию, она будет передана разработчикам.

Показать все комментарии

Симптомы

Симулятор мобильного приложения не работает. System.ArgumentException: An item with the same key has already been added

Причина

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

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

Решение

Для исправления необходимо или обновить приложение до последней версии 7.5.0 или изменить локализуемые строки в пользовательской схеме (например, «UsrMobileApplicationManifestCustom2Schema»).

Например в название локализированных строк добавить префикс Custom

 Изображение удалено.

Необходимые условия и возможные ограничения

Иметь права системного администратора.

Нравится

Поделиться

0 комментариев
Показать все комментарии

Симптомы

  1. Определено несколько одинаковых позиций по распределению прав по операциям.
  2. Текущий пользователь не имеет прав доступа на объект "MobileData".

Причина

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

Решение

1. Раздать права доступа на объекты мобильного приложения;

2. Актуализировать организационную структуру.

Скриншот для 7.5:

Изображение удалено.

Скриншот для 7.4:

Изображение удалено.

Необходимые условия и возможные ограничения

Права администратора.

Нравится

Поделиться

0 комментариев
Показать все комментарии

Симптомы

Тип: Terrasoft.SqlProxyException%0D%0AСообщение: Возникло исключение SQL%0D%0A%0D%0AТип: Terrasoft.SqlException%0D%0AСообщение: undefined: Cannot call method 'setRecord' of undefined%0D%0A%0D%0A

Причина

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

Решение

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

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

Нравится

Поделиться

0 комментариев
Показать все комментарии

Контекст клиента

MobileApplicationInvoiceManifest not found; MobileApplicationoportunityManifest not found; MobileApplicationLeadManifest not found; 

Причина

В системной настройке «Манифесты мобильного приложения» ошибочно прописан указанный манифест.

Решение

Просто убрать этот манифест из списка манифестов в указанной  системной настройке.

Необходимые условия и возможные ограничения

Права администратора. Очистка Redis после удаления.

Нравится

Поделиться

0 комментариев
Показать все комментарии