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

В рамках интеграции C#-приложения (.Net 5.0) с Creatio (7.15.4) пытаюсь настроить создание сущности "Обращение" ("Case") с помощью протокола OData 4 и через передачу параметров. Сущность создается ,но часть из переданных параметров игнорируется, хотя  GUID указан верный.

Пример POST запроса из Postman и ответа от сервиса (значение для CgrCommunicationTypeId установлено некорректное)

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

 

Возможно кто-то сталкивался с подобной проблемой и знает куда копать, буду благодарен за любую помощь. Поиск не помог :(

Нравится

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

Здравствуйте, попробуйте на уровне интерфейса или БД изменить/установить значение колонки.

Если выполнять запрос на обновление, то колонка изменит значение?

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

Добрый день, столкнулся с ситуацией, нужно сохранить настройку колонок детали для портальной страницы.

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

А как правильно сохранить настройку на портальной странице, у портального пользователя нету кнопки сохранить настройку колонок для всех.

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

Нравится

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

Смотреть в таблицу SysProfileData, твой настройке нужно поставить в поле ContactId значение null

 

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

--удалял все настройки кроме тех, которые не пустые и не под пользователем супервизор. В вашем примере в key нужно подставить настройку этой самой детали. А id пользователя твоего пользователя, от которого копировать на всех
	/*	
		delete from SysProfileData where "Key" in (
		select "Key" from SysProfileData
		where ("Key" like 'Usr%GridDataView' or "Key" like '%Detail%') and SysCultureId = '1A778E3F-0A8E-E111-84A3-00155D054C03'
		and (ContactId = '410006E1-CA4E-4502-A9EC-E54D922D2C00' or ContactId is null)
		group by "Key"
		having count(*) >=2
		) and ContactId is null
	*/
--	в тут обновляем contactId на null (для системы если стоит null, то это считается настройкой по умолчанию.
 /*	
	update SysProfileData set ContactId = null
	where "Key" like 'Usr%GridDataView' or "Key" like '%Detail%' and SysCultureId = '1A778E3F-0A8E-E111-84A3-00155D054C03' and ContactId = '410006E1-CA4E-4502-A9EC-E54D922D2C00'
  */

 

Смотреть в таблицу SysProfileData, твой настройке нужно поставить в поле ContactId значение null

 

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

--удалял все настройки кроме тех, которые не пустые и не под пользователем супервизор. В вашем примере в key нужно подставить настройку этой самой детали. А id пользователя твоего пользователя, от которого копировать на всех
	/*	
		delete from SysProfileData where "Key" in (
		select "Key" from SysProfileData
		where ("Key" like 'Usr%GridDataView' or "Key" like '%Detail%') and SysCultureId = '1A778E3F-0A8E-E111-84A3-00155D054C03'
		and (ContactId = '410006E1-CA4E-4502-A9EC-E54D922D2C00' or ContactId is null)
		group by "Key"
		having count(*) >=2
		) and ContactId is null
	*/
--	в тут обновляем contactId на null (для системы если стоит null, то это считается настройкой по умолчанию.
 /*	
	update SysProfileData set ContactId = null
	where "Key" like 'Usr%GridDataView' or "Key" like '%Detail%' and SysCultureId = '1A778E3F-0A8E-E111-84A3-00155D054C03' and ContactId = '410006E1-CA4E-4502-A9EC-E54D922D2C00'
  */

 

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

Большое спасибо!

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

Выполняется следующий порядок действий:

 

1) Открывается мини-карточка создания объекта Х

2) На мини-карточке есть справочное поле -- переходим к выбору его значений (открывается лукап объекта Y)

3) В лукапе есть кнопка "добавить" -- нажимаем, для добавления объекта Y

 

Происходит странное: лукап закрывается, остается мини-форма создания объекта X, а под ней полноценная карточка создания объекта Y. Это известная проблема? Есть способы ее решения?

Нравится

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

Добрый день!

 

 

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

Рекомендуем в мини-карточках использовать для справочников выпадающий список.

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

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

Нравится

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

Смотрите в коде функции onFilterUpdate устанавливает фильтр. initFilterAttributes в ней можно самостоятельно обработать данные фильтра из профиля при загрузке реестра.

Добрый день, Денис!

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

 

Светлана Змиёва, создание фильтра в разделе из кода клиентской части

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

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

 

Например, см. раздел «Маркетинговые планы», фильтр по выбору года в выпадающем списке.

 

В схеме CampaignPlannerSection логика отправки сообщения в «песочницу» на событии изменения года:

