Всех приветствую!

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



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

Страница унаследована от BaseModulePageV2, версия 7.17.2

 

getHeader: function() {
            	return this.get("Resources.Strings.PageSettingsCaption");
            },
 
            initHeaderCaption: Ext.emptyFn,
 
			init: function() {
				this.getHeader();
				this.callParent(arguments);
			},

 

Нравится

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

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

 

Если необходимо изменить значение "Новая запись" на какое-либо другое, то необходимо изменить значение локал.строке "DefaultPageHeaderCaption". Само проставление значения происходит в subscribeSandboxEvents методе MainHeaderSchema здесь:

this.sandbox.subscribe("UpdatePageHeaderCaption", function(args) {
					if (args.hasOwnProperty("pageHeaderCaption")) {
						this.set("PageHeaderCaption", args.pageHeaderCaption ||
							this.get("Resources.Strings.DefaultPageHeaderCaption"));
					}
				}, this);

Это подписка на сообщение, которое отправляется из метода updatePageHeaderCaption модуля BasePageV2:

updatePageHeaderCaption: function(changedColumnName) {
				if (this.getIsFeatureDisabled("OldUI")) {
					if (!changedColumnName || this.get("PageHeaderColumnNames").indexOf(changedColumnName) > -1) {
						if (this.get("IsEntityInitialized")) {
							var caption = this.getPageHeaderCaption();
							this.sandbox.publish("UpdatePageHeaderCaption", {
								pageHeaderCaption: caption
							});
						}
					}
				}
			},

Если же Вам необходимо изменить заголовок только одной странице, то необходимо в методах модуля этой страницы заместить метод updatePageHeaderCaption. Например вот так (это я в разделе контактов отключил миникарточку и добавил этот метод в ContactPageV2):

updatePageHeaderCaption: function() {
        this.callParent(arguments);
        this.sandbox.publish("UpdatePageHeaderCaption", {
								pageHeaderCaption: "For contacts"
							});
      }
 

В результате, при создании новой записи, получаем:

И последнее: как правило в заголовке отображается значение в колонке, которая выбрана как Displayed value в настройках объекта, которую страница отображает:

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

 

С уважением,

Олег

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

 

Если необходимо изменить значение "Новая запись" на какое-либо другое, то необходимо изменить значение локал.строке "DefaultPageHeaderCaption". Само проставление значения происходит в subscribeSandboxEvents методе MainHeaderSchema здесь:

this.sandbox.subscribe("UpdatePageHeaderCaption", function(args) {
					if (args.hasOwnProperty("pageHeaderCaption")) {
						this.set("PageHeaderCaption", args.pageHeaderCaption ||
							this.get("Resources.Strings.DefaultPageHeaderCaption"));
					}
				}, this);

Это подписка на сообщение, которое отправляется из метода updatePageHeaderCaption модуля BasePageV2:

updatePageHeaderCaption: function(changedColumnName) {
				if (this.getIsFeatureDisabled("OldUI")) {
					if (!changedColumnName || this.get("PageHeaderColumnNames").indexOf(changedColumnName) > -1) {
						if (this.get("IsEntityInitialized")) {
							var caption = this.getPageHeaderCaption();
							this.sandbox.publish("UpdatePageHeaderCaption", {
								pageHeaderCaption: caption
							});
						}
					}
				}
			},

Если же Вам необходимо изменить заголовок только одной странице, то необходимо в методах модуля этой страницы заместить метод updatePageHeaderCaption. Например вот так (это я в разделе контактов отключил миникарточку и добавил этот метод в ContactPageV2):

updatePageHeaderCaption: function() {
        this.callParent(arguments);
        this.sandbox.publish("UpdatePageHeaderCaption", {
								pageHeaderCaption: "For contacts"
							});
      }
 

В результате, при создании новой записи, получаем:

И последнее: как правило в заголовке отображается значение в колонке, которая выбрана как Displayed value в настройках объекта, которую страница отображает:

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

 

С уважением,

Олег

Oleg Drobina,

Спасибо большое за помощь! 

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

Добрый день.

