Задача

В разделе активности при заполненной колонках "Контрагент" и "Контакт" нет возможности выбрать продажу. Если заполнены колонки "Контрагент" и "Продажа", то добавление контакта стирает продажу.

Решение

Необходимо убрать фильтрацию по колонкам "Контакт"-"Продажа" (большинство клиентов ведет продажи по "Контрагенту").

  1. Заместите страницу активности ActivityPageV2;

  2. В замещенную схему добавьте код:

define("ActivityPageV2", ["BusinessRuleModule"],
    function(BusinessRuleModule) {
        return {
            entitySchemaName: "Activity",
            rules: {
                "Opportunity": {
                    "FiltrationOpportunityByContact": {
                        "ruleType": BusinessRuleModule.enums.RuleType.DISABLED
                    }
                }
            },
            details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
            diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
        };
});

Убедитесь, что в схему добавлен BusinessRuleModule.

Нравится

Поделиться

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

Вопрос

Как добавить дополнительную фильтрацию по пользовательскому полю на деталь? Например, на детали "Документы" в продаже не видно продажу, которую указали в документе в пользовательском поле. Как это исправить?

Ответ

Вот пример фильтра для детали "Документы" на странице раздела "Продажи" по колонке Opportunity и созданной вручную колонке UsrOpop.

Код из секции details:

"Documentd03ac1374493": {
   "schemaName": "DocumentDetailV2",
   "entitySchemaName": "Document",
   "filterMethod": "relationshipDetailFilter",
   "filter": {
      "detailColumn": "Opportunity",
      "masterColumn": "Id"
   }
}

Код метода фильтрации relationshipDetailFilter():

relationshipDetailFilter: function(){
    var recordId = this.get("Id");
    var filterGroup = new this.Terrasoft.createFilterGroup();
    filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.OR;
    filterGroup.add("DocumentAFilter", this.Terrasoft.createColumnFilterWithParameter(
        this.Terrasoft.ComparisonType.EQUAL, "Opportunity", recordId));
    filterGroup.add("DocumentBFilter", this.Terrasoft.createColumnFilterWithParameter(
        this.Terrasoft.ComparisonType.EQUAL, "UsrOpop", recordId));
    return filterGroup;
}

 

Нравится

Поделиться

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

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

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

Причина

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

Решение

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

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

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

Нравится

Поделиться

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

Вопрос

Как изменить цвет ячеек грида в разделе?

Ответ

1) Создать замещающую схему раздела

2) В секцию методов схемы раздела добавить метод prepareResponseCollection():

define("ActivitySectionV2", ["GridUtilitiesV2"],
function() {
    return {
        entitySchemaName: "Activity",
        contextHelpId: "1001",
        diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
        messages: {},
        methods: {
            //подсвечивать активность
            prepareResponseCollection: function(collection) {
                this.callParent(arguments);
                var colour = "";
                collection.each(function(item) {
                    var type = item.get("UsrType");
                    if (!this.Ext.isEmpty(type)) {
                        if (type.value === "1192a8c5-7d3d-4c8a-b3ce-8e2f320d64d7") {
                            colour = "#33FF33";//зеленый - FOOTY PARTY
                        }
                        if (type.value === "b8e248b6-e37a-4b21-8377-0c5c6d8bc196") {
                            colour = "#ff33cc"; //розовый - СЧ (Baby)
                        }
                        if (type.value === "20834765-ea57-41d3-8ff9-24e69a70162b") {
                            colour = "#0066ff"; //голубой - СЧ (Boy)
                        }
                        item.customStyle = {
                            background: colour
                        };
                        item.set("Background", colour);
                    }
                }, this);
            },
 
            //выборка полей в расписание
            getGridDataColumns: function() {
                var baseGridDataColumns = this.callParent(arguments);
                var gridDataColumns = {
                    "Account": {path: "Account"},
                    "StartDate": {path: "StartDate"},
                    "DueDate": {path: "DueDate"},
                    "ShowInScheduler": {path: "ShowInScheduler"},
                    "Status": {path: "Status"},
                    "Status.Finish": {path: "Status.Finish"},
                    "UsrType": {path: "UsrType"},
                    "ProcessElementId": {
                        path: "ProcessElementId",
                        dataValueType: 0
                    }
                };
                return Ext.apply(baseGridDataColumns, gridDataColumns);
            }
        }
    };
});

 

Нравится

Поделиться

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

Симптомы

При подключении на on-site получается следующая ошибка (браузер старой версии) :

ServiceStack.Redis.RedisResponseException: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error., sPort: 53192, LastCommand: \\r\\n в ServiceStack.Redis.RedisNativeClient.CreateResponseError(String error)\\r\\n в ServiceStack.Redis.RedisNativeClient.ReadInt()\\r\\n в ServiceStack.Redis.RedisNativeClient.Expire(String key, Int32 seconds)\\r\\n в ServiceStack.Redis.RedisClient.ExpireEntryIn(String key, TimeSpan expireIn)\\r\\n в Terrasoft.Redis.RedisSessionStateStoreProvider.ResetItemTimeout(HttpContext context, String id)\\r\\n в System.Web.SessionState.SessionStateModule.BeginAcquireState(Object source, EventArgs e, AsyncCallback cb, Object extraData)\\r\\n в System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication

