Коллеги, я никак не могу понять, суть зависания моей системы, я подумал это связано с диском, так как чтение идет оттуда. Купил SSD Samsung 980 PRO NVMe M.2 1000 ГБ, но без результатно, подумал может в оперативке зависает сделал сейчас 21гб оперативки, все без результатно. Базу устанавливаю локально, как может так виснет? Со вчерашнего дня не могу зайти нормально даже на страницы, если даже зайти, то при обновлении получаю ошибку 



Load timeout for modules: BankCardSectionV2,CardModuleV2



Как проверить? Где можно оптимизировать к примеру если среда разработчика? Какие функции или разделы или таблицы, вьюхи, что можно отключить? Пожалуйста подскажите.

Нравится

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

Добрый день!

 

Для анализа проблемы производительности важно сперва определить проблемную подсистему. В основном это может быть либо приложение (Web Server), либо сервер баз данных (Database Server).

Из опыта решения разного рода аналогичных проблем мы пришли к выводу, что не всегда проблемная подсистема является причиной самой проблемы. К примеру, если у Вас очень нагружен Database Server, то проблема может быть на стороне WebServer’а, логика которого работает неверно и нагружает БД. Или наоборот, сервер БД отдал слишком большой объем данных, но быстро, а после этого Web Server начинает их обворачивать в свои внутренние структуры для обработки/передачи клиенту.

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

Также рекомендуем рассмотреть вариант с использованием разных инструментов/утилит для того, что бы проводить системный мониторинг (Grafana, Zabbix) и в дальнейшем предотвращать подобные проблемы.

 

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

 

С уважением,

Катя

Добрый день!

 

Для анализа проблемы производительности важно сперва определить проблемную подсистему. В основном это может быть либо приложение (Web Server), либо сервер баз данных (Database Server).

Из опыта решения разного рода аналогичных проблем мы пришли к выводу, что не всегда проблемная подсистема является причиной самой проблемы. К примеру, если у Вас очень нагружен Database Server, то проблема может быть на стороне WebServer’а, логика которого работает неверно и нагружает БД. Или наоборот, сервер БД отдал слишком большой объем данных, но быстро, а после этого Web Server начинает их обворачивать в свои внутренние структуры для обработки/передачи клиенту.

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

Также рекомендуем рассмотреть вариант с использованием разных инструментов/утилит для того, что бы проводить системный мониторинг (Grafana, Zabbix) и в дальнейшем предотвращать подобные проблемы.

 

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

 

С уважением,

Катя

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

Доброго времени суток!

В конфигурации не можем открыть исходный код страницы. Сообщение ошибки показано на скриншоте ConfigurationError.png

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

Можете помочь с решением проблемы? Спасибо заранее.

Прикрепленные файлы

Нравится

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

Здравствуйте, 

 

Для решения проблемы необходимо установить в файле \Terrasoft.WebApp\Web.config в секции <appSettings>

параметр <add key="UseIncludeDependenciesSource" value="false" />

 

С уважением,

Анастасия

Здравствуйте, 

 

Для решения проблемы необходимо установить в файле \Terrasoft.WebApp\Web.config в секции <appSettings>

параметр <add key="UseIncludeDependenciesSource" value="false" />

 

С уважением,

Анастасия

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

Доброго времени суток! 

Ситуация такая: Вчера запустил импорт данных из Excel в количестве 43000 записей обращений и закрыл страницу импорта. Теперь хочу узнать прогресс этого процесса и, если возникла ошибка, то где в логах пишется эта ошибка ?

Нравится

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

Здравствуйте, Арнур,

 

Информацию о возможных ошибках загрузки данных вы можете просмотреть в справочнике [ Лог импорта из Excel ]. Здесь отображаются данные о тех записях файла импорта, которые не удалось загрузить.

 

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

 

Больше детальной информации в статье:

https://academy.terrasoft.ua/docs/user/bazis_platformy/dannye/excel_imp…

 

С уважением,

Анастасия

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

Доброго времени суток коллеги. Имею проблемы (очень нужна помощь) пожалуйста кто сможет подскажите. Мне нужно было сделать

1)  при открытии справочного окна сделать поле поиска по умолчанию ИНН, я посмотрел тут и создал модуль. (все работает)

2) Нужно сделать неактивной кнопку "Добавить", пока не нажимаем в кнопку "Поиск" и если пусто(то есть нет результатов поиска), то только тогда сделать кнопку "Добавить" активной. 

Шаги: Я добавил два метода как указано в этой статье, но не понимаю, куда добавлять: Изображение удалено.