После обновления до 7.18.5 на среде on-site перестали открываться карточки редактирования по БП, открываются только через CTI панель. В статье https://academy.terrasoft.ua/docs/user/razvertyvanie_onsite/windows_net_framework/nastroika_vebsoketov/nastroit_vebsokety указанны 3 способа проверки корректной настройки WebSocket-тов. 2 из них у меня проходят успешно, а 3-й как раз открытие карточек из БП. Все рекомендации из статьи выполнил.

Возможно есть еще настройки на которые надо обратить внимание?

Спасибо.

Нравится

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

Добрый день.

Для корректной работы Websockets нужно проверить:

1)Убедиться что в Windows установлен компонент: Application Development - WebSocket Protocol

2) Во всех байндингах сайта должен быть указан один и тот же порт.

3) Настройка пула [Maximum Worker Process] должна иметь значение "1"

4) В Web.config загрузчика и приложения, на всех нодах фермы, должен быть указан один и тот-же machineKey

5) TenantId не должны дублироваться с разными значениями, как в одном и том-же web.config, так и web.config загрузчика и приложения одной ноды.

6)Установлен ли протокол использования вебсокетов для прокси-сервера, если он используется в вашей локальной сети.

7) Настройки антивируса и Firewall. Если нет возможности отключить на сервере эти программы, добавьте IP-адрес и порт вашего сайта Creatio в список исключений для входящих и исходящих потоков.

8) Наличие расширений и надстроек web-браузера, в том числе VPN. Расширения могут блокировать работу вебсокетов.



Если websocket-ы работают корректно, а страница редактирования не открывается, то нужно проверить параметр "portForClientConnection" в web.config.

Укажите в нем порт на котором работает приложение.

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

 В кастомном веб-сервисе есть метод создания договора, иногда срабатыват, а иногда нет, и пишет ошибку:

Terrasoft.Core.ProcessRunBySignalException: Ошибка при запуске процесса "Типовой договор", инициируемого событием "начальный сигнал". 



Кто-нибудь сталкивался с этим? Пытался найти процесс такой, но безуспешно.

Нравится

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

Нужно для правильной возвращаемой структуры типов CompositeObject, без Key/Value, а нативно - {"key": value}

 

Нравится

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

