Вопрос

Как вернутся к стандартной карточке Договора?

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

Так же удалили все замещенные схемы связанные с договором в попытках "вернутся к прежнему виду" и как итог не можем открыть страницу редактирования, получая ошибку "Cannot read property 'entitySchemaName' of undefined".

Ответ

Удалить схемы (в данном случае пользователь это уже сделал). Выполнить регистрацию:

delete from SysModuleEdit
where SysModuleEntityId in (select Id from SysModuleEntity
where SysEntitySchemaUId in (select UId from SysSchema where Name = 'Contract'))
GO
declare @RecordId uniqueidentifier = (select NEWID());
insert into SysModuleEdit(Id, SysModuleEntityId, CardSchemaUId, ActionKindCaption, ActionKindName, PageCaption)
values (@RecordId, '11F1B879-BEC8-4E96-82CC-FB6B77CC854D', '948080FC-031E-4D88-9239-47BCEDAA92BC',
'Добавить договор', 'ContractPage', 'Договор')
insert into SysModuleEditLcz(RecordId, ColumnUId, SysCultureId, Value) values
(@RecordId, 'A19BF4BF-E22B-49B5-B6E0-918FF6290020', '1A778E3F-0A8E-E111-84A3-00155D054C03', 'Добавить договор'),
(@RecordId, '55132174-2B96-4E0A-830C-B8E952B12C45', '1A778E3F-0A8E-E111-84A3-00155D054C03', 'Добавить договор')
update SysModule
set Attribute = ''
where SysModuleEntityId in (select Id from SysModuleEntity
where SysEntitySchemaUId in (select UId from SysSchema where Name = 'Contract'))
GO

И восстановить мастером разделов карточки редактирования для всех пользовательских типов договоров, указав потом им в схемах родителя: Схема страницы редактирования раздела "Договоры".

Нравится

Поделиться

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

Симптомы

Не работает мобильное приложение BPM 7.6.0.838 onSite

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

Решение

Скорее всего у Вас не обновлена структура базы.

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

- Закрыть все экземпляры Chrome;

- Перейти в папку, в которой Chrome хранит локальные данные: C:\Users\[ИМЯ_ПОЛЬЗОВАТЕЛЯ]\AppData\Local\Google\Chrome\User Data\Default;

- Удалить содержимое папок:

C:\Users\[ИМЯ_ПОЛЬЗОВАТЕЛЯ]\AppData\Local\Google\Chrome\User Data\Default\File System

C:\Users\[ИМЯ_ПОЛЬЗОВАТЕЛЯ]\AppData\Local\Google\Chrome\User Data\Default\databases

- Перезапускаем Chrome, используя startchrome.bat (в папке Mobile с исходниками моб. приложения);

- Запускаем мобильное приложение в браузере.

В результате Chrome создаст с нуля локальную базу со всеми необходимыми таблицами (в том числе с новыми колонками, как в указанном случае).

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

Нравится

Поделиться

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

Вопрос

Каким образом можно залезть в локальную базу эмулятора мобильного приложения?

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

Ответ

Физически файл лежит здесь - ...\7.11.7\ChromeUserData\Default\databases\file__0, но Вы его не сможете открыть пользовательскими средствами из-за кодировки.

Есть два варианта: 



- в браузере после того, как просинхронизировались открыть консоль, перейти во вкладку "Application", раскрыть список баз в Web SQL и выбрать базу bpm'online - http://prntscr.com/hke2e6. В результате Вы можете писать SQL запросы и видеть список всех таблиц. Больше информации можете найти на сайте Google Chrome - https://developers.google.com/web/tools/chrome-devtools/manage-data/local-storage;

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

- найти расширение для Firefox, который умеет работать SQLlite (найти можно на сторонних ресурсах).

Нравится

Поделиться

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

Вопрос

Мы не можем добавить контакты. При добавление контакта страница зависает. 

Ответ

Две детали "Деталь: Адреса контакта" и "Деталь: Средства связи контакта" были удалены со страницы контакта. Поэтому вы не можете создать новые контакты.

Необходимо вернуть эти детали и ошибка пропадет.

Для этого добавьте в схему ContactPageV2 сдедующий код:

details: {
    "AccountAddress": {
        "schemaName": "AccountAddressDetailV2",
        "entitySchemaName": "AccountAddress",
        "filter": {
            "detailColumn": "Account",
            "masterColumn": "Account"
        },
        "useRelationship": true,
        "filterMethod": "accountAddressFilter"
    },
    "AccountCommunication": {
        "schemaName": "AccountCommunicationDetail",
        "entitySchemaName": "AccountCommunication",
        "filter": {
            "detailColumn": "Account",
            "masterColumn": "Account"
        },
        "useRelationship": true,
        "filterMethod": "accountAddressFilter"
    }
},
/**......*/
methods: {
    accountAddressFilter: function() {
        var account =  this.get("Account");
        var accountId = this.Terrasoft.GUID_EMPTY;
        if (account && account.value) {
            accountId = account.value;
        }
 
        var filterGroup = new this.Terrasoft.createFilterGroup();
        filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
        filterGroup.add("AccountFilter", this.Terrasoft.createColumnFilterWithParameter(
        this.Terrasoft.ComparisonType.EQUAL, "Account", accountId));
        return filterGroup;
    }
},
/**......*/

 

Нравится

Поделиться

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

Симптомы

