Установили по инструкции с сайта -  7.10.3.1182 Service Enterprise:

Windows Server 2016 Standard(RUS),

SQL 2016 (RUS),

Redis 3.2

X5650 (2 cpu), 8 gb mem.

Долго открываются страницы по ссылкам с главной страницы.

Подскажите, что можно посмотреть-подкрутить.

Нравится

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

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

Попробуйте очистить кэш Redis сервера. Запустить redis-cli.exe, и выполнить команду flushall.

Мотков Илья,

Спасибо попробуем.

Мотков Илья пишет:

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

Попробуйте очистить кэш Redis сервера. Запустить redis-cli.exe, и выполнить команду flushall.

А сколько отклик должен быть при нормальной нагрузке, без нагрузки?

 

Подскажите, какой должен быть отклик и как его измеряют?

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

При корректной настройке системы - страница должна открываться в пределах 2-3 секунд.

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

Коллеги, доброго времени суток!

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

Имеется деталь с редактируемым реестром. Изначально все было просто - шмякнул добавить запись -> появилась новая строчка в гриде со всеми контроллами -> все работает. Теперь потребовалось расширить функционал таким образом, чтобы можно было делать множественное добавление.

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

Заранее благодарен.

Нравится

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

Да, забыл сказать, что есть еще одна проблема. Когда делаешь добавление одной записи, то используется страница редактирования объекта детали, что позволяет производить различные автовычисления и "подтягивание" значений элемента основного лукапа. Т.е. если я выбрал Продукт, то автоматом можно подтянуть и тип продукта, и прайс и т.д. В случае множественного добавления все эти автовычисления не срабатывают на вновь добавленные записи. Как я полагаю, эту проблему придется решать уже функцией на странице редактирования основной сущности, которая и будет в результате рефрешить деталь. Но для этого надо решить главную проблему из моего поста выше.

это всё из-за ̶с̶п̶а̶й̶с̶о̶в̶ handleAfterInserted. Попробуйте вот это в методах прописать

handleAfterInserted: function(response) {
	if (this.Ext.isEmpty(response) || !response.success) {
		this.hideBodyMask();
		return;
	}
	this.hideBodyMask();
	this.reloadGridData();
}

 

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

пасиб, добрый человек! все заработало как надо

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

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

Пытаюсь реализовать сортировку справочного поля типа ENUM.

attributes: {
			"LeadType": {"isRequired": false},
			"Stage": {
				"lookupListConfig": {
					"filters": [
						function() {
							var filterGroup = Ext.create("Terrasoft.FilterGroup"), {
								sortProperty: "Number"
							});
							filterGroup.add("ActiveStage",
								Terrasoft.createColumnFilterWithParameter(
									Terrasoft.ComparisonType.EQUAL,
										"UsrShowInMiniPage", "1"));
							filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
							filterGroup.add("Sort",
								Terrasoft.createColumnFilterWithParameter(
									Terrasoft.ComparisonType.GREATER_OR_EQUAL,
										"Number", "0"));
							return filterGroup;
 
						}
					]
				}
			}
		},

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

Нравится

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

А если вот так?

"Stage": {
	"lookupListConfig": {
		"filters": [
			function() {
				var filterGroup = Ext.create("Terrasoft.FilterGroup"), {
					sortProperty: "Number"
				});
				filterGroup.add("ActiveStage",
					Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.EQUAL,
							"UsrShowInMiniPage", "1"));
				filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
				filterGroup.add("Sort",
					Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.GREATER_OR_EQUAL,
							"Number", "0"));
				return filterGroup;
 
			}
		],
		"columns": ["Number"]
	}
}

 

Добрый день.

Добавьте свойство orders в lookupListConfig. К примеру:

"Owner": {

    lookupListConfig: {

        columns: ["Name"],

        orders: [

            {

                columnPath: "Name",

                direction: Terrasoft.OrderDirection.DESC

            }

        ]

    }

},

Терещук Сергей,

Сортировка таким образом не работает. Ни при указании колонки "Name", ни при какой-либо другой колонки. Direction также не влияет на порядок отображения

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

Сортировка также не работает, тем не менее, колонка "Number" добавляется в ответ от сервера

Проблема в том, что Террасофт запилил поддержку orders только в BasePageV2. Если у вас мини-карточка или какая-то другая карточка, которая не наследуется от BasePageV2, то сортировка работать не будет. Но всегда можно заместить родителя и реализовать в нем сортировку по аналогии с базовой карточкой

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

Обнаружил одну странность:

При создании объекта и установки параметра "Наследование"->"Родительский объект" = "Базовый объект (Base)"