/**
 * @override Terrasoft.BaseMarketingCalendarSection#calendarYearChanged
 */
calendarYearChanged: function (newValue) {
    this.sandbox.publish("CalendarYearChanged", newValue, ["MarketingCalendarCampaignsModuleId"]);
}

И базовая реализация  этого поля  и его обработчика с пустой функцией в BaseMarketingCalendarSection:

 

{
    "operation": "insert",
    "parentName": "LeftGridUtilsContainer",
    "propertyName": "items",
    "name": "CalendarYear",
    "values": {
        "dataValueType": Terrasoft.DataValueType.ENUM,
        "caption": {bindTo: "Resources.Strings.YearControlLabel"},
        "wrapClass": ["select-year-container"],
        "controlConfig": {
            "className": "Terrasoft.ComboBoxEdit",
            "list": {
                "bindTo": "CalendarYearList"
            },
            "prepareList": {
                "bindTo": "loadCalendarYearList"
            },
            "value": {
                "bindTo": "CalendarYear"
            },
            "change": {
                "bindTo": "calendarYearChanged"
            }
        }
    }
}
 
...
/**
 * Fires when year in calendar changed.
 */
"CalendarYearChanged": {
    mode: Terrasoft.MessageMode.PTP,
    direction: Terrasoft.MessageDirectionType.PUBLISH
}
            },
.....
/**
 * Handles change of selected year in calendar.
 * @protected
 * @param {Object} newValue Selected year value.
 */
calendarYearChanged: Terrasoft.emptyFn,

А в схеме BaseMarketingCalendarPage приём этого сообщения и наложение фильтров по году:

/**
 * @inheritDoc Terrasoft.BaseSectionV2#subscribeSandboxEvents
 * @overridden
 */
subscribeSandboxEvents: function() {
    var resolvedClickSubscriberId = this.sandbox.id;
    this.sandbox.subscribe("OpenCalendarGridSettings", function() {
        this.openGridSettings();
    }, this, [resolvedClickSubscriberId]);
    this.sandbox.subscribe("SetCalendarScale", function(config) {
        this.setScale(config.tag);
    }, this, [resolvedClickSubscriberId]);
    this.sandbox.subscribe("ToggleCalendar", function(value) {
        this.set("IsRightGridContainerVisible", value);
    }, this, [resolvedClickSubscriberId]);
    this.sandbox.subscribe("SortGrid", function(tag) {
        this.sortGrid(tag);
    }, this, [resolvedClickSubscriberId]);
    this.sandbox.subscribe("CalendarYearChanged", function(value) {
        this.$CalendarYear = value;
        this.reloadGridData();
    }, this, [resolvedClickSubscriberId]);
},
 
 
...
 
 
/**
 * @inheritdoc Terrasoft.GridUtilities#getFilters
 * @returns {Terrasoft.FilterGroup}
 */
