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

Либо вариант, есть ли возможность фильтрации печатных форм, в зависимости от выбранной записи?

Нравится

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

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

Вы можете выполнить настройку настройку печатных форм через Дизайнер системы - справочники - печатные формы.

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

Так же рекомендую ознакомиться со статьями на академии Террасофта: https://academy.terrasoft.ru/documents/sales-commerce/7-11/nastroyka-pe…

https://academy.terrasoft.ru/documents/sales-commerce/7-11/registraciya…

Так же я передам информацию по данному вопросу в отдел разработки для оценки и принятия решения внедрения данной возможности в новых версиях bpm'online.

 

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

Алексaндр Егоров,

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

Сделать группировку и фильтрацию вполне реально. Для этого нужно переопределить несколько методов. На примере будет понятнее.

К примеру, будем делать для карточки "Контакты". Перед тем как переопределять методы необходимо в секции attributes объявить все группы для группировки. Пусть для примера будет две группы:

attributes: {
	subMenuGroup1: {
		dataValueType: Terrasoft.DataValueType.COLLECTION
	},
	subMenuGroup2: {
		dataValueType: Terrasoft.DataValueType.COLLECTION
	}
}

Для карточки нужно переопределить методы initCardPrintForms и generateCardPrintForm и в них "перетасовать" все ваши печатные формы, например так:

initCardPrintForms: function(callback, scope) {
	this.callParent([function(callback, scope) {
		var position = 0;
		var myFirstPrintFormId = "4a0ad08a-8c80-e011-afbc-00155d04320c";
		var mySecondPrintFormId = "55e7f911-9def-48c6-8405-8e9b682bf3b3";
		//получаем коллекцию всех печатных форм
		var printMenuItems = this.get(this.moduleCardPrintFormsCollectionName);
		//создаем две группы печатных форм
		var subMenu1 = this.Ext.create("Terrasoft.BaseViewModelCollection");
		var subMenu2 = this.Ext.create("Terrasoft.BaseViewModelCollection");
		//для примера у нас две печатных формы, одну - в первую группу, другую - во вторую
		subMenu1.add(myFirstPrintFormId, printMenuItems.get(myFirstPrintFormId), position);
		subMenu2.add(mySecondPrintFormId, printMenuItems.get(mySecondPrintFormId), position + 1);
		this.set("subMenuGroup1", subMenu1);
		this.set("subMenuGroup2", subMenu2);
		//переменная для хранения всего меню печатных форм
		var printMenu = this.Ext.create("Terrasoft.BaseViewModelCollection");
		//добавляем две группы
		printMenu.add(printMenu.getUniqueKey(), this.getButtonMenuItem({
			"Caption": {"bindTo": "Resources.Strings.ReportGroup1"},
			"Items": {"bindTo": "subMenuGroup1"}
		}), position);
		printMenu.add(printMenu.getUniqueKey(), this.getButtonMenuItem({
			"Caption": {"bindTo": "Resources.Strings.ReportGroup2"},
			"Items": {"bindTo": "subMenuGroup2"}
		}), position + 1);
		//устанавливаем на меню печати
		this.set(this.moduleCardPrintFormsCollectionName, printMenu);
	}, this]);
},
generateCardPrintForm: function(tag) {
	var cardPrintFormsCollection = this.get(this.moduleCardPrintFormsCollectionName);
	var menuGroups = [];
	cardPrintFormsCollection.each(function(item) {
		menuGroups.push(item.get("Items").bindTo);
	});
	var printForm;
	for (var i = 0; i < menuGroups.length; i++) {
		var subMenu = this.get(menuGroups[i]);
		if (subMenu.contains(tag)) {
		printForm = subMenu.get(tag);
		}
	}
	this.generatePrintForm(printForm);
}

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

Обращаю ваше внимание, что если вам необходимо делать все это для раздела, а не карточки, то не стоит забывать, что там кроме этих методов необходимо кроме указанных выше переопределить методы initSectionPrintForms и generateSectionPrintForm, которые будут работать с реестром, а при открытии карточки в совмещенном режиме (Combined Mode) отработают методы initCardPrintForms и generateCardPrintForm.

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

Хочу настроить функцию Количество по связанному объекту и вывести значение в реестр как здесь https://academy.terrasoft.ru/documents/marketing/7-8/nastroyka-kolonok-…

