Добрый день. Требуется скрывать содержимое ContentContainer инструментальной панели действий в зависимости от значения атрибута карточки редактирования. Я переопределил объявление модуля в карточке, добавив свойство  contentVisible с привязкой к атрибуту, но теперь содержимого ContentContainer не видно никогда.  Подскажите как добиться, чтобы содержимое отображалось в зависимости от значения атрибута карточки редактирования. Ниже привожу код, который я модифицировал

        modules: /**SCHEMA_MODULES*/{

            "ActionsDashboardModule": {

                "config": {

                    "isSchemaConfigInitialized": true,

                    "schemaName": "OpportunityActionsDashboard",

                    "useHistoryState": false,

                    "parameters": {

                        "viewModelConfig": {

                            "entitySchemaName": "Opportunity",

                            "actionsConfig": {

                                "schemaName": "OpportunityStage",

                                "columnName": "Stage",

                                "colorColumnName": "Color",

                                "filterColumnName": "ShowInProgressBar",

                                "orderColumnName": "Number",

                                "innerOrderColumnName": "End",

                                "decouplingConfig": {

                                    "name": "OppStageDecoupling",

                                    "masterColumnName": "CurrentStage",

                                    "referenceColumnName": "AvailableStage"

                                }

                            },

                            "contentVisible": {bindTo: "NrbIsOpportunity"},

                            "dashboardConfig": {

                                "Activity": {

                                    "masterColumnName": "Id",

                                    "referenceColumnName": "Opportunity"

                                }

                            }

                        }

                    }

                }

            }

        }/**SCHEMA_MODULES*/,

Нравится

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

Попробуй по изменению атрибута вызывать обновление  твоей детали:

this.updateDetail({detail: "Relationships"});

Решил свою проблему с помощью сообщений. Пришлось сделать два встречно направленных сообщения, чтобы корректно отрабатывало во всех возможных вариантах просмотра: combined mode с вертикальным реестром и без, separate mode. Ниже код замещающей схемы инструментальной панели действий

define("OpportunityActionsDashboard", [], function() {
	return {
		messages: {
			"InitVisibilityByRights": {
				mode: this.Terrasoft.MessageMode.BROADCAST,
				direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE
			},
			"GetInitVisibilityByRights": {
				mode: this.Terrasoft.MessageMode.BROADCAST,
				direction: this.Terrasoft.MessageDirectionType.PUBLISH
			}
		},
		methods: {
			/**
			 * @inheritdoc Terrasoft.BaseActionsDashboard#subscribeSandboxEvents
			 * @overridden
			 */
			subscribeSandboxEvents: function() {
				this.callParent(arguments);
				var sandbox = this.sandbox;
				var tags = [sandbox.id];
				sandbox.subscribe("InitVisibilityByRights", this.initVisibilityByRights, this, tags);
				sandbox.publish("GetInitVisibilityByRights");
			},
 
			/**
			 * Инициализирует видимость содержимого панели
			 */
			initVisibilityByRights: function(value) {
				this.set("ContentVisible", value);
			}
		},
		diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
	};
});

В карточке редактирования продажи необходимы следующие модификации

		messages: {
			"InitVisibilityByRights": {
				mode: this.Terrasoft.MessageMode.BROADCAST,
				direction: this.Terrasoft.MessageDirectionType.PUBLISH
			},
			"GetInitVisibilityByRights": {
				mode: this.Terrasoft.MessageMode.BROADCAST,
				direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE
			}
		},
 
		attributes: {
			// это и есть атрибут, который определяет видимость
			"IsColumnVisibleByOwnerOrFuncRole": {
				dependencies: [{
					columns: ["IsColumnVisibleByOwnerOrFuncRole"],
					methodName: "publishVisibilityByRights"
				}]
			}
		},
		methods: {
 
			subscribeSandboxEvents: function() {
				this.callParent(arguments);
				this.sandbox.subscribe("GetInitVisibilityByRights", this.publishVisibilityByRights, this);
			},
 
			/**
			 * Публикует признак видимости в другие модули
			 */
			publishVisibilityByRights: function() {
				var moduleIds = this.getModuleIds();
				moduleIds.push(this.sandbox.id);
				var value = this.get("IsColumnVisibleByOwnerOrFuncRole");
				this.sandbox.publish("InitVisibilityByRights", value, moduleIds);
			}
 
		},

 

