Добрый день! Для оценки удовлетворенности обращений какую из портальных лицензий необходимо выдать пользователю? Самообслуживания, партнерскую или клиентскую?

Нравится

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

Доброго времени суток коллеги. Имею проблему. Есть филиалы(подразделы) и в зависимости, какой сотрудник создает контакт, в контакте в поле "Подразделения" нужно поставить "Подразделения" этого сотрудника. У меня несколько вопросов на счет этого. 

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

Уточнения  некоторых моментов:

      Во-первых) Чтобы сотруднику указать филиал где он работает. Я создал контакт, после создал сотрудника через этот контакт. Далее сделал справочное поле подразделения, и указал пару филиалов выбрал скажем "Новосибирск". 

     Во-вторых) Но я в демо версии видел, что такие филиалы существуют и в пользователи и администрирование в  "функциональные роли" и там создают эти филиалы как подразделения. 

Теперь вопрос: 

1) В первом случае этого достаточно чтобы у сотрудника выделялся филиал как "Новосибирск"? Если да, то   какой код прописать чтобы решить данную задачу или  схему БП.

2) Если нужно чтобы как во втором случае, прощу описать более подробно чтобы в дальнейшем не возникло проблем.

p.s(у меня версия 7.13 finance services) Прощу помочь решить логику, так как недавно начал знакомится. Спасибо.

Нравится

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

Решение делается на усмотрение разработчика проекта исходя из тз.

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

В вашем случае делайте как-нибудь в конце проекта поймете как правильно.

Решение делается на усмотрение разработчика проекта исходя из тз.

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

В вашем случае делайте как-нибудь в конце проекта поймете как правильно.

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



Если хотите выбрать Подразделения из организационных ролей, то в SysAdminUnitInRole найдёте все роли пользователя.  А затем в SysAdminUnit выберете те, у которых type=0 (за исключением All employees и All portal users). 

Полозюков Евгений Петрович,

Я поверхностно понял суть идею. Попробую спасибо.

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

Доброго времени суток коллеги. Имею справочник "Тип документа", при выборе определенного значения в логическом поле "Резидент" нужно автоматический проставляться галочка.

Изображение удалено. Попробовал через this.set("UsrTypeDoc").value, не получается. Прощу направить на верный путь. Спасибо

Нравится

7 комментариев
Лучший ответ
Если я вас правильно понял, вы хотите при изменении значения в поле "Тип документа" == "Биом паспорт"
Установить в поле Резидент = true, в противном случае false
 
Если так, то решение для вас будет такое:
 
В атрибутах:
UsrTypeDoc: {
	dataValueType: Terrasoft.DataValueType.LOOKUP,
	dependencies: [
		{
			columns: ["UsrTypeDoc"],
			methodName: "onChangeUsrTypeDoc"
		}
	]
},
 
в методах:
 
onChangeUsrTypeDoc: function() {
	var type = this.get("UsrTypeDoc");
	if (type && type.value === "уникальнынй идентификатор из БД равный значению Биом паспорта")
	{
		this.set("Резидент(указать на англ)", true);
	}
	else
	{
		this.set("Резидент(указать на англ)", false);
	}
}
 
 
Если же вы хотите при установке в поле Резидент галочки, изменить поле "Тип документа".
 
То решение будет аналогичным, но в обратном виде:
Резидент(указать на англ): {
	dataValueType: Terrasoft.DataValueType.BOOLEAN,
	dependencies: [
		{
			columns: ["Резидент(указать на англ)"],
			methodName: "onChangeResident"
		}
	]
},
 
в методах:
 
onChangeResident: function() {
	var resident = this.get("Resident");
	if (resident)
	{
		this.set("UsrTypeDoc", {value: "здесь ID из БД которое равно Биом паспорту", displayValue: "а здесь значение поля Name из БД"});
	}
	else
	{
		//очистить или установить другое значение, смотря что нужно в данном случае
	}
}

 

Если я вас правильно понял, вы хотите при изменении значения в поле "Тип документа" == "Биом паспорт"
Установить в поле Резидент = true, в противном случае false
 
Если так, то решение для вас будет такое:
 