дерево "Inherited columns" не содержит перечень унаследованных от родителя колонок Id, CreatedOn, CreatedBy, ModifiedOn, ModifiedBy и ProcessListeners

Кто-нибудь сталкивался с таким? Как это можно победить?

Нравится

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

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



Для создания самой страницы воспользовался данной статьей https://academy.terrasoft.ru/documents/technic-sdk/7-10/zhiznennyy-cikl…



На ней же сказано следующее:

Затем страницу нужно добавить в кэш:
 
Terrasoft.PageCache.addItem("MyPageSchemaName",Terrasoft.configuration.MyPageUtils.getPageData());
Теперь маршрут настроен на страницу MyPage. Для открытия маршрута необходимо выполнить соответствующую команду:
 
Terrasoft.Router.route("myPage", Terrasoft.configuration.MyPageUtils, ["My page data"]);

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

Нравится

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

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

 

Пользовательскую страницу Вы реализовываете в пользовательской JS схеме (тип страницы «Модуль»). А на checkbox’е (где она реализована) Вы должны ее вызвать.

По поводу примера. На текущий момент нет нормальной возможности расширять действия на визите. В следующей версии десктопа (7.11.1) такая возможность появится. Есть статья с примерами (см. https://www.dropbox.com/s/wddrbvgv186juvr).

Вильшанский Дмитрий, Благодарю.

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

Здравствуйте. Как осуществить в программе след. При создании нового заказа активна одна вкладка (данные о потребности) при заполнении всех полей этой вкладки становится активна следующая вкладка (ценовое предложение) и т.д. и соответственно по переходу на вкладки меняется состояние заказа

Нравится

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

Добрый день!



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



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



На такой-то стадии заполните такие вот колонки, на второй стадии уже другие колонки и т.д.

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

При сохранении изменений вот такая ошибка появляетсяИзображение удалено.

Нравится

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

Добрый день, Богдан! Данная проблема иногда возникала при обработке параллельных транзакций, полностью исправлена в версию 7.10.3. Рекомендуем заново создать раздел, а для глобального решения проблемы - обновить приложение.

Кот Владимир Владимирович,

К сожалению использование более новой версии невозможно. Такая проблема появилась после удаления и восстановления базы данных.

Пробовал пересоздавать приложение в IIS но эффекта не дало.

А при создании нового раздела тоже ошибка

Здравствуйте, Богдан!

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

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

Всем доброго времени суток. Версия 7.10.

К примеру, есть некоторый контрол, наследующийся от Terrasoft.Component. Как я понимаю, сам процесс генерации непосредственно HTML-кода происходит на этом этапе:

 

renderComponent: function(buffer, renderData) {
		var self = renderData.self;
		if (self.html) {
			Ext.DomHelper.generateMarkup(self.html, buffer);
			return;
		}
		var tpl = self.getTpl();
		var tplData = self.getTplData();
		tpl = self.processTemplate(tpl, tplData);
		var template = new Ext.XTemplate(tpl);
		self.prepareTpl(template, tplData);
		template.applyOut(tplData, buffer);
	},

(взято отсюда: https://academy.terrasoft.ru/jscoresdk/#!/api/Terrasoft.controls.Compon…)

Собственно, вопрос такой: можно ли сюда вставить какой-либо запрос, типа getEntityCollection? Задача по сути - надо внести некоторые изменения в tplData, получить данные для которых можно только запросом.

Если я делаю запрос после строки var tplData = self.getTplData(); а последующее - переношу внутри функции-обработчика результата запроса, то в консоль вываливается ошибка: Uncaught Terrasoft.ItemNotFoundException: Элемент не создан

Внутрь самой getTplData, понятно, запрос тоже не добавить - там функция возвращает return.

Можно ли вообще реализовать такую штуку с запросом?

Нравится

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

Добрый день. Да, вы можете воспользоваться esq в данном методе. Однако в момент вызова функции обратного вызова часть внутренних переменных контрола будет уже недоступна. Вам стоит смотреть в сторону реализации взаимодействия контрола с моделью, как это реализовано в базовых контролах системы. Пример реализации вы можете посмотреть в SDK https://academy.terrasoft.ru/sites/default/files/documents/docs/technic… стр. 672.

Терещук Сергей,

Сергей, доброго дня.

Спасибо за ответ, хотя вопрос в общем-то уже решён.. но появился следующий: можно ли в контролах использовать миксины (подключить другой контрол с доступом к его функциям)? Есть пара контролов, в которых используются похожие функции, хотелось бы вынести их отдельно, чтобы не плодить копипасту.

Может тоже есть, где посмотреть примеры?

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

Как создать уведомление в коде C#?

Нравится

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

1) Если это активность, то:

var Activity = UserConnection.EntitySchemaManager.GetInstanceByName("Activity");
var EntityActivity = Activity.CreateEntity(UserConnection);
EntityActivity.SetDefColumnValues();
EntityActivity.SetColumnValue("OwnerId", contactID);
EntityActivity.SetColumnValue("Title", "Активность с уведомлением");
EntityActivity.SetColumnValue("RemindToOwner", true);
EntityActivity.SetColumnValue("RemindToOwnerDate", DateTime.UtcNow);
EntityActivity.Save(false);

2) Если другой объект системы, для которого есть  NotificationProvider, то можно сделать аналогичный инсерт в таблицу reminding. Наполнение как из скриншота (скрин из бп, переделывать под createEntity немного лень). Единственное что в поле "Объект" надо вставить ID нужного объекта из вью, в "Уник. индетификатор заголовка" - id конкретной страницы