нативно, имеешь ввиду через jobject? или имеешь ввиду задать column key кастомный, если оно, то аннотация(не помню как с# это называется) jsonproperty может помочь наверное

[JsonProperty("Ref_Key", NullValueHandling = NullValueHandling.Ignore)]
или имеешь ввиду избавиться от имени метода в возвращаемом объекте?
тогда наверное стоит юзать это BodyStyle = WebMessageBodyStyle.Bare в аннотации

 [OperationContract]

        [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json,RequestFormat =

        WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]

в этом случае, тебе не надо будет писать название объекта передаваемого в тело метода и возвращаемом тоже не будет его в названии

типа так user:{name:"3213"} станет {name:"3232"}

 

Dima Avdoshin,

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

 

задача сама в том что возвращать сразу красиво, а не через строку  через - JsonConvert.SerializeObject.



сейчас на такой код в сервисе: 

 

        [OperationContract]

        [WebInvoke(Method = "GET", 

            RequestFormat = WebMessageFormat.Json, 

            BodyStyle = WebMessageBodyStyle.Wrapped,

            ResponseFormat = WebMessageFormat.Json,

            UriTemplate = "/ping/{s}")]

            [return: MessageParameter(Name = "data")]

        public object Pong(string s) {

            var res = new CompositeObject();

            res.Add("ping", "pong");

            return res;

        }

 

получаем такой ответ: 

 

{

"data": [

{

"Key": "ping",

"Value": "pong"

}

]

}

 

а надо: {"data":  [{ "ping": "pong"}]} или если короче, то что возвращает JsonConvert.

Стас Гаврилюк,

не решал такого рода задачу, но вот что нагуглил https://stackoverflow.com/questions/17806811/dynamic-objects-in-wcf-not…

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

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

Нравится

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

Здравствуйте, Олег!

 

В основном приложении, в разделе [Системные настройки] есть настройка с кодом [MobileSectionsWithSearchOnly]. Она отвечает за список разделов в мобильном приложении, данные в которых отображаются только через использование поиска.

Если в поле [Значение по умолчанию] проставить значение "0", то во всех разделах записи будут сразу отображаться, без использования поиска.



Если необходимо, чтобы в некоторых разделах записи отображались лишь через использование поиска, требуется прописать в поле [Значение по умолчанию] список объектов разделов, разделяемых точкой с запятой.

 

Эта логика задействована по нескольким причинам:

- с целью уменьшения потребления трафика на моб. приложении;

- уменьшение запросов к серверу на select, что снижает нагрузку на БД;

- зачастую, в рабочей практике, нет необходимости листать весь список записей, а удобнее просматривать список недавних.

 

На СУБД PostgreSQL нет данной настройки, поэтому есть обходное решение для отображения записей в разделах мобильного приложения.

Так как настройки нет, за основу берется фича UseMobileSearchOnlyInSections и режим работы приложения (онлайн-режим). Если фичу отключить, то данные в разделах будут подгружаться автоматически в моб. приложении в онлайн режиме. В оффлайн режиме все записи в разделах кешируются по умолчанию.



Скрипт по включению/выключению фичей ниже:

https://academy.terrasoft.ua/docs/developer/ehlementy_interfejsa/upravl…

 

Частично описание настроек мобильного приложения есть на Академии:

https://academy.terrasoft.ua/docs/8-0/user/ustanovka_i_administrirovani…

 

Так же некоторые настройки подписаны в самом приложении, если их открыть в разделе "Системные настройки".

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

Подскажите сталкивался ли кто-то с тем, что в правах доступа на объект не удавалось выбрать операцию экспорта (http://joxi.ru/n2Y3DL1ckOyQ5r) список пустой (версия 7.18.5)?

Может кто-то нашел решение?

Нравится

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

Добрый день!

Столкнулись с такой проблемой.

В шаблоне письма сделали гиперссылк на запись (пусть будет на новый созданный раздел "Встречи")

При отработки бизнес-процесса пользователю летит письмо с гиперссылкой на конкретную запись в разделе "Встреча".

Пользователь переходит по ссылке - открывается раздел Активности.

 

Дополнительные моменты

1. У пользователя есть доступ к данной записи - он может в нее перейти через уведомления (дополнительная возможность перехода в запись)

2. Раздел скрыт от пользователя

3. Если переходить по гиперссылке под учеткой Supervisor, то запись открывается.

 

Вопрос - почему не открывается запись у обычного пользователя?

Нравится

5 комментариев

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

 

Пробовали очистить кэш Redis командой flushall?

Работа данного функционала завязана на пользовательский кэш. 

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

Проблему решили. Нужно было раздел показать пользователям.

Но все равно это странно. По уведомлению можно перейти на запись в скрытом разделе, а по гиперссылке из письма нет - почему?

Добрый день!

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

Пробуйте передавать ссылку в таком формате:

 

https://site/Navigation/Navigation.aspx?schemaName=Activity&recordId=ab3ea5de-f333-4580-8fa1-70b64db8a2d3
Где schemaName=Название схемы, recordId=id записи

 

Ссылка в письме верная - так же как указано у Вас.

не помогло

 

заметил, что при переходе по гиперссылке из письма я иду на схему

https://click.mail.ru/redir?u=https%3A%2F%2F_______.creatio.com%2FNavig…

 

а если идти по ссылке из уведомления, то я проваливаюсь на страницу page

https://______.creatio.com/0/Nui/ViewModule.aspx#CardModuleV2/NavEventN…

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

Добрый день.

Разворачиваю на тестовом стенде 7.18.5.1500_SalesEnterprise_Softkey_MSSQL_ENU

Под пользователем Supervisor при первом входе выбивает ошибку:

 

Server Error in '/0' Application.

Configuration Error

Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.



Parser Error Message: Не удалось загрузить файл или сборку "Terrasoft.WebApp" либо одну из их зависимостей. Не удается найти указанный файл.



Source Error:

 

Line 656:        </eventMappings>
Line 657:        <providers>
Line 658:          <add name="FileWebEventProvider" type="Terrasoft.WebApp.FileWebEventProvider, Terrasoft.WebApp" />
Line 659:        </providers>
Line 660:        <profiles>



Source File: C:\inetpub\wwwroot\7.18.5.1500_Sales\Terrasoft.WebApp\web.config    Line: 658

 

_________________

Нашёл упоминание о подобное проблеме ранее:

https://community.creatio.com/questions/site-installation-creatio-7162

ndp472-devpack-enu и dotnet-sdk-3.1.301-win-x64 ставил, не помогло.

Есть идеи что не так?



Assembly Load Trace: The following information can be helpful to determine why the assembly 'Terrasoft.WebApp' could not be loaded.

Нравится

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

Добрый день.

 

Проверьте в настройках сайта в IIS у Вас добавлено приложение 0 и правильно ли для него указана директория?

 

В этой инструкции пункт 3 и 4.

Добрый день.

 

Проверьте в настройках сайта в IIS у Вас добавлено приложение 0 и правильно ли для него указана директория?

 

В этой инструкции пункт 3 и 4.

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

Доброго дня!

Возникла следующая ситуация...

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

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

Сервис возвращает коллбэк после своей работы. Оттуда в идеале нужно вызвать какой-то метод для обновления, но все это происходит в схеме этого самого действия, которое было добавлено в меню действий. Там доступна запись Активности (этот функционал реализуется в активностях), из которой было совершено действие по формированию ПФ.

Ниже привожу фрагмент кода для наглядности

Ext.define("Terrasoft.ActionContactNote", {
	extend: "Terrasoft.ActionBase",
	config: {
		useMask: false,
		title: "MobileActionContactNoteTitle",
		iconCls: "atc-action-contact-note"
	},
	execute: function(record, config) {
        this.callParent(arguments);
 
		var serviceName = "AtcPrintablesAttachmentService";
		var	methodName = "Attach";
 
		Terrasoft.ServiceHelper.issueRequest({
			serviceName: serviceName,
			methodName: methodName,
			success: function(response) {
				// Здесь необходимо обновить деталь "Файлы и ссылки"
			},
			failure: function(response) {
				Terrasoft.MessageBox.showMessage("Error in webservice");
			},
			scope: this
		});
 
        this.executionEnd(true);
	}
});

 

Нравится

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

Есть похожее дополнение для бизнес-процессов

https://marketplace.creatio.com/template/refresh-active-page-process-el…

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



Можно попробовать добавить следующий код в тело экшена:

var embeddedDetailId = Terrasoft.util.getColumnSetId(record.modelName, "detailName", pageConfig.viewMode);

var embeddedDetail = Ext.getCmp(embeddedDetailId);

embeddedDetail.setIsCollapsed(false);

var f = CaseFile.create({

    Case: record,

    Name: "xxx"

});

f.phantom = false;

embeddedDetail.addRecord(f);

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

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

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

Нравится

7 комментариев

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

Сидоров Александр Валерьевич,

а как быть со старыми записями?

А для старых - отдельный разовый бизнес-процесс, который пройдется по всем записям и перераздаст права.

Сидоров Александр Валерьевич,

Достаточно ресурсоемко, если учитывать, что в системе около 4 млн. записей. При запуске элемента для настройки прав доступа получаю такую ошибку: "Превышено ограничение 200000 записей при выгрузке данных объекта". Как можно ее обойти? Как-то зациклить элемент БП?

P.s. нашел данную статью: https://community.terrasoft.ru/questions/snyat-ogranichenie-na-koliches… с подобной ошибкой. Но данное решение кажется радикальным. На прод среде недопустимо запускать БП на 4 млн записей. Какие могут быть обходные пути?

Ну вообще можно сделать циклами через порционную вычитку данных. Но может быть вам будет проще выделить все записи через Действия -> Выбрать все и Настроить права доступа? Я попробовал - у меня 400к записей выделилось. 

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

Арнур Келгенбаев,

Или вот эту штуку можно посмотреть 

https://marketplace.terrasoft.ua/app/access-rights-setup-wizard-creatio

Арнур Келгенбаев пишет:

Достаточно ресурсоемко, если учитывать, что в системе около 4 млн. записей. При запуске элемента для настройки прав доступа получаю такую ошибку: "Превышено ограничение 200000 записей при выгрузке данных объекта". Как можно ее обойти? Как-то зациклить элемент БП?

Сделайте в SQL работу с правами. Те же самые таблицы, однотипное добавление и удаление. Работает в разы быстрее

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