Я поискал в своем конфиругации и там создана viewModel, которая вызывает сам деталь деталь. И попробовал установить её в методе  getLookupPageConfig

define("UsrEmploymentDataRowViewModel", ["EmploymentDataRowViewModel", "LookupUtilitiesV2"],
function(LookupUtilities) {
 
Ext.define("Terrasoft.configuration.UsrEmploymentDataRowViewModel", {
extend: "Terrasoft.EmploymentDataRowViewModel",
alternateClassName: "Terrasoft.UsrEmploymentDataRowViewModel",
 
getLookupPageConfig: function() {
    this.callParent(arguments);
    var config = {
    entitySchemaName: "Lead",
    columns: ["Id"],
    associatedProjectId: this.get("Id"),
    multiSelect: true,
    actionsButtonVisible: true,
    //указываем нашу кастомизированную схему
    lookupPageName: "UsrAccountBaseLookupModule"
    };
    this.openLookup(
    config,
    function(selected) { window.console.log("selected", selected);},
    this);
},
});
    return Terrasoft.UsrEmploymentDataRowViewModel;
});

Вот сама деталь: 

define("EmploymentDataFieldsDetail", ["UsrAccountBaseLookupModule", "UsrEmploymentDataRowViewModel"],
    function() {
        return {
            entitySchemaName: "ContactCareer",
            attributes: {
                "Account": {
                    dataValueType: this.Terrasoft.DataValueType.LOOKUP,
                    lookupListConfig: {
                        lookupPageName: "UsrAccountBaseLookupModule",  }, },  },
            methods: {
                getRowViewModelClassName: function() {
                    return "Terrasoft.UsrEmploymentDataRowViewModel";
                } },
            diff: /**SCHEMA_DIFF*/ [] /**SCHEMA_DIFF*/ ,
        };
    });
// схема детали "Данные по занятости"

Ошибка:  Изображение удалено.

Теперь, я вместо openLookup попытался открыть через LookupUtilities, вот код: 

define("UsrEmploymentDataRowViewModel", ["EmploymentDataRowViewModel", "LookupUtilitiesV2"],
function(LookupUtilities) {
    Ext.define("Terrasoft.configuration.UsrEmploymentDataRowViewModel", {
    extend: "Terrasoft.EmploymentDataRowViewModel",
    alternateClassName: "Terrasoft.UsrEmploymentDataRowViewModel",
 
    getLookupPageConfig: function() {
    this.callParent(arguments);
    var config = {
    lookupPageName: "UsrAccountBaseLookupModule"
    };
    LookupUtilities.Open(config, function(selected){ window.console.log(selected);}, this);},
    });
    return Terrasoft.UsrEmploymentDataRowViewModel;
});

Получаю ошибку: 

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

Весь код, модуля: 