getFilters: function() {
    var sectionFilters = this.get("SectionFilters");
    if (Ext.isEmpty(sectionFilters)) {
        return this.mixins.GridUtilities.getFilters.call(this);
    }
    var selectedYear = new Date().getFullYear();
    if (!Terrasoft.isEmpty(this.$CalendarYear) && !Terrasoft.isEmpty(this.$CalendarYear.value)) {
        selectedYear = this.$CalendarYear.value;
    }
    var serializationInfo = sectionFilters.getDefSerializationInfo();
    serializationInfo.serializeFilterManagerInfo = true;
    var deserializedFilters = Terrasoft.deserialize(sectionFilters.serialize(serializationInfo));
    deserializedFilters.addItem(Terrasoft.createColumnFilterWithParameter(
        Terrasoft.ComparisonType.GREATER_OR_EQUAL,
        "StartDate", new Date(Date.UTC(selectedYear, 0)),
        Terrasoft.DataValueType.DATE));
    deserializedFilters.addItem(Terrasoft.createColumnFilterWithParameter(
        Terrasoft.ComparisonType.LESS,
        "StartDate", new Date(Date.UTC(selectedYear + 1, 0)),
        Terrasoft.DataValueType.DATE));
...

 

Смотрите в коде функции onFilterUpdate устанавливает фильтр. initFilterAttributes в ней можно самостоятельно обработать данные фильтра из профиля при загрузке реестра.

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

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

Нравится

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

Добрый день!

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

Добрый день!

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

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

не помогает, на Supervisor проверил

Александр Тыра,

Supervisor всегда обладает всеми правами. Ограничить у него их нельзя

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

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

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

Нравится

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

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

Функциональность создания новой записи из справочника реализована в LookupQuickAddMixin.

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

За эту функциональность отвечает фича UseSilentCreation.

"Demchenko Olha" написал:

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

Функциональность создания новой записи из справочника реализована в LookupQuickAddMixin.

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

За эту функциональность отвечает фича UseSilentCreation.

Ольга, спасибо!

Я, как раз перед Вашим ответом нашел нужный модуль LookupQuickAddMixin :smile:
Заместил его, и добавил необходимое условие, чтобы срабатывал метод openPageForNewEntity.
Все работает корректно!

Я попробовал в 7.16 менять эту фичу, но она ни на что не повлияла. Как была возможность создать новую запись прямо из поля, так и осталась

В 7.16 карточка лида выглядит уже не так, как в первом сообщении темы. Возможно, и логика менялась. Где именно вводите и создаётся запись?

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

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

Нравится

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

Дмитрий, думаю, что данная статья поможет
http://www.community.terrasoft.ru/forum/topic/13214

"Демьяник Алексей Олегович" написал:Здравствуйте!

Сами разделы/детали (их страницы редактирования, а также объекты, на которые они ссылаются) Вы можете удалить из конфигурации.
При этом в базе данных останутся записи. Необходимо удалить записи с таблиц:
SysModule
SysModuleEdit
SysModuleEditLcz

Также обратите внимание на таблицу SysDetails.

Добрый день Дмитрий!!!

на будущее совет прежде чем удалять Деталь, Страницу редактирования, или раздел из конфигурации, скопируйте все Uid каждой схемы.
постройте запросы к таблицам
- SysSchema
- SysModuleEntity
- SysModuleEdit
- SysModuleEditLcz
- SysDetails
- SysModule
- SysModuleLcz
Найдите все хвосты, где хранятся ссылки на удаляемые схемы, вычистите таблицы, а уже после удаляйте схемы через конфигурацию. Так будет надежнее. И не забывайте о "Данных", именно с помощью данных мы фиксируем и переносим наши созданные новые страницы. Там тоже нужно не забывать вычищать все.

Здравствуйте.
Спасибо за помощь. Покопаюсь в таблицах.

Добрый день Дмитрий!!!

я бы вам посоветовал написать 1 UNION запрос в который бы собиралась вся информация о удаляемой схеме. вам бы так легче было бы.

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

А чем это будет отличаться от видеоуроков?

Тарас, действительно а чем не подходят вебинары и видео уроки:
http://www.training.terrasoft.ua/resources/video
http://www.training.terrasoft.ua/resources/webinar

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

Добрый день! Я недавно изучаю функционал.
Сейчас настраиваю БП(описываю часть):
Создание нового контакта и после его сохранения, создание Интервью для определенного Опроса, для созданного контакта.
Использую Действие Открытие окна.
Выбираю Карточка редактирования - Интервью;
Создать новую запись;
Определяю соответствие параметров диаграммы полям данных окна: Контрагент (ID контрагента), Контакт(ID Контакта), Опрос (значение по умолчанию - необходимый опрос)
В результате: Новый контакт создался, после его сохранения, открывается окно Интервью, но там только Контакт, дата и кнопки, вопросов нет.
Подскажите, пожалуйста, в чем моя ошибка?

Нравится

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

Проблема в том, что список вопросов формируется динамически на этапе подготовки окна опроса. При вызове окна через бизнес-процесс вопросы не формируются.
Альтернативный вариант -- делать вызов опроса не через элемент "Открытие окна", а через элемент "Скрипт", на обработчике события OnExecute которого прописать код вызова окна опроса по аналогии с функцией AddData скрипта wnd_ContactInSurveyGridAreaScript.
Сама подготовка вопросов происходит на обработчике подготовки окна опроса wnd_InterviewEditOnPrepare (скрипт wnd_InterviewEditScript), из которого вызывается функция заполнения вопросов InitializeInterviewEditWindow скрипта scr_SurveyUtils.

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

Есть замечательное поле "Связи" в Контактах. Но его нет в Контрагентах. Как его создать? Изрыл весь форум, ничего не нашел. Пробовал смотреть аналог в Контактах, но мне этого ничего не дало. Нид хелп!

Спасибо

Нравится

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

Добрый день, Тахир!
Уточните, о чем именно идет речь? Возможно, о полях группы "Средства связи" карточки контакта, или о детали "Взаимосвязи"? И о каком продукте и версии идет речь?

Дмитрий,

есть поле tbl_Contact.Svyazi "Связи"
Оно объединяет поля средств связи и собирает все данные в одном поле, используется для удобного поиска средств связи.
Его можно найти в быстром фильтре в Контактах и в других местах.

Так вот, хотелось бы реализовать аналогичное в tbl_Account.

Terrasoft Real Estate 3.2.0.60

C уважением,
Тахир

______________
www.abs.com.kz
Агентство недвижимости АБС Royal Estate

Тахир, не нашла в базовой версии системы ни в решении Terrasoft RealEstate 3.2.0, ни в Terrasoft Realty 3.2.0 такого поля.
Возможно, речь идет о поле Digits (Цифры номера)в таблице tbl_ContactCommunication.
В скрипте scr_Utils реализована функция, которая отбирает только цифры в номере:

function DigitsFromString(Number) {
	var ValidChars = "0123456789";
	var Result = '';
	var Char;
 
	if (Number.length != 0) {
		for (var i = 0; i < Number.length; i++) {
			Char = Number.charAt(i);
			if (ValidChars.indexOf(Char) != -1) {
				Result += Char;
			}
		}
	}
	return Result;
}

Функция вызывается на событие OnDatasetBeforePost для dlData карточки средства связи scr_CommunicationEdit.

function dlDataOnDatasetBeforePost(Dataset, DoPost) {
	Dataset.Values('Digits') = DigitsFromString(Dataset.Values('Number'));
}

Если у Вас все-таки поле "Связи", то, возможно, этот функционал был реализован в виде проектного решения?

Может и в качестве проектного, но почему оно не идет в стандартной сборке. Очень удобная штука. И кому теперь мне задавать этот вопрос?

Pics.kz Pics.kz

______________
www.abs.com.kz
Агентство недвижимости АБС Royal Estate

"Биккинин Т.Р." написал:И кому теперь мне задавать этот вопрос?

Тому, кто внедрял у Вас проект. Наверное, партнер... или Вы покупали коробку?

--
www.it-sfera.com.ua

да, Лабитек, если я не ошибаюсь.
Тем не менее я очень удивлен, что это не идет в стандартной сборке.

Спасибо
______________
www.abs.com.kz
Агентство недвижимости АБС Royal Estate

Добрый день, Тахир,
Поднял дампы Real Estate версий 3.1, 3.2 и 3.3... Не нашел ничего похожего, да и судя по скриншотам, это не наш стиль именования полей в таблицах, и разделы мы не переименовывали в "Физлица" и "Юрлица" :)
Уточните, пожалуйста, какую именно версию и у кого вы приобретали, делался ли апгрейд на другую версию, проводились ли доработки конфигурации? Можно на почту или в личку.
--------------------------------------------
Лабитек
Центр разработки приложений