После обновления на версию 7.7.0 возникает ошибка при получении количества уведомлений с помощью выполнения метода GetUserNotificationCount сервиса RemindingsDataService. Текст ошибки следующий: Cannot create an instance of Terrasoft.Configuration.BaseNotificationProvider because it is an abstract class.

Причина

В версии 7.7.0 в таблице NotificationProvider изменили название класса Terrasoft.Configuration.BaseNotificationProvider на Terrasoft.Configuration.SystemNotificationProvider. При обновлении изменение должно применяться с помощью установки данных, но в конфигурации клиента эти данные по какой-то причине не установились.

Решение

Необходимо на базе клиента выполнить следующий скрипт:

UPDATE [NotificationProvider]
SET
[ClassName] = 'Terrasoft.Configuration.SystemNotificationProvider',
[Type] = 2
WHERE [ClassName] = 'Terrasoft.Configuration.BaseNotificationProvider'

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

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

Нравится

Поделиться

0 комментариев
Показать все комментарии
//Добавляем атрибуты и методы
attributes: {
    "UsrINTEGER111": { //Поле куда будет записываться количество дней разницы
        dataValueType: Terrasoft.DataValueType.INTEGER, //Тип поля (INTEGER)в зависимости от типа поля UsrINTEGER111
        dependencies: [
            {
                columns: ["UsrDATE", "UsrDATE1"], //Поля с датами
                methodName: "calculatedate"
            }
        ]
    }
},
methods: {
    calculatedate: function() {
        var D6 = this.get("UsrDATE");
        var D7 = this.get("UsrDATE1");
        if (D6 && D7) {
            this.set("UsrINTEGER111", parseInt(((D7.getTime()-D6.getTime())/86400000)+1)); //Формулу можно редактировать, например убрать +1
        }
    }
},

 

Нравится

Поделиться

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

Вопрос

Нет кнопки "учетные записи почты"

 

Ответ

В демосайте данные настройки не отображаются. Для того, чтобы они отобразились необходимо в системной настройке «Отображать Демо cсылки» («ShowDemoLinks») убрать признак.

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

В результате данные настройки отображаются.

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

 

Также, как вариант, ящик можно добавлять через коммуникационную панель.

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

 

Нравится

Поделиться

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

Симптомы

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

Причина

Данная ситуация проявляется, когда при создании активности (по процессу или вручную) ответственный автоматически не попадает на деталь "Участники". В разделе "Активности" фильтрация происходит по данной детали: отображаются все записи, у которых на детали "Участники" присутствует пользователь, указанный в фильтре "Ответственный" раздела.

Решение

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

INSERT INTO [ActivityParticipant]
([Id], [ActivityId], [ParticipantId], [RoleId])
SELECT NewId(), a.[Id], a.[OwnerId], '53fc4a92-b0ea-e111-96c4-00165d094c12'
FROM [Activity] a
WHERE NOT EXISTS (
SELECT ap.[Id] FROM [ActivityParticipant] ap
WHERE ap.[ActivityId] = a.[Id]
AND ap.[ParticipantId] = a.[OwnerId]
)

 

Нравится

Поделиться

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

Вопрос

Как удалить/скрыть элемент в "Действие"

Ответ

Для скрытия действия можно использовать параметр removeByIndex.

Пример:

removeSubscribeButton: function(actionMenuItems) {
    var subscribeButtonIndex;
    actionMenuItems.each(function(item, index) {
        if (item.values.Tag === "subscribeUser") {
            subscribeButtonIndex = index;
        }
    });
    if (subscribeButtonIndex) {
        actionMenuItems.removeByIndex(subscribeButtonIndex);
    }
},
getActions: function() {
    var actionMenuItems = this.callParent(arguments);
    this.removeSubscribeButton(actionMenuItems);
    actionMenuItems.addItem(this.getButtonMenuItem({
        "Caption": {"bindTo": "Resources.Strings.RemoveButtonCaption"},
        "Enabled": { "bindTo": "DeleteButtonEnable" },
        "Tag": "canRemoveRecord"
    }));
    return actionMenuItems;
}

ИЛИ

Пример как скрыть в разделе: 

getSectionActions: function() {
    var actionMenuItems = this.callParent(arguments);
    actionMenuItems.each(function(item, index) {
        if (item.values.Type === "Terrasoft.MenuSeparator") {
            actionMenuItems.removeByIndex(index);
        }
        if (item.values.Tag === "sendToVisa") {
            actionMenuItems.removeByIndex(index);
        }
    }, this);
    return actionMenuItems;
},

Пример как скрыть в карточке: 

getActions: function() {
    var actionMenuItems = this.callParent(arguments);
    actionMenuItems.each(function(item, index) {
        if (item.values.Type === "Terrasoft.MenuSeparator") {
            actionMenuItems.removeByIndex(index);
        }
        if (item.values.Tag === "sendToVisa") {
            actionMenuItems.removeByIndex(index);
        }
    }, this);
    return actionMenuItems;
},

 

Нравится

Поделиться

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

Вопрос

Как добавить/изменить цвет в разделе "Настройка цвета панели разделов"

Ответ

Дополнить или изменить существующий цвет в разделе «Настройка цвета панели разделов» Вы можете в исходнике all-combined.js (…\Terrasoft.WebApp\Resources\ui\combined\all-combined.js). Именно свойство «colors» в «ColorMenuItem». 

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

Хотелось бы отметить, что в данном случае можно использовать только код цвета, так как в приложении прописано, что для этого свойства использовать «background-color». Ссылки на изображения не получиться вставить.

Нравится

Поделиться

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