3)  Если другой объект системы, у которого нет NotificationProvider, то обходной вариант - в активность прикреплять ссылку на ваш объект, уведомление прикреплять к активности. Или лепить собственный NotificationProvider, где-то тут на форуме уже обсуждалась данная тема.

И комментируя ваш батхёрт в соседней теме. "смотрите примеры в конфигурации" - это , пожалуй, девиз террасофта. так было полтора года назад, так осталось и сейчас. никто на форуме (за исключением 5-6 отдельных товарищей) не выкладывает отдельных решений кодом для вопрошающих.

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

спасибо за инф. у меня свой раздел. провайдера не было. провайдера нового написал. занес запись о нем в таблицу NotificationProvider. Создаю из кода уведомление, не вижу его нигде. Подскажете что еще нужно? может настройка какая-нибудь или еще какое-то сообщение нужно послать?

 

Данько Дмитрий Леонидович пишет:

Подскажете что еще нужно?

Насколько я помню надо проверить наличие записи в Reminding (isread должно быть false), проверить, чтобы был зарегистрирован провайдер для раздела в NotificationProvider, проверить ошибки в консоли (отрабатывает ли C# код провайдера) и самое главное надо для коммуникационной панели сделать описание айтема уведомления (верный способ, что всё работает, но нет описания для уведомления — в коммуник. панели "пустое" место, нет картинки, что нет напоминаний, как на скрине)

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

1) в таблицу NotificationProvider добавил 1 строку - описание провайдера ClassName = 'xxxxxxxxxx' (полное название моей схемы), Type=1 (Notification)

2) в таблицу Reminder добавил уже несколько строк - все заполнены. они как бы и должны появляться в уведомлениях. но не появляются.

В коде стоит обработка исключений они не появляются, записи успешно уходят в SQL.

3) у меня выглядит так как вы выложили на фото. пусто. что означает сделать описание итема для комуник панели? подскажите пож.

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

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

отбой. я кажется разобрался. я в коде инициализирую получателя - в коде C# это всегда супервизор. надо как-то по другому пользователя указывать, другой контакт. 

Данько Дмитрий Леонидович пишет:

что означает сделать описание итема для комуник панели? подскажите пож.

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

Загляните в ReminderNotificationsSchema (в схеме из пакета nui - свалка, можете глянуть в пакете Invoice). По сути там в diff описывается как отрисовывается единичное уведомление для конкретного объекта.

Добрый день,

можно ли поподробнее про пункт "создать описание айтема уведомлений"? Что это и , где хранится? Цель создать визу для кастомного объекта через свой кастомный Approval процесс. Notification provider описан и зарегистрирован, никаких ошибок он уже больше не кидает, в конечном результате имею именно пустое, без картинки пространство в коммуникационной панели.

Видимо, речь о пункте 3 в инструкции:

3. Заместить схему вкладки напоминаний ReminderNotificationsSchema

1. Чтобы отображались напоминания по требуемому объекту, создайте в пользовательском пакете замещающую схему ReminderNotificationsSchema и добавьте в нее необходимую программную логику.

...

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

Здравствуйте! Такая ситуация, есть деталь в детали, но при попытке в дочерней детали добавить(изменить запись) возникает вот такая вот ошибка, что это может быть?

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

Нравится

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

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

 

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

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

 

По скриншоту сложно точно сказать в чем проблема. Воспользуйтесь отладкой  - https://academy.terrasoft.ru/documents/technic-sdk/7-11/otladka-klientskogo-koda

 

Также прикрепляю приближенный алгоритм реализации детали, у которой есть своя деталь - https://www.dropbox.com/s/5pt5785iowxv0du

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