Причина

Данная ошибка связана из-за пользовательских настроек работы Redis на сервере.

Решение

Более детально можете ознакомиться с ошибкой на сторонних сервисах. Например:

http://stackoverflow.com/questions/19581059/misconf-redis-is-configured-to-save-rdb-snapshots;

http://stackoverflow.com/questions/19873048/redis-is-configured-to-save-rdb-snapshots-but-is-currently-not-able-to-persist;

https://gist.github.com/kapkaev/4619127.

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

Нравится

Поделиться

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

Задача

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

Текст ошибки: Обнаружены системные схемы для раздела с именем Smracalendar1. Продолжение невозможно.

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

Решение

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

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

Итого, при создании раздела создаются такие объекты: 

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

Вы оставили у себя только такие объекты:

Изображение удалено.Варианты решения - добавить вручную удаленные объекты  или создать раздел заново и перенести в него данные.

Нравится

Поделиться

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

Вопрос

Версия 7.4.1, в БП использую элемент Add data.

Нужно в поле с типом дата/время установить значение = текущая дата, время 9-00

что то вроде DateTime(DateTime.Now.Year, DateTime.Now.Month,DateTime.Now.Date, 9, 0, 0) не срабатывает...

Ответ

Для реализации данного запроса, необходимо построить БП (состоит из элементов "Чтение данных", "Формула" и "Изменение данных") и в элементе "Формула" указать следующее:

DateTime.Today + new TimeSpan(9, 0, 0);

 

Нравится

Поделиться

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

А если надо получить 21-е число следующего месяца?

У меня вышло так:

[#Параметр 1#].AddDays(-[#Параметр 1#].Day + 21).AddMonths(1)

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

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

Нужно создать Замещающий клиентский модуль "Страница единого окна оператора" (OperatorSingleWindowPage) и вставить код:

define("OperatorSingleWindowPage", [],
    function() {
        return {
            methods: {
                loadContent: function() {
                    //this.loadModule("ESNFeedModule", "centerContainer");
                    this.loadModule("SectionDashboardsModule", "rightContainer");
                    this.loadModule("OperatorQueuesModule", "leftContainer");
                }
            },
            diff: /**SCHEMA_DIFF*/[
                {
                "operation": "remove",
                "name": "centerContainer"
                }
            ]/**SCHEMA_DIFF*/
        };
    }
);

 

Нравится

Поделиться

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

Вопрос

Как программно обновить поля на странице после обновления записи в базе данных (с помощью ESQ)?

Ответ

Программно обновить значение поля можно при помощи метода this.set(‘ColumnName’, ‘NewValue’). Рекомендуем обновлять поле в функции обратного вызова с предварительной проверкой на удачность обновления в базе данных.

Пример кода:

someMethod: function(){
    var value = this.get('UsrRequired');
    var updateQuery = Ext.create("Terrasoft.UpdateQuery", {
        rootSchemaName: "UsrRuleTest"});
    var filters = updateQuery.filters;
    filters.addItem(this.Terrasoft.createColumnFilterWithParameter(
        this.Terrasoft.ComparisonType.EQUAL, "Id", 'IdValue’));
    updateQuery.setParameterValue("UsrSomething", value, this.Terrasoft.DataValueType.TEXT);
    updateQuery.execute(function(result){
        if(result.success)
            this.set('UsrTest0', value);
    }, this);
}

 

Нравится

Поделиться

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

Добрый день!  попробовал по вашему коду сделать у себя выходит ошибка( ругается на  функцию set 

stack: TypeError: this.set is not a function

    at https://8-crm-dev.kmf.kz/0/configuration/5e6b668831cc1cda80b5afd046dae2…-

вот мой код

                     updateQuery.execute(

                     

                          function(result) {

                          if(result.success) {this.set("UsrOwner",UsrOwnerVisa);}

                              }

                         ) 

                          

                          ; }, this); 

См. аналогичное поведение тут.

спасибо , разобрался

Показать все комментарии
Публикация

Вопрос

Как у группы Radiobutton указать заголовок?

Ответ

К сожалению, у группы radiobutton нельзя указать заголовок.

 Но как вариант можно добавить лейбл перед группой:

{
    "operation": "insert",
    "parentName": "Header",
    "name": "Label1",
    "propertyName": "items",
    "values": {
        "itemType": Terrasoft.ViewItemType.LABEL,
        "items": [],
        "layout": {"column": 0"row": 4"colSpan": 12},
        "caption": "Производитель"
    }
},
{
    "operation": "insert",
    "parentName": "Header",
    "name": "UsrKindCattle",
    "propertyName": "items",
    "values": {
        "itemType": Terrasoft.ViewItemType.RADIO_GROUP,
        "layout": {"column": 0"row": 5"colSpan": 12},
        "items": []
    }
},

 

Выглядеть это будет следующим образом:

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

P.S. Дополнительно можете посмотреть код генератора представления страниц (схема ViewGeneratorV2). Там есть метод generateStandardItem в котором описаны элементы и видно методы которые генерируют их представления (View).

Нравится

Поделиться

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