define("UsrAccountBaseLookupModule", [
    "LookupPage",
    "LookupPageViewGenerator",
    "LookupPageViewModelGenerator",
    "ProcessModuleUtilities",
    "LookupUtilities",
    "css!LookupPageCSS",
], function(
    LookupPage,
    LookupPageViewGenerator,
    LookupPageViewModelGenerator,
    LookupUtilities,
    ProcessModuleUtilities
) {
    return Ext.define("Terrasoft.configuration.UsrAccountBaseLookupModule", {
        alternateClassName: "Terrasoft.UsrEDFDAccountLookupPage",
        extend: "Terrasoft.LookupPage",
        gridWrapClasses: ["custom-lookup-control"],
 
        init: function(callback, scope) {
            callback = callback || Terrasoft.emptyFn;
            if (this.viewModel) {
                callback.call(scope);
                return;
            }
            var lookupInfo = this.getLookupInfo();
            if (this.Ext.isArray(lookupInfo)) {
                var configIndex = 0;
                var parameters = this.parameters;
                if (!this.Ext.isEmpty(parameters)) {
                    configIndex = parameters.index;
                }
                this.lookupInfo = lookupInfo[configIndex];
                this.lookupsInfo = lookupInfo;
            } else {
                this.lookupInfo = lookupInfo;
            }
            this.processModuleFlag = this.sandbox.publish(
                "CardProccessModuleInfo",
                null, [this.sandbox.id]
            );
            this.initHistoryState();
            this.getSchemaAndProfile(
                this.lookupInfo.lookupPostfix,
                function(entitySchema, profile) {
                    if (this.isDestroyed) {
                        return;
                    }
                    entitySchema.primaryDisplayColumn = {
                        caption: "ИНН",
                        columnPath: "INN",
                        dataValueType: 1,
                        isInherited: false,
                        isRequired: true,
                        isValueCloneable: true,
                        name: "INN",
                        size: 250,
                        uId: "4b8aa047-9de8-42b8-ab32-fbf0f9a39479",
                        usageType: 0,
                    };
 
                    var primaryDisplayColumn = entitySchema.primaryDisplayColumn;
 
                    if (primaryDisplayColumn) {
                        this.lookupInfo.searchColumn = {
                            value: primaryDisplayColumn.name,
                            displayValue: primaryDisplayColumn.caption,
                        };
                    }
                    this.lookupInfo.entitySchema = entitySchema;
                    this.lookupInfo.gridProfile = profile;
                    var viewModel = (this.viewModel = this.generateViewModel());
                    viewModel.lookupInfo = this.lookupInfo;
                    viewModel.load(profile, callback, scope);
                }
            );
        }, 
        renderLookupView: function(schema, profile) {
            var config = this.getLookupConfig(schema, profile);
            var topPanelConfig = LookupPageViewGenerator.generateFixed(config);
            var buttonsConfig, AddButtonConfig;
            _.some(topPanelConfig.items, function(target) {
                if (target.id === "filteringContainerLookupPage" ||
					target.id === "selectionControlsContainerLookupPage") {
                    _.some(target, function(target) {
                        if (Array.isArray(target)) {
                            buttonsConfig = target;
                            return true;
                        }
                    });
                    return true;
                }
            });
            _.some(topPanelConfig.items, function(item) {
                if (item.id === "selectionControlsContainerLookupPage") {
                    _.some(item, function(item) {
                        if (Array.isArray(item)) {
                            AddButtonConfig = item;
                            return true;
                        }
                    });
                    return true;
                }
            });
            _.some(AddButtonConfig, function(target) {
                if (target.caption === "Добавить") {
                    // delete target.tag;
					target.enabled = {
						bindTo: "false"
					};
                    return true;
                }
            });
            _.some(buttonsConfig, function(target) {
                if (target.caption === "Поиск") {
                    delete target.tag;
                    target.click = {
                        bindTo: "AddRequestButton"
                    };
					target.enabled = {
						bindTo: "false"
					};
                    return true;
                }
            });
            this.renderLookupControls(config, topPanelConfig);
        },
        generateViewModel: function() {
            var viewModelConfig = LookupPageViewModelGenerator.generate(this.lookupInfo);
            if (!this.lookupInfo.columnValue && this.lookupInfo.searchValue) {
                viewModelConfig.values.searchData = this.lookupInfo.searchValue;
                viewModelConfig.values.previousSearchData = this.lookupInfo.searchValue;
            }
            viewModelConfig.methods.AddRequestButton = function() {
                var associatedProjectId = this.values.LookupInfo.associatedProjectId;
                //Вызываем БП
                var args = {
                    sysProcessName: "UsrCreateNewRequestFromProject",
                    parameters: {
                        ProjectId: associatedProjectId
                    }
                };
                ProcessModuleUtilities.executeProcess(args);
                this.close();
            };
            var viewModel = this.Ext.create("Terrasoft.BaseViewModel", viewModelConfig);
            viewModel.Ext = this.Ext;
            viewModel.sandbox = this.sandbox;
            viewModel.Terrasoft = this.Terrasoft;
            if (this.lookupInfo.updateViewModel) {
                this.lookupInfo.updateViewModel.call(viewModel);
            }
            viewModel.initCaptionLookup();
            viewModel.initHasActions();
            viewModel.initLoadedColumns();
            if (!this.Ext.isEmpty(this.lookupInfo.filterObjectPath)) {
                viewModel.updateFilterByFilterObjectPath(this.lookupInfo.filters, this.lookupInfo.filterObjectPath);
            }
            if (this.lookupInfo.hideActions) {
                viewModel.set("hasActions", false);
            }
            return viewModel;
        }
    });
});

Пожалуйста, помогите с решением. 

Нравится

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

Ислам, добрый день!

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

"dataValueType": Terrasoft.DataValueType.LOOKUP,

"lookupListConfig": {

            lookupPageName: "UsrAccountBaseLookupModule",

 }

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

если я добавляю модуль в атрибут, ругается

LookupPageViewModelGenerator получает grid = undefined. 

Я так понимаю, это потому что ещё не отрисована сам grid,

а я пытаюсь получить к нему доступ?

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

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

Изображение удалено.Не удалось загрузить файл на сервер.

Нравится

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

Здравствуйте, 

 

Уточните, пожалуйста, ошибка возникает при установке кастомного пакета или приложения маркетплейс? 

Так же прикрепите лог установки. 



Спасибо!

С уважением,

Анастасия

Здравствуйте, 

 