В атрибутах:
UsrTypeDoc: {
	dataValueType: Terrasoft.DataValueType.LOOKUP,
	dependencies: [
		{
			columns: ["UsrTypeDoc"],
			methodName: "onChangeUsrTypeDoc"
		}
	]
},
 
в методах:
 
onChangeUsrTypeDoc: function() {
	var type = this.get("UsrTypeDoc");
	if (type && type.value === "уникальнынй идентификатор из БД равный значению Биом паспорта")
	{
		this.set("Резидент(указать на англ)", true);
	}
	else
	{
		this.set("Резидент(указать на англ)", false);
	}
}
 
 
Если же вы хотите при установке в поле Резидент галочки, изменить поле "Тип документа".
 
То решение будет аналогичным, но в обратном виде:
Резидент(указать на англ): {
	dataValueType: Terrasoft.DataValueType.BOOLEAN,
	dependencies: [
		{
			columns: ["Резидент(указать на англ)"],
			methodName: "onChangeResident"
		}
	]
},
 
в методах:
 
onChangeResident: function() {
	var resident = this.get("Resident");
	if (resident)
	{
		this.set("UsrTypeDoc", {value: "здесь ID из БД которое равно Биом паспорту", displayValue: "а здесь значение поля Name из БД"});
	}
	else
	{
		//очистить или установить другое значение, смотря что нужно в данном случае
	}
}

 

С точки зрения дальнейшей поддержки правильнее сделать в справочнике "тип документа" логическое поле "резидент". Затем создать БП (в 7.17 такое уже есть). Пример тут. У меня поля "Комплект" - логическое.

Литвинко Павел,

Спасибо

Трефилов Павел Сергеевич,

У меня версия 7.13

Трефилов Павел Сергеевич,Где  можно посмотреть пример?

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

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

Доброго времени суток коллеги. Как поставить значение по умолчанию в справочнике, так чтобы можно было поменять вручную. Имею контакт "Должность" - "Разработчик".

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

Мне нужно чтобы во всех случаях стояло "Маркетолог". И менять этот параметр когда будет надобно, то есть чтобы он был не заблокирован.  Тут  описан способ, но я не понял куда нужно вписать  "Reserved" . Прощу помощи, спасибо

Нравится

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

Установить константу. И выбираешь из списка.

Значение по умолчанию

Установить константу. И выбираешь из списка.

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

Доброго времени суток коллеги. Столкнулся со следующей проблемой. При добавлении справочного поля в раздел "Обращении", возникает следующая ошибка(рис.1)Изображение удалено.

                                                             рис.1

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

Нравится

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

Хороший вопрос и что вы предлагаете анализировать? Приложите хотя бы код карточки.

та же самая ошибка при попытке публикации замещающего объекта "Case" (добавил логическое поле и пытаюсь публиковать но наверху красным цветом пишется этот же текст ошибки красным цветом)

Полозюков Евгений Петрович, Добрый день, код какой карточки? Выше показан скрин, возникающая с помощью мастера разделов. 

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

Полозюков Евгений Петрович пишет:

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

 Так и там не могу добавить объект при публикации появляется ошибка "Invalid parameter binding"

Ислам Ибрагимжанов,

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

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

Ислам Ибрагимжанов,

Пишите в поддержку.

Полозюков Евгений Петрович,

Благодарю за уделенное время.

Ислам Ибрагимжанов,

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

 

Я так понимаю Вы используйте Oracle.

Такие проблемы могут быть при использовании 12-й версии ODAC.

 

Обходное решение - использовать ODAC v.11 :

1) Удалить ODAC v.12 

2) Установить ODAC v.11 x64

3) Если ошибка сохранится, установить ODAC v.11 x32, в свойствах пула приложения установить "Enable 32-bit applications" в "true", проверить кейс.

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

Добрый день, можно ли как-то сделать поле с типом Enum, ссылочным?

Нравится

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

Александр, что Вы имеете в виду под  полем с типом Enum и ссылочным? В 7.Х нет Enum, они были только в 3.Х, вместо них для перечислений тоже используются справочники.

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

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

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

Справочное поле (с модальным окном) - значение отображается как ссылка.

Справочное поле (выпадающий список) - значение отображается  как простой текст.

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

