Фильтры

Добрый день!

 

Есть проблема с импортом записей из Excel. При импорте не заполняется номер обращения, который автозаполняется при добавлении записей. Маска и текущий номер.

 

Реализация автозаполнения сделана на серверной стороне посредством событийного слоя, триггер - после добавления записи. 

 

Требуется ли переработка импорта из Excel, чтобы происходило автозаполнение с изменением системной настройки текущего номера или есть какие-то обходные решения?

Нравится

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

Добрый день!

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

Смотрел следующие публикации: 

https://community.terrasoft.ua/articles/kak-dobavit-knopku-v-mobilnom-prilozenii-na-stranice-redaktirovania

https://community.terrasoft.ua/questions/dobavit-knopku-na-stranicu-redaktirovaniya-v-mobilnom-prilozhenii

 

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

Нравится

3 комментария
Лучший ответ

Роман, добрый день!

Вью и контроллер прописываются в отдельной клиентской схеме.

Напримере, нам нужно добавить кнопку на EditPage записи контакта.

Для этого сперва создаем отдельную клиентскую схему, назовем ее примером UsrViewButton.

В ней будет код вью и контроллера:

Terrasoft.LastLoadedPageData = {
    controllerName: "ContactEditPage.Controller",
    viewXClass: "ContactEditPage.View"
}; 
Ext.define("ContactEditPage.View", {
    extend: "Terrasoft.view.BaseEditPage",
    config: {
        id: "ContactEditPage",
       refreshButton: {
            id: 'ContactEditPageButton',
            cls: "x-button-primary-blue",
            text: 'Обновить'
        }
    },
    showRefreshButton: function (isShow) {
        var navigationPanel = this.getNavigationPanel(); 
        var refreshButton = this.getRefreshButton();
        if (isShow) {
            this._refreshButton = navigationPanel.addButton(refreshButton);
        } else {
            navigationPanel.removeButton(refreshButton);
        }
        return this._refreshButton;
    }
});
Ext.define("ContactEditPage.Controller", {
    extend: "Terrasoft.controller.BaseEditPage",
    statics: {
        Model: Contact
    },
    config: {
        refs: {
            view: "#ContactEditPage"
        }
    },
    initializeView: function (view) {
        this.callParent(arguments);
        var btn = view.showRefreshButton(true);
        btn.on("tap", this.onRefreshButtonTap, this);
    },
    onRefreshButtonTap: function() {
        console.log("test");
    }
});

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

После создания схемы UsrViewButton её нужно подвязать в манифесте. Сделать это можно так:

"Models": {
        "Contact": {
            "Edit": "UsrViewButton",

Для необходимой нам модели, в данном случае Contact мы прописываем свойство "Edit" поскольку именно на EditPage и будет добавлена кнопка) и указываем туда значение нашей схемы.

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

Роман, добрый день!

Вью и контроллер прописываются в отдельной клиентской схеме.

Напримере, нам нужно добавить кнопку на EditPage записи контакта.

Для этого сперва создаем отдельную клиентскую схему, назовем ее примером UsrViewButton.

В ней будет код вью и контроллера:

Terrasoft.LastLoadedPageData = {
    controllerName: "ContactEditPage.Controller",
    viewXClass: "ContactEditPage.View"
}; 
Ext.define("ContactEditPage.View", {
    extend: "Terrasoft.view.BaseEditPage",
    config: {
        id: "ContactEditPage",
       refreshButton: {
            id: 'ContactEditPageButton',
            cls: "x-button-primary-blue",
            text: 'Обновить'
        }
    },
    showRefreshButton: function (isShow) {
        var navigationPanel = this.getNavigationPanel(); 
        var refreshButton = this.getRefreshButton();
        if (isShow) {
            this._refreshButton = navigationPanel.addButton(refreshButton);
        } else {
            navigationPanel.removeButton(refreshButton);
        }
        return this._refreshButton;
    }
});
Ext.define("ContactEditPage.Controller", {
    extend: "Terrasoft.controller.BaseEditPage",
    statics: {
        Model: Contact
    },
    config: {
        refs: {
            view: "#ContactEditPage"
        }
    },
    initializeView: function (view) {
        this.callParent(arguments);
        var btn = view.showRefreshButton(true);
        btn.on("tap", this.onRefreshButtonTap, this);
    },
    onRefreshButtonTap: function() {
        console.log("test");
    }
});

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

После создания схемы UsrViewButton её нужно подвязать в манифесте. Сделать это можно так:

"Models": {
        "Contact": {
            "Edit": "UsrViewButton",

Для необходимой нам модели, в данном случае Contact мы прописываем свойство "Edit" поскольку именно на EditPage и будет добавлена кнопка) и указываем туда значение нашей схемы.

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

Дима Вовченко,

Спасибо! А не подскажите, где можно подробнее почитать?

Роман Сидаш,

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

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

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

Мне надо повесить проверку для фильтра "Заголовок".
Если с обычным фильтром можно как-то решить вопрос через getFilter, то как стучать в расширенные?
 

Нравится

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

Здравствуйте Владислав,

 

С расширенными фильтрами так же само, как и с обычными: как только нажимается кнопка "Применить", чтобы применить расширенный фильтр, вызывается тот же метод getFilters из BaseDataView. То есть нужно смотреть как можно заменить логику этого метода.

 

С уважением,
Олег

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

Добрый день!

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

Нравится

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

Добрый день, Роман!

 

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

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

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

привет,

 

возникла след проблема - загрузил в отдельный пакет-проект reference assembly, пересобрал ассембли локально и хочу снова загрузить. для этого я удаляю старую дллку с помощью Configuration страницы, загружаю новую, нажимаю Compile All кнопку. после этого все равно остается старая дллка и я не могу проверить новые фиксы/ функционал и тд. в чем может быть проблема? 

 

использую локальную разработку, .net core 3.1 приложение в докере, file mode - false.

Нравится

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

Добрый день.

Для того чтобы приложение подтягивало сборку из Пакета-Проекта, нужно:

1. Название dll сборки Пакета-Проекта,  должно совпадать с названием пакета.

2. dll сборка Пакета-Проекта должна находится в соответсвующей директории: 
  - TS.Conf/PackageName/Files/Bin/ (для Framework) 
  - TS.Conf/PackageName/Files/Bin/netstandard (для .NetCore)

3. Для .NetCore флаг Feature-UseSeparateDirectoryToLoadPackageAssemblies (в Terrasoft.WebHost.dll.config) должен быть включен:
<add key="Feature-UseSeparateDirectoryToLoadPackageAssemblies" value="true" />

4. Cборка должна быть помечена аттрибутом:
[assembly: PackageReferenceAssembly(RefAssemblyMarker.All)]
и добавить: using Terrasoft.Core.Attributes;
Это делается в AssemblyInfo.cs (папка Properties - Properties\AssemblyInfo.cs )
Если используется, новая версия проекта *.csproj, то в нем AssemblyInfo.cs генерируется автоматически на основании проекта.

Для того чтобы не было конфликтов автогенерируемой AssemblyInfo.cs с созданной вручную, нужно в проекте *.csproj, отключить автогенерацию AssemblyInfo.cs.
Для этого в проект *.csproj, надо добавить запись:
<PropertyGroup>
           .........................................
           <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
           .......................................
</PropertyGroup>

Cherednichenko Nikita,

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

но все равно осталась проблема вызова рест ендпоинта. не получается сделать вызов если код находится в библиотеке (reference assembly), а не в исходнике кода (source code).

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

 

using System.ServiceModel;
using System.ServiceModel.Web;
using System.ServiceModel.Activation;
using Terrasoft.Web.Common;
 
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class GreetingService : BaseService
{
    [OperationContract]
    [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)]
    public string Test()
    {
 
        return "test output";
    }
}

в чем может быть проблема? или рест сервисы в reference assembly не поддерживаются/надо что-то еще добавить?

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