Вот так это выглядит в интерфейсе

Когда показано содержимое панели действий

 и 

Когда скрыто

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

Подскажите дата отображается на странице как "dd.mm.yy" а нужно "dd.mm.yyyy".

 

Нравится

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

Добрый день!

В профиле пользователя можно изменить формат даты и времени (https://monosnap.com/file/VeAJss8qXIIiDSCfMwQQgXlYqH2HaN)

Добрый день!

В профиле пользователя можно изменить формат даты и времени (https://monosnap.com/file/VeAJss8qXIIiDSCfMwQQgXlYqH2HaN)

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

Есть пакет который устанавливаем на свежую базу. При установке выбивает ошибка. Качаем лог - в логе пишет что все установилось без ошибок.

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

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

Пакет когда то был выставлен на меркетплейс, сейчас он изменен и переработан.

Как можно решить эту проблему

Нравится

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

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

В том то и дело. Что эта версия пакета никогда не отправлялась на верификацию в Террасофт. И собран он с "родной" конфигурации.

Может, в Вашем пакете названия объектов совпали с теми, которые используют в каком-то другом дополнении (Вашем или чьём-то ещё), на которое требуется лицензия.

Разумеется, названия объектов - совпали. И как решается данная проблема?

Покупкой  лицензии. Иначе можно было бы скачать чужое платное дополнение, чуть изменить, пока лицензия есть, а потом пользоваться бесплатно. Как такое отличить от Вашего случая?

Так это наш пакет. Нам что у самих себя покупать лицензию?

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

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

Имеются две среды, две базы на двух разных машинах. Базы отличаются друг от друга. На одной машине у меня есть пакеты разработки, которые я могу менять. Как мне их правильно перенести на другую базу на другую машину, чтобы они там остались доступны мне для изменения? SVN Server есть

Нравится

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

Попробуйте настроить работу с SVN для обоих сред. Подробнее смотрите здесь.

Попробуйте настроить работу с SVN для обоих сред. Подробнее смотрите здесь.

Алла Савельева,

то есть разработка далее будет идти только в файловой системе?

Линар Аминев,

А что Вас смущает в разработке в файловой системе?

Алла Савельева,

да в целом ничего. будем значит в файловой системе. спасибо за ответ)

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

Добрый день!

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

 

Нравится

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

Используйте не браузер смартфона, а мобильное приложение. Там упоминания в ленте работают.

Зверев Александр,

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

Вероятно, это зависит от самого браузера, поддерживаемые ОС и браузеры перечислены в системных требованиях.

Зверев Александр,

Пробовали через различные браузеры, не помогает(

Значит, все они или ОС устройства не из списка поддерживаемых:

 

Операционная система Microsoft Windows (Windows 7; Windows 8; Windows 10):

  • Google Chrome последней официальной версии на дату релиза bpm’online
  • Mozilla Firefox последней официальной версии на дату релиза bpm’online
  • Microsoft Internet Explorer версии 11 и выше;
  • Microsoft Edge

Операционная система OS Х последней официальной версии

  • Apple Safari последней официальной версии на дату релиза bpm’online

В принципе, это логично, у смартфонов другие ОС и браузеры.

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

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

Существует ли документация по сущностям системы? /ServiceModel/EntityDataService.svc/ возвращает массу сущностей, нужны конкретные, в частности персоны, компании, адреса, их взаимосвязи.

Нравится

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

Насколько мне известно такой документации нет.

Компании - Account

Контакты (персоны) - Contact

Адреса - AccountAddress и ContactAddress соответственно

Взаимосвязи - Relationship

Еще можно в браузере через инспектор объектов посмотреть, как называется нужная схема или поле в ней.

Насколько мне известно такой документации нет.

Компании - Account

Контакты (персоны) - Contact

Адреса - AccountAddress и ContactAddress соответственно

Взаимосвязи - Relationship

Еще можно в браузере через инспектор объектов посмотреть, как называется нужная схема или поле в ней.

Можно открыть раздел «Конфигурация» и вбивать в поиск названия (они используются в списке из EntityDataService) и заголовки интересующих объектов. Если неизвестен и заголовок, можно посмотреть используемый объект в мастере раздела для интересующего раздела или детали.

Спасибо за инфо! Методом научного тыка я уже пробовал, но вдруг... :)

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

Добрый день!



Имеется view. Хочу вывести показатель "сумма" строк с учетом фильтра. Выбираю объект, устанавливаю фильтр и получаю ошибку:



{errorCode: "ArgumentNullOrEmptyException", message: "Значение аргумента "queryExpressions" не может быть пустым", stackTrace: undefined, errors: Array(0)}



Может быть надо как-то "правильно" указывать значения view или еще чего-то надо?

Нравится

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

Быстров Сергей,

Такая ошибка возникает для пустых и null объектов типа System.String, то есть, вероятнее всего, причина в данных используемого представления.

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

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

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

Алла Савельева,

Запрос даже до профайлера не дошел (по крайне мере не видел его там). Вьюха просто состоит из колонок текстовых и ID. Я могу работать с ней (есть справочник + используется в БП), но ни график ни показатель сделать не могу. Показатель простой - количество без фильтра (в таблице 5 строк). Запрос у вьюхи тоже элементарный (прямая копия таблицы с другой базы).

Быстров Сергей,

Такая ошибка возникает для пустых и null объектов типа System.String, то есть, вероятнее всего, причина в данных используемого представления.

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

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

Реализовал разделение календаря по сотрудникам в фильтре через кучу diff. Встал вопрос - как наполнить каждый разными данными?

По умолчанию activityCollection планировщика указан как ScheduleGridData. Соответственно, на каждый календарь на странице создаю ScheduleGridData0, ScheduleGridData1, ScheduleGridData2 и так далее и подставляю эти значения в каждый activityCollection, но календари становятся вообще пустыми. Я так понимаю, вопрос в методах отрисовки, но тогда придется переписывать половину CRM.

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

Вот пример одного из календарей

{
            "operation": "insert",
            "name": "Schedule0",
            "parentName": "DataViewsContainer",
            "propertyName": "items",
            "values": {
                 "id": "ActivitySectionV2Scheduler0",
                 "selectors": {"wrapEl": "#ActivitySectionV2Scheduler0"},
                 "itemType": Terrasoft.ViewItemType.SCHEDULE_EDIT,
                 "visible": {"bindTo": "isSchedulerVisible0"},
                 "startHour": Terrasoft.SysSettings.cachedSettings.SchedulerTimingStart,
                 "displayStartHour": Terrasoft.SysSettings.cachedSettings.SchedulerDisplayTimingStart + "-00",
                 "dueHour": Terrasoft.SysSettings.cachedSettings.SchedulerTimingEnd,
                 "timeScale": {"bindTo": "getTimeScale"},
                 "period": {"bindTo": "getSchedulerPeriod"},
                 "timezone": [{}],
                 "startDate": null,
                 "dueDate": null,
	         "activityCollection": {"bindTo": "ScheduleGridData0"},
                 "selectedItems": {"bindTo": "SelectedRows"},
                 "changeSelectedItems": {"bindTo": "onChangeSelectedItems"},
                 "scheduleItemDoubleClick": {"bindTo": "onScheduleItemDoubleClick"},
                 "scheduleItemTitleMouseOver": {"bindTo": "scheduleItemTitleMouseOver"},
                 "scheduleItemTitleClick": {"bindTo": "scheduleItemTitleClick"},
                 "change": {"bindTo": "changeScheduleItem"},
                 "selection": {"bindTo": "SchedulerSelection"},
                 "floatingItemsCollection": {"bindTo": "SchedulerFloatItemsCollection"},
                 "selectionKeyPress": {bindTo: "onSelectionKeyPress"},
                 "floatingItemReady": {"bindTo": "onFloatingItemReady"},
                 "selectionKeyPressSymbols": {"bindTo": "SchedulerSelectionPressedKeys"},
                 "itemBindingConfig": {
                     "itemId": {"bindTo": "Id"},
                     "title": {"bindTo": "getScheduleItemTitle"},
                     "changeTitle": {"bindTo": "onTitleChanged"},
                     "startDate": {"bindTo": "StartDate"},
                     "changeStartDate": {"bindTo": "onStartDateChanged"},
                     "dueDate": {"bindTo": "DueDate"},
                     "changeDueDate": {"bindTo": "onDueDateChanged"},
                     "status": {"bindTo": "getScheduleItemStatus"},
                     "changeStatus": {"bindTo": "onStatusChanged"},
                     "background": {"bindTo": "Background"},
                     "fontColor": {"bindTo": "FontColor"},
                     "isBold": {"bindTo": "IsBold"},
                     "isItalic": {"bindTo": "IsItalic"},
                     "isUnderline": {"bindTo": "IsUnderline"},
                     "markerValue": {"bindTo": "getScheduleItemHint"}
                   },
                   "floatingItemBindingConfig": {
                        "caption": {"bindTo": "getSimpleModuleCaption"},
                        "width": {"bindTo": "getSimpleModuleWidth"}
                   }
}

 

Нравится

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

Смотрите, как реализовано расписание для нескольких пользователей в дополнении «Advanced schedule for bpm'online». 

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

Добрый день!



Есть ли какая-то возможность сделать изменение текста в комментариях?



Дело в том, что туда можно копировать все что угодно, и форматировать нельзя (изменить шрифт, добавить ссылку и т.п.). Можно ли как-то прикрутить стандартную панельку для редактирования текста?

 

Нравится

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

Для ввода форматируемого текста используется сторонний компонент CKEditor. Чуть больше о нём есть в обсуждении.

А пример работы с ним в карточке есть в разделе базы знаний, схема KnowledgeBasePageV2 пакета UIv2, поле Notes типа RICH_TEXT. Обратите внимание на применяемые в нём отдельные функции для работы с изображениями insertImagesToKnowledgeBase и initializeHtmlEditor в нём и на подключенные к компоненту два поля объекта: Notes и NotHtmlNote.

 

Зверев Александр,

А какую схему править, если не секрет? Или это какой-то модуль и я не могу его поменять (версия 7.13.0)?

Вероятно, и не одну. Та же лента отображается и в правой панели, и как деталь раздела, и как элемент истории обращения (как в старом, так и новом виде).

Зверев Александр,

Нашел нужную схему, она для моих целей всего одна. На ней следующий код:

{
	"operation": "merge",
	"parentName": "ModulePageContainer",
	"name": "BodyContainer",
	"propertyName": "items",
	"values": {
		"id": "SocialMessageBodyContainer",
		"itemType": this.Terrasoft.ViewItemType.CONTAINER,
		"wrapClass": ["body-container"]
	}
},
{
	"operation": "insert",
	"name": "SocialMessagePublisherEdit",
	"parentName": "BodyContainer",
	"propertyName": "items",
	"values": {
		"generateId": false,
		"className": "Terrasoft.ESNHtmlEdit",
		"itemType": this.Terrasoft.ViewItemType.MODEL_ITEM,
		"dataValueType": this.Terrasoft.DataValueType.TEXT,
		"contentType": this.Terrasoft.ContentType.RICH_TEXT,
		"labelConfig": {
			"visible": false
		},
		"value": {
			"bindTo": "Message"
		},
		"placeholder": {
			"bindTo": "WritePostHintText"
		},
		"classes": {
			"htmlEditClass": ["postMessage", "placeholderOpacity"]
		},
		"markerValue": "SocialMessagePublisherEdit",
		"prepareList": {bindTo: "prepareEntitiesExpandableList"},
		"list": {bindTo: "entitiesList"},
		"listViewItemRender": {bindTo: "onEntitiesListViewItemRender"},
		"height": "100px",
		"autoGrow": true,
		"autoGrowMinHeight": 100
	}
}

Самое забавное, что как я не старался - не получается "проявить" необходимые инструменты редактирования, как у обычных rich_text полей

 

В коде упоминается ESNHtmlEdit, реализованный в отдельной схеме ESNHtmlEditModule. Там тоже используются механизмы CKEDITOR.

В итоге получилось следующее: 

define("SocialMessagePublisherPage", ["ESNHtmlEditModule", "SocialMentionUtilities", "css!SocialMessagePublisherModule"
], function() {
	return {
		entitySchemaName: "SocialMessage",
		diff: /**SCHEMA_DIFF*/[
{
				// Операция добавления компонента на страницу.
				"operation": "insert",
				// Мета-имя родительского контейнера, в который добавляется поле.
				"parentName": "BodyContainer",
				// Поле добавляется в коллекцию компонентов
				// родительского элемента.
				"propertyName": "items",
				// Имя колонки схемы, к которой привязан компонент.
				"name": "Message",
				"values": {
					// Заголовок поля.
					"contentType": this.Terrasoft.ContentType.RICH_TEXT,
					"labelConfig": {
						"visible": false
					},
					// Расположение поля.
					"layout": {
						// Номер столбца.
						"column": 0,
						// Номер строки.
						"row": 5,
						// Диапазон занимаемых столбцов.
						"colSpan": 12
					},
					"height": "100px",
					"styles": {
							"background-color": "white"
					},
					"controlConfig": {  //здесь и ниже код для того, чтобы в примечания можно было добавлять картинки
						"imageLoaded": {
							"bindTo": "insertImagesToNotes"
						},
						"images": {
							"bindTo": "NotesImagesCollection"
						}
					}
				}
			},
			{
				"operation": "remove",
				"name": "SocialMessagePublisherEdit",
				"parentName": "BodyContainer",
				"propertyName": "items"
			}
		]/**SCHEMA_DIFF*/
	};
});

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

Здравствуйте. Вот например открывается страница добавления новой запси, стандартном методе.

/**
		 * Opens card in chain.
		 * @protected
		 * @param {Object} config Card configuration information
		 */
		openCardInChain: function(config) {
			this.showBodyMask();
			var historyState = this.sandbox.publish("GetHistoryState");
			var stateObj = config.stateObj || {
				isSeparateMode: config.isSeparateMode || true,
				schemaName: config.schemaName,
				entitySchemaName: config.entitySchemaName,
				operation: config.action || config.operation,
				primaryColumnValue: config.id,
				valuePairs: config.defaultValues,
				isInChain: true
			};
			this.sandbox.publish("PushHistoryState", {
				hash: historyState.hash.historyState,
				silent: config.silent,
				stateObj: stateObj
			});
			var moduleName = config.moduleName || "CardModuleV2";
			var moduleParams = {
				renderTo: config.renderTo || this.renderTo,
				id: config.moduleId,
				keepAlive: (config.keepAlive !== false)
			};
			var instanceConfig = config.instanceConfig;
			if (instanceConfig) {
				this.Ext.apply(moduleParams, {
					instanceConfig: instanceConfig
				});
			}
			this.sandbox.loadModule(moduleName, moduleParams);
		}



 где moduleName: "CardModuleV2"

moduleParams:

{
   id: "AddEmailRelation_CasePagee1a6a291-ded1-4de6-a1c8-b0db19a77f97"
   keepAlive: true
   renderTo: "centerPanel"
}

Можно ли как-то открыть модуль (страницу добавления записи), и в неё передать параметры по умолчанию, например проставить какому либо полю значение.

Нравится

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

Можно передав в функции this.openCardInChain значения в defaultValues

Пример есть тут

Можно передав в функции this.openCardInChain значения в defaultValues

Пример есть тут

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