Если в карточке, то похожее для текстового поля решают присвоением свойства showValueAsLink равного true, а также свойства href, где будет URL ссылки, и обработчика linkclick, где указать запускаемую при нажатии функцию. См. тут и тут. Но это для текстового поля (например, поля «сайт»), нужно попробовать, будет ли работать для поля выпадающего списка.

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

Нет, пробовал такие варианты для выпадающего списка, не работают. 

Значит, делать свой компонент, если иметь ссылку так принципиально.

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

Иногда в одном бизнес процессе в базовых элементах "Читать данные" или "Изменить данные" возникает ошибка:

System.InvalidOperationException: Invalid attempt to call Read when reader is closed.

at System.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more)

at System.Data.SqlClient.SqlDataReader.Read()

at Terrasoft.Core.Entities.EntityCollection.LoadShallow(IDataReader dataReader, Dictionary`2 columnMap, Boolean needClear)

at Terrasoft.Core.Entities.EntityCollection.GetEntitySchemaEntityCollection(UserConnection userConnection, IDataReader dataReader)

at Terrasoft.Core.Entities.EntityCollection.GetEntityCollection(UserConnection userConnection)

at Terrasoft.Core.Process.Configuration.ReadDataUserTask.InternalExecute(ProcessExecutingContext context)

at Terrasoft.Core.Process.ProcessActivity.ExecuteElement(ProcessExecutingContext context)

at Terrasoft.Core.Process.ProcessActivity.Execute(ProcessExecutingContext context)



При нажатие Выполнить элемент процесс нормально идет дальше. Происходит ошибка не всегда, иногда весь процесс нормально идет.

Нравится

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

Странно. Выглядит как исключение в стандартном элементе чтения данных. Воспроизводится всегда при чтении или изменении на одном и том же объекте?

Может, в структуре Вашего БП дело? Если сделать тестовый БП, который состоит только из такого же чтения и запускать его, тоже воспроизводится?

В том объекте нет никаких самодельных встроенных БП?

 

В одном и том же БП на разных объектах (заявка и договор). Воспроизводиться только на среде клиента и только в одном БП.

Возможно, дело в конкретной структуре построенного Вами процесса. Например, если одна ветвь приводит к завершению процесса, а в другой в это время как раз выполнялся этот элемент работы с данными. И в обоих ветвях использовался один Reader, через который идёт работа с базой, в той ветви, которая завершилась раньше, его закрыли. Скорее всего, в скрипте.

Несколько раз такое наблюдалось, но не было порядка воспроизведения на стандартных объектах. Если есть возможность построить такой процесс, покажите или вышлите его схему и текст элементов-скриптов. Или обратитесь в поддержку, предоставив доступ к системе.

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

Здравствуйте. Есть задача, для разных ролей выводить разный набор колонок, для раздела. Нашёл метод "initializeProfile" в схеме "BaseSchemaViewModel", в котором проставляется значение переменной "Profile". Я добавляю свою колонку, но в итоге она не выводится в реестр, хотя например если зайти в настройку колонок реестра, то там видна моя добавленная колонка, тогда не понятно почему она не видна в реестре раздела. Как вообще правильно сделать эту таску?

initializeProfile: function(callback, scope) {
				this.requireProfile(function(profile) {
					var profileColumnName = this.getProfileColumnName();
					if (profile && profile.DataGrid && profile.DataGrid.tiledConfig) {
						var prifileDataGrid = JSON.parse(profile.DataGrid.tiledConfig);
						prifileDataGrid.items.pop();
						prifileDataGrid.items.push({
							"bindTo": "PlaceOfBirth",
							"caption": "Место рождения",
							"position": {
							  "column": 17,
							  "colSpan": 7,
							  "row": 2
							},
							"dataValueType": 1,
							"metaPath": "PlaceOfBirth",
							"path": "PlaceOfBirth",
							"captionConfig": {
							  "visible": true
							}
						});
						profile.DataGrid.tiledConfig = JSON.stringify(prifileDataGrid);
					}
					this.set(profileColumnName, profile);
					Ext.callback(callback, scope);
				}, this);
			}

 

Нравится

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

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

 

Реализовать вашу задачу можно добавив в таблицу SysProfileData записи с определёнными ключами и правильным содержанием ObjectData и переопределив метод получения Profile получать нужное содержание по сформированному ключу по вашему условию.

Но также нужно учесть много нюансов, например, когда запись в таблице SysProfileData с сформированным ключом будет пустой и т.п.

А вы не слишком заморочились? Не проще ли научить пользователей менять состав колонок? 

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

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

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

При отправке Email по процессу получаю ошибку соединения с почтовым сервером:

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

Если же отправляю письмо вручную, то отправка осуществляется корректно.

Лог ошибки:

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

 

Пробовали запустить диагностику, вроде все ок:

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

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

Нравится

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

Артём, обратите внимание на статью. Возможно, не заполнено или заполнено не так поле «от кого» в письме.

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

Необходимо сравнить их с логами со стороны сайта системы.

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

Добрый день!

При переносе кастомного пакета с Dev среды на коробочную версию Bank Customer Journey, выдается сообщение:

2020-11-23 13:02:37,339 [41] ERROR IIS APPPOOL\Creatio InstallZipPackage LogError - Error occurred while generating schema source code "OurCustomTable" in package "OurCustomPackge". 
UId bd082083-8004-4e0c-a4dd-faca485267ce: Object reference not set to an instance of an object.
2020-11-23 13:02:37,370 [41] ERROR IIS APPPOOL\Creatio InstallZipPackage OnInstallError - System.NullReferenceException: Object reference not set to an instance of an object.
   at Terrasoft.Core.Entities.EntitySchemaGenerator.WriteEntityColumns(GeneratorContext context, EntitySchema entitySchema)
   at Terrasoft.Core.Entities.EntitySchemaGenerator.WriteEntityCode(GeneratorContext context, SchemaCodeGeneratorResource`1 resource)
   at Terrasoft.Core.Entities.EntitySchemaGenerator.WriteSchemaClassBody(GeneratorContext context, SchemaCodeGeneratorResource`1 resource, GeneratorTokenVisibility sourceVisibility)
   at Terrasoft.Core.CodeGeneration.SchemaCodeGenerator`1.GenerateSourceCode(SchemaCodeGeneratorResource`1 resource, String sourceFileName, List`1 usingCollection)
   at Terrasoft.Core.CodeGeneration.SchemaCodeGenerator`1.GenerateSchemaSource(SchemaCodeGeneratorResource`1 resource, EntityCollection sourceCollection, String sourceFileName)
   at Terrasoft.Core.CodeGeneration.SchemaCodeGenerator`1.GenerateSources(SchemaCodeGeneratorResource`1 resource)
   at Terrasoft.Core.Entities.EntitySchemaGenerator.GenerateSources(SchemaCodeGeneratorResource`1 resource)
   at Terrasoft.Core.SchemaManager`1.GetSchemaSources(TSchemaManagerSchema schema, Guid schemaId, UserConnection userConnection)
   at Terrasoft.Core.SchemaManager`1.GenerateSchemaSources(TSchemaManagerSchema schema, Guid schemaId, UserConnection userConnection)
   at Terrasoft.Core.SchemaManager`1.GenerateSchemaSources(Guid sysSchemaId, ISchemaManagerItem schemaManagerItem, UserConnection userConnection)
   at Terrasoft.Core.Packages.PackageInstallUtilities.InternalInstallSchemasAssociatedData(Guid schemaId, SchemaDescriptor schemaDescriptor, Boolean continueIfError)

Пакет переносится через Export Package To archive и устанавливается через Installed Applications. При полной генерации/компиляции, ошибок на Dev нет.

Подскажите, как это исправить?

Нравится

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

Судя по сообщению, что-то не так при компиляции схемы OurCustomTable в пакете OurCustomPackge, точнее, её наборе колонок.

На базе, откуда переносите, именно её компиляция тоже происходит нормально? Может, у этой схемы есть версии в разных пакетах и на той базе, куда переносите, версии OurCustomTable из них несовместимы (колонки с разными UId и одинаковыми названиями, нехватка колонок или что-то подобное)? Или добавлена колонка-справочник и на базе, куда перенесли, нет объекта справочника для неё?

 

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

 

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

 

Спасибо!

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