Привет, пытаюсь открыть в секции по кнопке форму(через ModalBox.show), но падает ошибка, о том что не может определить ModalBox и соотвественно не вызывается метод show, т.к ModalBox не определен. ModalBox на форму добавлен.

define("OpportunitySectionV2", ["BaseFiltersGenerateModule", "PrintReportUtilities","ModalBox"],
        function(BaseFiltersGenerateModule, ModalBox) {

Нравится

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

У вас ошибка в последовательности объявлений модулей.

Попробуйте так:

define("OpportunitySectionV2", ["BaseFiltersGenerateModule","ModalBox", "PrintReportUtilities"],
        function(BaseFiltersGenerateModule, ModalBox) {

 

У вас ошибка в последовательности объявлений модулей.

Попробуйте так:

define("OpportunitySectionV2", ["BaseFiltersGenerateModule","ModalBox", "PrintReportUtilities"],
        function(BaseFiltersGenerateModule, ModalBox) {

 

Дмитрий Антохин,

Спасибо, помогло)

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

Добрый день.

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

Атрибут, созданный на детали, не работает (тут условие для теста, а так хотелось бы что-то типа NOT_EQUAL this.get("Collection").getItems() ):

"TscCategory": {
                lookupListConfig: {
                    filter: function() {
                        var filters = this.Terrasoft.createFilterGroup();
                        filters.add("TscCategoryFilter", this.Terrasoft.createColumnFilterWithParameter(
                            this.Terrasoft.ComparisonType.EQUAL, "Id", "{C3AFADA6-98A4-7BC3-E053-2E9210ACF375}"));
                        return filters;
                    }
                }
            }, 

 

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

Нравится

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

eduard-t,

посмотри в activityDetail метод getFilters, и переорпделели его на своей детали, если у тебя что то более сложное к примеру работа с коллекцией, то стоит использовать setFilter

Попробуйте так:

var filters = this.Terrasoft.createFilterGroup();

var filter = filters .add("Filter01",
                                Terrasoft.createColumnInFilterWithParameters("Id",
                                ["c7a2112b-6351-4d68-b24f-9963cb0b27c9", "9e085bd0-b7a3-46dc-a76f-ed7f9b3dc9fe"]));
filter.comparisonType = Terrasoft.ComparisonType.NOT_EQUAL;

return filters;

Колногоров Роман Андреевич,

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

eduard-t,

посмотри в activityDetail метод getFilters, и переорпделели его на своей детали, если у тебя что то более сложное к примеру работа с коллекцией, то стоит использовать setFilter

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

Добрый день! Возникла след. особенность: при осуществлении переписки между клиентом и пользователем в Creatio - у клиента не группируются письма по общей Теме в его почтовом клиенте. 

 

То есть в outlook сделана группировка и она работает, кроме входящих писем с Creatio. Каждое входящее письмо из Creatio приходит в отдельной группировке. 

 

Может быть кто-нибудь знает как Creatio влияет на эти письма, что они не группируются в outlook ?

Нравится

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

Татьяна, добрый день!

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

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

Приветствую, коллеги!
Помогите разобраться с вопросом, пожалуйста. 

Есть раздел "Номенклатура материалов" (рис.1). На основе этого раздела создал деталь с редактируемым реестром, по методике (https://academy.terrasoft.ru/docs/7-16/developer/elements_and_component…). Эту деталь вывел на раздел "Обращение" (рис.2). В деталь элементы добавляются и создаются сразу в разделе.

А как сделать так, чтобы при добавлении в делать в поле "Название" была возможность выбрать уже существующие материалы из раздела "Номенклатура материалов"?

 

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

Нравится

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

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

 

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

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

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

Решение в лоб: дропнуть запись в БД, к которой должен обратиться поток, во время утверждение/отклонения визы. Что приведёт к исключению и соответственно отмене БП.

Хотелось бы решить задачу более красиво.

Нравится

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

На сколько помню то можно при выполнении скрипта в БП вернуть не true а false, тогда процесс вроде как не должен дальше идти. Нечестно не помню, нужно проверить

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

Привет всем! У меня цель аналогична в посте https://community.terrasoft.ru/questions/kak-massovo-sdelat-pisma-obrab…

 

Действовала по инструкции, создала БП по изменению признака "Нуждается в обработке" == False в активностях.

 

После выполнения процесса в активностях поле изменилось, но вот в коммуникационной панели письма не ушли из "Необработанных".

 

Сможете помочь? Или обраться в службу тех поддержки?

Нравится

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

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

Подскажите, пожалуйста, кто-то сталкивался с созданием воронки по статусу Контрагента, аналогичную воронки продаж? Можете подсказать примерное решение данного вопроса.

Нравится

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

Добрый день!

В текущей версии системы воронки можно строить только по  лидам и продажам. Выбрать другой объект невозможно.

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

Спасибо, что делаете наш продукт лучше!

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

Привет,

ранее долгое время использовал СРМ в режиме работы в файловой системе (далее РФС). Недавно появилась необходимость проверки опции UseStaticFileContent. Опция не работает с РФС. Следовательно я сделал следующее:

1. Забрал изменения из файловой системы.

2. Скомпилировал все

3. Отключил РФС при помощи filedesignmode enabled="false". 

4. Включил UseStaticFileContent

5. Попытался скомпилировать все. В результате получил более 2х тысяч ошибок компиляции.

Вопросы:

1. Нужно ли проводить компиляцию из пункта 5? Возможно будет работать UseStaticFileContent и C# код и без нее?

2. Если компиляцию проводить нужно, то как избавиться от ошибок? При работе в РФС компиляция происходит без ошибок, при отключении - генерирует ошибки.

Нравится

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

Удалите (переместите) из папки Terrasoft.WebApp\Terrasoft.Configuration\Pkg кастомные пакеты, затем компиляция пройдет нормально. Подсказка, можно отсортировать по дате изменения, тогда будет видно где коробочные пакеты, а где кастомные. Если не знаете какие из этих пакетов являются кастомными, то можно удалить все пакеты из этой папки, а потом скопировать в эту папку пакеты из чистого дистрибутива.

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

Удалите (переместите) из папки Terrasoft.WebApp\Terrasoft.Configuration\Pkg кастомные пакеты, затем компиляция пройдет нормально. Подсказка, можно отсортировать по дате изменения, тогда будет видно где коробочные пакеты, а где кастомные. Если не знаете какие из этих пакетов являются кастомными, то можно удалить все пакеты из этой папки, а потом скопировать в эту папку пакеты из чистого дистрибутива.

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

Помогло, большое спасибо!

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

Добрый день. При передаче сервису объекта с датой возникает исключение:

Суть ошибки понятна. Есть ли возможность настройки формата json'a для обращение к сервису через ServiceHelper?
Такого решения "в лоб" хотелось бы избежать:
 

UsrDateOfLastSale: item.get("UsrDateOfLastSale")
			? "\/Date(" + Date.parse(item.get("UsrDateOfLastSale")) + ")\/"
			: null,

 

Нравится

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

Добрый день.

Как таковых примеров у нас нет, могу разве что порекомендовать использовать такой формат:

function () {
    return '/Date(' + (+this) + this.format('ZZ') + ')';
}

Добрый день.

Как таковых примеров у нас нет, могу разве что порекомендовать использовать такой формат:

function () {
    return '/Date(' + (+this) + this.format('ZZ') + ')';
}

Григорьев Михаил Алексеевич,

Да, пришлось прибегнуть к конкатенации строки 

"\/Date(" + Date.parse(item.get("UsrDateOfLastSale")) + ")\/"
Дело в формате json даты, которую использует micrisoft для сервисов WCF.
Показать все комментарии

Добрый день!

Необходимо заблокировать возможность изменение поля Состояние (Status) на странице просмотра конкретного обращения. Когда я применяю фильтрацию, запрет поля происходит сразу на двух страницах (на CasePreviewPage - странице предпросмотра обращения и на CaseEditPage - страницы изменения обращения)

Можно ли каким то образом применить запрет на изменения поля только на странице CasePreviewPage?

Terrasoft.sdk.Model.addBusinessRule("Case", {
	name: "CaseStatusCustomRule",
	ruleType: Terrasoft.RuleTypes.Custom,
	triggeredByColumns: ["Status"],
	events: [
		Terrasoft.BusinessRuleEvents.Load,
		Terrasoft.BusinessRuleEvents.ValueChanged
		],
	executeFn: function(record, rule, column, customData, callbackConfig) {
		let vStatusId = record.get("Status.Id");
		let vSfld = "Status";
		record.changeProperty(vSfld, {
			disabled: true
		});
 
		let vFilter = Ext.create("Terrasoft.Filter", {
			name: "CaseStatus_NextStatus_Filtration",
			modelName: "CaseNextStatus",
			property: "Status",
			assocProperty: "NextStatus",
			operation: Terrasoft.FilterOperations.Any,
			value: vStatusId
		});
		record.changeProperty("Status", {addFilter: vFilter});
 
		Ext.callback(callbackConfig.success, callbackConfig.scope, [true]);
	}
});

 

Нравится

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

Сергей, добрый день!

 

Такого признака, на какой из страниц выполняется правило, в системе нет.

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

 

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

Terrasoft.sdk.Module.setChangeModes("[Объект_раздела]", [Terrasoft.ChangeModes.Read]);

 

Схему настроек раздела можно найти по маске %Mobile[Объект_раздела]ModuleConfig

 

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

Но при этом в карточке не будет кнопки редактирования. Для добавления кнопки редактирования записи нужно переопределить карточку просмотра и в ней реализовать свой метод initNavigationButtons(). Для этого (на примере раздела для объекта SNLWARSECTION) нужно создать схему-модуль MobileSNLWARSECTIONPreviewPage и в ней добавить такой код:

 

Terrasoft.LastLoadedPageData = {
                controllerName: "Terrasoft.configuration.SNLWARSECTIONPreviewPageController",
                viewXClass: "Terrasoft.configuration.SNLWARSECTIONPreviewPageView"
};

Ext.define("Terrasoft.configuration.view.SNLWARSECTIONPreviewPage", {
                extend: "Terrasoft.view.BasePreviewPage",
                alternateClassName: "Terrasoft.configuration.SNLWARSECTIONPreviewPageView",
                config: {
                                id: "SNLWARSECTIONPreviewPage"
                }
});

Ext.define("Terrasoft.configuration.controller.SNLWARSECTIONPreviewPage", {
                extend: "Terrasoft.controller.BasePreviewPage",
                alternateClassName: "Terrasoft.configuration.SNLWARSECTIONPreviewPageController",
                statics: {
                                Model: SNLWARSECTION
                },
                config: {
                                refs: {
                                                view: "#SNLWARSECTIONPreviewPage"
                                }
                },

                /**
                * @protected
                * @overridden
                */
                initNavigationButtons: function() {
                                this.callParent(arguments);
                                var view = this.getView();
                                var editButton = view.showEditButton(true);
                                editButton.on("tap", this.onEditButtonTap, this);
                }

});

Ключевое - это view.showEditButton(true), добавляющий кнопку редактирования в навигационную панель.
 

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