А может это Terrasoft Realty, а не Real Estate?

--
www.it-sfera.com.ua

По скриншотам больше похоже на Terrasoft Realty 3.2.0, решение компании "Альфа-Информ", но в базовой версии такого поля точно нет.

"Биккинин Т.Р." написал:Оно объединяет поля средств связи и собирает все данные в одном поле, используется для удобного поиска средств связи.

в Контрагентах можно сделать по аналогии - делаем поле в таблице, в запросе, в датасете. А его заполнение наверное триггером проще сделать, по факту создания или изменения записи в tbl_Account собирать все значения полей Средство связи1, Средство связи2 и т.д... Либо скриптом на событии AfterPost датасета Контрагенты обновлять каждый раз значение этого поля, если я правильно понял как оно работает - содержит в себе ВСЕ что есть в средствах связи

"Виталий Ковалишин aka samael" написал:А может это Terrasoft Realty, а не Real Estate?

опа, новость для меня. а есть разница?

"Александр Кудряшов" написал:в Контрагентах можно сделать по аналогии - делаем поле в таблице, в запросе, в датасете. А его заполнение наверное триггером проще сделать, по факту создания или изменения записи в tbl_Account собирать все значения полей Средство связи1, Средство связи2 и т.д... Либо скриптом на событии AfterPost датасета Контрагенты обновлять каждый раз значение этого поля, если я правильно понял как оно работает - содержит в себе ВСЕ что есть в средствах связи

Александр, вы меня верно поняли. Поле то создано и скрипт на Afterpost тоже есть, но оно не собирает данные из Средств связи.
______________
www.abs.com.kz
Агентство недвижимости АБС Royal Estate

"Биккинин Т.Р." написал:опа, новость для меня. а есть разница?

Terrasoft Realty - это разработка Альфа-Информ
Real Estate - это разработка Лабитек

--
www.it-sfera.com.ua

хм.. будем знать. спасибо
______________
www.abs.com.kz
Агентство недвижимости АБС Royal Estate

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