Вопрос в том, что где-то фильтрация доступна, а где-то нет, хотя всё как будто одинаково.

Почему? Что влияет на это?

Нравится

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

Здравствуйте, Алексей!

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

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

Здравствуйте, подскажите пожалуйста как в отчете прибавить к полю типа Дата 3 года?

Нравится

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

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

К сожалению, на данный момент, непосредственно в печатной форме реализовать данную задачу возможности нет.

В качестве решения Вашего кейса можем предложить:

- создать на странице, к которой привязан отчет Ms Word, дополнительное поле с типом "Дата";

- реализовать заполнение нового поля нужным значением, например, с помощью бизнес-процесса (в бизнес-процессе использовать элемент "Формула" для суммирования значения Вашего поля с типом "Дата" и 3х лет);

- вывести поле с полученным расчетным значением в шаблон отчета Ms Word.

Больше о функциональности бизнес-процессов Вы сможете узнать на Академии: https://academy.terrasoft.ru/documents/technic-bpms/7-11/dizayner-processov

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

Наблюдаю интересный глюк на OnSite.

Раз в какое-то кол-во минут (10-30) Redis поднимает второй процесс, который отъедает до 13 ГБайт памяти, потом завершается. База рэдиса dump.rdb по размеру 3Гб.

В логах этому времени соответствует такая запись, например

[2116] 04 Dec 15:37:45.043 * 10 changes in 300 seconds. Saving...

[2116] 04 Dec 15:37:45.183 * Background saving started by pid 7080

[2116] 04 Dec 15:38:28.223 # fork operation complete

[2116] 04 Dec 15:38:29.504 * Background saving terminated with success

Когда свободной памяти в системе не хватало, BPM повисала на 30-50 сек, сайт становился недоступен. Когда памяти стало больше (уменьшили макс. память для SQL-сервера), стала чуть-чуть подтормаживать в эти моменты, но в целом работает стабильно.

Однако, сама ситуация мне не нравится. Что посоветуете посмотреть? Куда копать?

И вообще, насколько важные данные хранит рэдис? Если вообще отключить сохранение, то при ребуте сервера, потеряется ли что-то важное?

В ВРМ постоянно вкачиваются данные со стороны системы интеграции через EntityDataService.

Нравится

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

Скорее всего у вас включено хранение данных в файле для редиса.

Попробуйте его отключить:

Конфигурация Redis (redis.windows.conf)

    Отключить сохранение на диск (закомментировать)

        #save 900 1

        #save 300 10

        #save 60 10000

Сергей Кy6риш,

Я правильно понимаю, что в Рэдисе ничего важного не хранится и при очистке и перезапуске сервера, например, мы точно ничего не потеряем?

Алексей-Карягин,

верно

Кстати, каноничный Redis есть только под Linux. Порт на Windows — неофициальный.

При перезапуске ничего важного не теряется. Разве что пользователей (в том числе и интеграции) выкинет. И сразу будет чуть тормозить, пока снова всё не закеширует.

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

Для определенной сущности у меня есть администрирование по записям.

Если я даю человеку доступ, допустим на чтение, получит ли группа руководителей роли, в которую он входит такие же права?

А если мне надо, чтобы руководители получили права с правом делегирования другому сотруднику, как тогда?

Нравится

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

Добрый день, Алексей!

 

Если я даю человеку доступ, допустим на чтение, получит ли группа руководителей роли, в которую он входит такие же права?

Да, получит.

А если мне надо, чтобы руководители получили права с правом делегирования другому сотруднику, как тогда? 

В таком случае для нужной роли в правах администрирования по записям нужно чтоб в колонке "Уровень доступа" стоял доступ с правом делегирования (значек в виде ключика).

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

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

Выдает:

ActualizeMoneyColumnsDbStructure.Base.cs / 494 / "Terrasoft.Core.Process.ActualizeMoneyColumnsDbStructure.Result" скрывает наследуемый член "Terrasoft.Core.Process.Process.Result". Если скрытие было намеренным, используйте новое ключевое слово.

Как исправить?

Нравится

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

При проверке конфигурации выдает:

1)

SQL сценарий / pp / Предупреждение / Отсутствует аналогичный SQL сценарий для СУБД Oracle

Оракл не используется, база на MS SQL

2)