Уточните, пожалуйста, ошибка возникает при установке кастомного пакета или приложения маркетплейс? 

Так же прикрепите лог установки. 



Спасибо!

С уважением,

Анастасия

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

Добрый день! В странице контакта есть определенное поле, куда передается строковое значение по типу "00000 https://someurlcrm.org/....". Как сделать данный url "https://someurlcrm.org/...." кликабельным так, чтобы при открытии странички клиента можно было нажать на данную ссылку, находящуюся в данном поле и перейти дальше по ссылке ?

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

Нравится

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

Добрый день, Арнур!

 

В базовой логике приложения ссылки в полях не кликабельны по умолчанию.

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

 

В решении вашей бизнес-задачи вам поможет статья: https://community.creatio.com/articles/creating-custom-web-link-field

 

С уважением,

Анастасия

Anastasiia Stepanova,

Здравствуйте, спасибо за ответ! У меня есть еще один вопрос: пример, ссылку на который вы отправили предполагает, что в поле будет передаваться url в формате строки, а что, если значением строки будет не только url? Допустим, строка "Спасибо за удобный сервис! ссылка на объект: https://someurl.org" и здесь должен быть кликабельным только кусок с "https://someurl.org". Я видел, что в самом разделе, если настроить для вывода нужную нам колонку, то система распознает url, пускай и неполностью (т.е. ссылка выделена синим и кликабельна до того момента, когда строка заканчивается и начинается новая строка). 

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

Доброго времени суток! 

У меня возник такой вопрос: Хочу через пользователя в таблице "SysAdminUnit" найти, как утроена связь между организационной ролью и пользователем (думал, что есть отдельная таблица "Орг. роль", которая в виде внешнего ключа подключается к "SysAdminUnit", но оказалось, что в данной таблице содержатся все записи включая пользователей, орг./функциональные роли и тд. Подскажите, как можно найти связь между пользователем (не контактом) и его организационной ролью, чтобы можно было спокойно ссылаться на Id нужного пользователя? И правильно ли я делаю, что ищу информацию о пользователе в таблице "SysAdminUnit"?

Спасибо за ответы!

Нравится

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

Структура ролей представлена в таблице SysUserInRole

А в таблице SysAdminUnitInRole можно найти все роли (в том числе наследуемые), которые есть у пользователя

Структура ролей представлена в таблице SysUserInRole

А в таблице SysAdminUnitInRole можно найти все роли (в том числе наследуемые), которые есть у пользователя

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

Здравствуйте! Коллеги подскажите. Сделал веб сервис

 

namespace Terrasoft.Configuration.Statements 

{

    using System;

    using Terrasoft.Core;

    using System.ServiceModel;

    using Terrasoft.Web.Common;

    using System.ServiceModel.Web;

    using Terrasoft.Core.Entities;

    using System.ServiceModel.Activation;

    [ServiceContract]

    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

    public class UsrStatements : BaseService

    {

        

        [OperationContract]

        [WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,

        ResponseFormat = WebMessageFormat.Json)]

        public string GetContactList()

        {

            var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Contact");

            var colName = esq.AddColumn("Id");

            var contacts = esq.GetEntityCollection(UserConnection);

            if(contacts.Count > 0)

            {

                var result = contacts[0].GetColumnValue(colName.Id).ToString();

                return result;

            }

        }

    }

}

При вызове воращает ошибку 404. Вызываю так https://testcrm.com/0/rest/UsrStatements/GetContactList

Авторизовываюсь Supervisor-ом

Версия 7,13

Нравится

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

А компилируется без ошибок?

 

Добрый день. Да. Но в конфигураторе стоит галочка заблокирован

Нурлан,

А генерация исходного кода прошла успешно?

Можете уточнить по галочке - как именно отображается?

Добрый день. Вопрос решен. Ошибка была в браузере. Браузер не показывал некоторые ошибки и соостветвенно публикация не происходило. Спасибо всем.

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

Доброго времени суток.

Стоит задача в мобильном приложении для пользователя с определенной организационной ролью открыть доступ к некоторым полям для изменения, в то время как во все оставшиеся поля изменения вносить нельзя. Данные манипуляции должны проводиться в разделе "Контакты".

Объясните пожалуйста последовательность действий для решения этой задачи.

Спасибо!

Нравится

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

Добрый день.

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

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

Доброго времени суток! Подскажите как получить Id и другие поля из выбранного каточки физ.лица в детали с полями?

Нравится

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

Нурлан, здравствуйте!

Можете детализировать Вашу бизнес-задачу?

Из описанного вопроса не совсем понятно что необходимо сделать.

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