Как отвязать модуль !css - этот css модуль был удалён из проекта, но при замещение страница пытается его вытянуть и получаю ошибку: fused to apply style from 'http://locahost:89/0/ConnectedDetailCSS.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled. 

Я заместил страницу, но не могу найти отвязки модуля css!ConnectedDeatailCSS

Нравится

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

Добрый день!

В системе не предусмотрена возможность удаления зависимостей в схемах наследниках. На данный момент у вас есть два варианта решения проблемы:
1) Убрать зависимость в схеме, где она была объявлена
2) Создать пустой модуль ConnectedDetailCSS

Добрый день!

В системе не предусмотрена возможность удаления зависимостей в схемах наследниках. На данный момент у вас есть два варианта решения проблемы:
1) Убрать зависимость в схеме, где она была объявлена
2) Создать пустой модуль ConnectedDetailCSS

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

Доброго времени суток, я не могу настроить elasticsearch по этим настройкам я не могу найти  Morphological Analysis Plugin for ElasticSearch как я понял bintray закрыли и по ссылке тоже не получилось собрать russianmorphology. 

Подскажите как мне теперь установить этот плагин для ElasticSearch?

Нравится

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

Добрый день!
 

Рекомендуем подключить новую версию глобального поиска доступную по ссылке 
https://academy.creatio.com/docs/user/on_site_deployment/containerized_components/global_search_shortcut/global_search
она обратно поддерживается для вашей версии.
Указанная вами версия не поддерживается.
 

С уважением, 

Антон

Добрый день!
 

Рекомендуем подключить новую версию глобального поиска доступную по ссылке 
https://academy.creatio.com/docs/user/on_site_deployment/containerized_components/global_search_shortcut/global_search
она обратно поддерживается для вашей версии.
Указанная вами версия не поддерживается.
 

С уважением, 

Антон

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

Добрый день

 

Подскажите пожалуйста как активировать права на запуск прав доступа?

 

С правами  администратора не могу выдать доступ на просмотр записей. Выходит сообщение (скрин)

Пытаюсь на выделенные записи с реестра раздела, через действия Настроить права доступа

 

 Помогите плз разобраться

Спасибо

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

Нравится

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

Алевтина, добрый день!

 

Судя по ошибке, у вас деактивирован процесс переопределения прав.

Откройте Библиотеку бизнес-процессов, найдите необходимый процесс и активируйте его.

Kalymbet Anastasia,

Добрый день!

 

Благодарю)

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

Коллеги, добрый день

 

Может кто нибудь сможет подсказать где капать и как исправить проблему..

Документооборот, маршрут согласования. 

Когда на согласующего падает задача, то планированная дата завершения задачи не соответствует установленному сроку (в часах)

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

 

Может кто нибудь сталкивался с такой проблемой

Заранее спасибо!

Нравится

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

Алевтина, добрый день!

 

Рекомендуем создать обращение для нашей команды поддержки, написав письмо на адрес support@creatio.com.

Так мы сможем получить больше информации и провести полный анализ Вашей проблемы.

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

Добрый день community. Подскажите, кто как учился работать  ExtJS и потом как вы адаптировали свои знания с работой Terrasoft?  Есть проблема роста в разработке. Я и раньше задавал вопрос тут , спасибо Вам многие помогли подсказали и даже пару месяцев поддерживали в вопросах связанных с разработкой. Сейчас лучше, чем в начале пути, но у меня снова руки опушены, чувствую что за год, очень мало знаю. Я начал работать с хорошим знанием Js, но без знания ExtJs, может проблема в этом? Резюмирую свой вопрос:
1) Как мне учить ExtJs (документация ну такое себе)
2) И как применить это в Terrasoft (как понять структуру, я так понял Terrasoft переписал под себя для удобства библиотеку?) 

Спасибо.

Нравится

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

Ислам Ибрагимжанов,

Сейчас с документацией дело получше, чем когда я начинал. Сам обучался на реальных задачах, никаких курсов. Значительная часть кода, не относящаяся к ядру клиентскому никак не минифицирована, не обфусцирована, так что можно пытаться найти уже реализованную аналогичную функциональность. У меня на старте были поверхностные знания JavaScript, до этого несколько лет на C# программировал, так что с серверной частью проще было. Вот с мобильным приложением по-прежнему туго с документацией, очень мало примеров, много подводных камней, некоторые простые доработки для веба в мобилке довольно неочевидным образом делаются, чего-то вообще нет. 

Несколько лет разрабатываю под эту CRM, и могу сказать, что какие-то глубокие познания в ExtJs почти не нужны. На клиентской части, кроме Ext,create, Ext.String.format, Ext.getCmp, ну и this.callParent вряд ли что-то ещё понадобится. Очень редко требуется какое-то более глубокое взаимодействие непосредственно с самим Ext, большинство потребностей покрывается инструментарием, построенном ТС поверх всего этого.