Данные / SectionDesigner_UsrPROVERKA_SysModuleInWorkplace / Ошибка / Не привязаны данные для связанного объекта "SysWorkplace" по колонке "SysWorkplace". Значение: "6c869930-fdb9-486f-9ce2-df2ac774101d"

Как исправить?

Нравится

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

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

Мотков Илья,

Был бы признателен за более подробное объяснение про привязку данных. Или за ссылку на инструкцию.

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

6c869930-fdb9-486f-9ce2-df2ac774101d. Т.е похоже, что привязка ссылается на несуществующее рабочее пространство, либо это рабочее пространство было добавлено, но его нет в привязках

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

Добрый день!

Развернул демо-версию продукта 7.11.1.1794_SalesEnterprise для подготовки демо-стенда для показа клиенту. Вел разработку в течение двух недель. После очистки Redis вход в систему оказался невозможен: возникла ошибка - требуются лицензии. 

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

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

Нравится

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

1-й вариант - написать в саппорт

2-ой вариант - перенести пакеты на новый стенд если вы вели разработку в svn

3-й вариант - написать своему PAM'у запрос на демо лицензии с ограниченым сроком действия

Это из быстрых идей. А в остальном, могу предположить, что вы скачали не дистрибутив, а демонстрационную версию. В базе знаний на success портале можно скачать и то, и то. Может перепутали при загрузке?

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

Есть у меня галлерея изображений, которые я отображаю через Terrasoft.Button. Хочу, что бы по клику открывалось большое изображение, однако, при клике вылетает ошибка "Cannot read property 'apply' of undefined" причем дважды.

Вот такой код. Подскажите, куда копать?

getItemViewConfig: function(itemConfig, item) {
				var itemViewConfig = this.get("itemViewConfig");
				if (itemViewConfig) {
					itemConfig.config = itemViewConfig;
					return;
				}
				var config = {
					className: "Terrasoft.Container",
					id: "ImageGalleryContainer",
					items: []
				};
				config.items.push(this.generateImageConfig(item.get("itemId"), item.get("PhotosSmallURL"),
					item.get("PhotosLargeURL")));
				itemConfig.config = config;
				var x = [];
				x.push(config);
			},
 
			generateImageConfig: function(id, smallUrl, largeUrl) {
				var config = {
					id: id,
					type: ConfigurationEnums.CustomViewModelSchemaItem.CUSTOM_ELEMENT,
					style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT + " cpimagebutton",
					className: "Terrasoft.Button",
					iconAlign: Terrasoft.controls.ButtonEnums.iconAlign.TOP,
					tag: id,
					click: {
						bindTo: "onImageClick"
					},
					visible: true,
					enabled: true,
					imageConfig: {
						source: Terrasoft.ImageSources.URL,
						url: smallUrl
					}
				};
 
				return config;
			},
 
			onImageClick: function() {
				debugger;
			}

 

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

Нравится

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

Сто процентов вы указали что-то замудрёное в одном из параметров. Я бы начал с "style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT + " cpimagebutton"" Поставил бы что-нибудь простое, вроде style: "blue".

По хорошему, запихнуть бы в контейнер обычный "чистый" button, посмотреть как отработает, потом навесить, допустим  imageConfig, проверить, и т.д

Добрый день!

сложно сказать куда копать, так как ошибка в том, что не найден какой-то метод можели. Для начала я бы рекомендовал продебажить. Остановиться в месте свала, пройтись по callstack. и возможно станет ясно, какой метод отсутствует

Варфоломеев Данила,

Разобрался, метод должен быть определен во viewmodel scope-е.

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

Добрый день. Не удается отсортировать справочное поле следующим образом:



"lookupListConfig": {

                    columns: ["Number"],

                    orders: [

                        {

                            columnPath: "Number",

                            direction: Terrasoft.OrderDirection.ASC

                        }

                    ]

                },

Нравится

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

скорее всего Number просто текстовое поле, поэтому сортировка происходит некорректно

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

Реализовать сортировку справочного поля можно следующим образом:

"название колонки страницы": {

    dataValueType: Terrasoft.DataValueType.LOOKUP,

        lookupListConfig: {

            orders: [

                  { 

                        columnPath: "колонка справочника, которая сортируется", 

                        direction: Terrasoft.OrderDirection.ASC 

                  }

            ]

        } 

    }

Одеяненко Юлия,

 

Дополню твой ответ, что этот кусок кода должен быть размещен на странице в attributes {}

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