Для мобильного приложения чуть сложнее. Часто приходится определять новые классы через Ext, нужно понимать разницу между override (расширяет существующий класс) и extend (новый класс-наследник). Но тут материала на день изучения. 

Лучше сфокусироваться на изучении инструментария ТС. Сам Ext подучивать по мере возникновения потребностей 

Но вообще, Террасофт переходит на Angular. Насколько нужно в нём разбираться нужно не могу сказать, т.к. не приходилось пока работать с ним.

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

Бершеда Д. Н., 
Благодарю, а сам ТС вам хватило, что есть в документации? И как вы изучили если можно узнать ТС? Проходили их курсы? 

P.S С английский как раз борюсь, думаю в этом году закрою эту проблему.

Ислам Ибрагимжанов,

Сейчас с документацией дело получше, чем когда я начинал. Сам обучался на реальных задачах, никаких курсов. Значительная часть кода, не относящаяся к ядру клиентскому никак не минифицирована, не обфусцирована, так что можно пытаться найти уже реализованную аналогичную функциональность. У меня на старте были поверхностные знания JavaScript, до этого несколько лет на C# программировал, так что с серверной частью проще было. Вот с мобильным приложением по-прежнему туго с документацией, очень мало примеров, много подводных камней, некоторые простые доработки для веба в мобилке довольно неочевидным образом делаются, чего-то вообще нет. 

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

Добрый день мне нужно в созданном мной модуле сделать функцию для bind к кнопке "Добавить". Я делаю расширение от LookupPage. 

Вот весь код: 
 

define("UsrAccountBaseLookupModule", [
        "LookupPage",
        "LookupPageViewGenerator",
        "LookupUtilitiesV2",
        "css!LookupPageCSS"
    ],
    function(LookupPage, LookupPageViewGenerator) {
        return Ext.define("Terrasoft.configuration.UsrAccountBaseLookupModule", {
            alternateClassName: "Terrasoft.UsrAccountBaseLookupModule",
            extend: "Terrasoft.LookupPage",
            render: function() {
                this.callParent(arguments);
                // if()
                this.myRenderLookupView(this.lookupInfo.entitySchema, this.lookupInfo.gridProfile);
            },
            renderLookupView: Terrasoft.emptyFn,
            myRenderLookupView: function(schema, profile){
                var config = this.getLookupConfig(schema, profile);
                var topPanelConfig = LookupPageViewGenerator.generateFixed(config);
                var buttonsConfig;
                _.some(topPanelConfig.items, function(target) {
                    if (target.id === "selectionControlsContainerLookupPage") {
                        _.some(target, function(target) {
                            if (Array.isArray(target)) {
                                buttonsConfig = target;
                                return true;
                            }
                        });
                        return true;
                    }
                });
                _.some(buttonsConfig, function(target) {
                    if (target.caption === "Добавить") {
                        target.enabled = {bindTo:"getViewModelValues"};
                        return true;
                    }
                });
                this.renderLookupControls(config, topPanelConfig);
            },
            getViewModelValues: function() {
                if(Terrasoft.SysValue.CURRENT_USER.value !== "8239c02a-1376-4e23-82f5-d5b142ac16f4") {
                    window.console.log(Terrasoft.SysValue.CURRENT_USER.value !== 
                        "8239c02a-1376-4e23-82f5-d5b142ac16f4");
                    return false;
 
              } else {
                   return this.render();
 
             }
                var values = {
                    canEdit: true,
                };
                return values;
            },
            generateViewModel: function() {
                var viewModel = this.callParent(arguments);
                this.applyViewModelMethods(viewModel);
                return viewModel;
            },
 
            applyViewModelMethods: function(viewModel, scope) {
                Ext.override(viewModel, {
                    onSearchButtonClick: function() {
                        var parentMethod = this.getParentMethod(this, arguments);
 
                        Terrasoft.chain(
                            function(next) {
                                 // Вот тут нужно сделать вызов функции чтобы кнопка Добавить стала активной
                                this.Ext.callback(scope, this.getViewModelValues);
                                next();
                            },
                            parentMethod,
                            this
                        );
                    }
                });
            },
        });
    });

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

Вот тут я не могу сделать вызов функции. Пожалуйста подскажите

Нравится

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

Добрый день!

Рекомендую сперва проверить работает ли данное замещение кнопки "Добавить". Для этого вместо функции используйте простое значение false. Уже с этого можно делать выводы и искать причину.

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

Коллеги, я никак не могу понять, суть зависания моей системы, я подумал это связано с диском, так как чтение идет оттуда. Купил 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 &amp;&amp; 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,
а я пытаюсь получить к нему доступ?

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

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