Здравствуйте, пожалуйста помогите как можно отфильтровать схему Employee.

Надо вывести все Сотрудники которые являются Supervisor - ом?

Я пробовал с помощью filtrGroup но к сожалению у меня не получился. 

Нравится

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

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

 

Рекомендуем вам ознакомиться с этой статьей на Академии, в которой должны быть инструкции по вашему запросу.

Если данная статья не предоставит нужного ответа, просьба более детально описать, что именно и где вы пытаетесь отфильтровать (желательно со скриншотами), чтобы мы смогли предоставить наиболее подходящее решение.

Mira Dmitruk,

 

На карточке у меня есть два справочника Подразделение (SysAdminUnit) и Сотрудник (Employee). Когда из Подразделение выбираем значение например Administrator, справочник Сотрудник надо отфильтровать и отображалась все сотрудники которые являются Администратором.

 

В SQL Я сделал это:

 

select * from "Employee" c join "SysAdminUnit" s on

c."ContactId" = s."ContactId" join "SysAdminUnitInRole" sys on

sys."SysAdminUnitRoleId" = '4b513fa7-40e9-40e7-8fbb-085f90ea2423' and

sys."SysAdminUnitId" = s."Id"

 

Теперь надо всё это реализовать через атрибут и Terrasoft.filtrGroup но к сожалению не получился.

 

 

 

На карточке у меня есть два справочника Подразделение (SysAdminUnit) и Сотрудник (Employee). Когда из Подразделение выбираем значение например Administrator, справочник Сотрудник надо отфильтровать и отображалась все сотрудники которые являются Администратором.

 

В SQL Я сделал это:

 

select * from "Employee" c join "SysAdminUnit" s on

c."ContactId" = s."ContactId" join "SysAdminUnitInRole" sys on

sys."SysAdminUnitRoleId" = '4b513fa7-40e9-40e7-8fbb-085f90ea2423' and

sys."SysAdminUnitId" = s."Id"

 

Теперь надо всё это реализовать через атрибут и Terrasoft.filtrGroup но к сожалению не получился.

Добрый день.

 

Я реализовывала подобную функциональность следующим образом (в моем примере фильтруются данные из таблицы Contact):

attributes: {
	"Responsible": {
		"dataValueType": Terrasoft.DataValueType.LOOKUP,
		"lookupListConfig": {
			"filter": function() {
				return this.responsibleManagersFilters();
			}
		}
	}
}
methods: {
	responsibleManagersFilters: function() {
		var filterGroup1 = new Terrasoft.createFilterGroup();
		filterGroup1.add("Account", Terrasoft.createColumnFilterWithParameter(
			Terrasoft.ComparisonType.EQUAL,
			"Account",
			EWBConfigurationConstants.Accounts.AccountId.EastWestBiopharma));
		var filterGroup2 = new Terrasoft.createFilterGroup();
		filterGroup2.logicalOperation = Terrasoft.LogicalOperatorType.OR;
		filterGroup2.add("EmployeeDatabaseAndPathologist", Terrasoft.createColumnInFilterWithParameters(
			"Department",
			[EWBConfigurationConstants.Contacts.Department.Database,
			 EWBConfigurationConstants.Contacts.Department.Pathologists]));
		filterGroup2.add("ExistsInSysRole", Terrasoft.createColumnFilterWithParameter(
			Terrasoft.ComparisonType.EQUAL,
			"[SysAdminUnit:Contact].[SysUserInRole:SysUser].SysRole",
			EWBConfigurationConstants.Users.SysRole.ResponsibleForPatientInfo));
		filterGroup1.add(filterGroup2);
		return filterGroup1;
	}
}	

 

Alla Savelieva,

спасибо Вам, но Я не понял свойство

EWBConfigurationConstants. Откуда взяли?

Creatio,

 

В данном случае EWBConfigurationConstants не имеет значения, это всего лишь способ получить нужные данные.

В вашем случае вы можете использовать всё что нужно, от this.get("ColumnValue") до хардкода нужного значение "value"

Creatio,

Дима Вам выше уже ответил.

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

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

Доброго дня, я вивчаю демо версію CRM і читаючи документацію знайшов PDF документ про валідацію полів ( файл прикріплю). В документі є розділ "Правила ввода" Де можна знайти даний розділ, бо цікавить тема валідації полів наприклад, як зробити текстове поле в якому можна вводити тільки букви, або наприклад як зробити числове поле де можна вводити цифри тільки заданої довжини і нприклад тільки додатні. Підскажіть як вирішити дані питання. 

Нравится

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

Або може хтось розповість як скористатися 

crt.MinLength

Добрий день, Олександре!

 

Файл що ви прикріпили стосується налаштування додатка маркетплейс, що вже не підтримується. 

 

Нижче ви можете знайти статті з Creatio Academy які розглядають валідацію полів з різними варіантами:

https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platfor…

https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platfor…

https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platfor…

https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platfor…

 

Щодо crt.MinLength, ви можете детальніше прочитати тут:

https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platfor…

 

Гарного дня!

Дякую за допомогу. 

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

Доброго дня, вивчаю демо версію СРМ і в мене з'явилося запитання. Як додати колонку в контактах, щоб можна було відобразити інші телефони(мається на увазі саме ті телефони які були створені додатково в засобах зв'язку)

 

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

Нравится

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

Доброго дня!



Ви можете додати на сторінку контакта нове поле телефону і записувати ще один телефон туди, тоді це поле ви зможете вивести у списку. 





Однак, на жаль, вивести в список телефони, що додані через опції комунікації як "Інший телефон" не можна. 



Як обхідне рішення, ви можете створити бізнес процес, що буде копіювати автоматично значення з опцій комуцікації в окреме поле на сторінці контакта. 



З повагою, 

Антон 

 

Anton Starikov Дякую

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

Добрый день!

Нахожусь в разделе, нажимаю на кнопку "Добавить" открывается страница редактирования. Заполняю колонки, после всего заполненого нажимаю "Сохранить" запись сохраняется и сразу закрывается. Меня перебрасывает в раздел с записями. После я открываю запись и вношу изменения на созданной записи. После нажатия на кнопку "Сохранить" страница уже сама не закрывается, а нужно дополнительно нажимать кнопку "Закрить". Как можно настроить сохранение и закрытие записи как это работает с новой записью. Что б после редактирования существующей записи и нажатия на кнопку "Сохранить" меня переводило в раздел с записями и не приходилось дополнительно нажимать кнопку "Закрить"

Нравится

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

Добрый день,

Всё различие между сохранением новой записи и уже имеющейся в методе onProcessCardSaved схемы BasePageV2.

Для новой записи вызывается _closePage, что и закрывает страницу.

Чтобы уже имеющаяся запись также зарывалась, необходимо на странице [Object]PageV2 переписать метод onProcessCardSaved следующим образом:

onProcessCardSaved: function(needProcessModeToBackHistoryState) {
				if (!this.destroyed) {
					this._closePage(true);
				}
			},

 

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

Доброго времени суток! Возник затык с казалось бы простой задачей.

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

Вопрос: возможно ли реализовать обновление страницы после завершения активности? Используя для этого только клиентскую часть?

Пробовала прикрутить методы this.reloadEntity(), но проблема в том, что не удается "поймать" момент завершения активности. Подскажите, пожалуйста, возможно ли в странице редактирования получить значение состояния активности?

Способ с ActivityEventListener не подходит. 

 

Нравится

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

Добрый день,

 

Я тут вижу два варианта:

 

1) На событии после сохранения активности в DCM

(доступно из расширеных настроек активности

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

 

2) При отработке метода save из ActivityMiniPage реализовать отправку sandbox сообщения в модуль нужной страницы редактирования и обновлять страницу по получению этого сообщения.

Oscar Dylan,

спасибо за ответ. Выбрала второй способ через сообщения. Реализовала отправку сообщения , но при попытке завершить активность нажатием на кнопку "сохранить" выпадает ошибка: message name_message is not define in MiniPageModule (ViewModule_MiniPageListener_MiniPage_ActivityMiniPage) module.

Не понимаю где ещё  нужно объявить это сообщение, кроме как в activityMiniPage и нужной страницы редактирования ?

Если можно на смену стадии кейса, то можно посылать сообщение из бизнес-процесса, который стартует по изменению стадии заказа

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

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

Схема: GridUtilitiesV2.js

Метод: getEditableGridRowViewModelClassName

        getEditableGridRowViewModelClassName: function(config) {

            if (!config) {

                return null;

            }

            let className = "Terrasoft.BaseConfigurationGridRowViewModel";

            const entitySchemaName = this.getGridEntitySchemaName();

            const entityStructure = Terrasoft.configuration.EntityStructure[entitySchemaName];

            const rawData = config.rawData;

            const typeColumn = this.getTypeColumn(entitySchemaName);

            let schemaName = null;

            let pages = [];

            if (entityStructure) {

                pages = entityStructure.pages;

            } else {

                pages.push({cardSchema: this.getDefaultConfigurationGridItemSchemaName()});

            }

            this.Terrasoft.each(pages, function(page) {

                if (typeColumn) {

                    const path = typeColumn.path;

                    if (rawData.hasOwnProperty(path)) {

                        const typeColumnValue = rawData[path].value;

                        if (page.UId === typeColumnValue) {

                            schemaName = page.cardSchema;

                        }

                    }

                } else {

                    schemaName = page.cardSchema;

                }

            }, this);

            if (schemaName) {

                className = "Terrasoft." + schemaName + "ConfigurationGridRow" + entitySchemaName + "ViewModel";

            }

            return className;

        },





Вот в этой строке

const entityStructure = Terrasoft.configuration.EntityStructure[entitySchemaName];

мы получаем такой результат:

 

  1. attribute: "ProductCategory"
  2. entitySchemaName: "FinApplication"
  3. entitySchemaUId: "cdda1304-e571-42de-9df7-6dfe528ea7b6"
  4. pages: [{…}]
  5. searchRowSchema: ""



    Свойства attribute быть не должно, но я не знаю как его убрать. Возможно кто-то может объяснить что оно значит и как с ним работать при вызове Terrasoft.configuration.EntityStructure[entitySchemaName];

Нравится

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

Добрый день,

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

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

Добрий день. Намагаюсь змінити значки кастомних розділів у мобільному додатку. 

Відповідно до запиту https://community.creatio.com/questions/Mobilesectionicons 

Знайшов файл MobileImageList



У файлі MobileApplicationManifestPortal пакету Custom в блоці "Modules"  в опис кастомного розділу додав 

Код з прикладу , але значок не змінюється.

Підкажіть, будь ласка, що роблю не так

 

Зразок коду

"IconV2": {
 // Unique image ID. 
"ImageId": "MobileImageListServiceContractModuleImageV2"
 }



Мій код



    "Modules": {

        "UsrAppNewTasks": {

            "Group": "main",

            "Model": "UsrAppNewTasks",

            "Position": 2,

            "isStartPage": false,

            "Title": "UsrAppNewTasksSectionTitle",

             "IconV2": {

              "ImageId": "MobileImageListKnowledgeBaseModuleImageV2"

                       },

            "Hidden": false,

            "screens": {

                "start": {

                    "schemaName": "UsrMobileUsrAppNewTasksGridPageSettingsPortal"

                },

                "edit": {

                    "schemaName": "UsrMobileUsrAppNewTasksRecordPageSettingsPortal"

                }

            }

        },

Нравится

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

Добрий день,

 

IconV2 не спрацює в Freedom UI розділі мобільного додатку. Замість нього треба використовувати iconId в якому вказати Id запису з таблиці SysImage про зображення, яке треба показати як іконку розділу. Приклад:

 

"Modules": {

        "UsrAppNewTasks": {

            "Group": "main",

            "Model": "UsrAppNewTasks",

            "Position": 2,

            "isStartPage": false,

            "Title": "UsrAppNewTasksSectionTitle",

            "iconId": "860C6BCF-2C53-41A4-A4F2-002861F26F91",

            "Hidden": false,

            "screens": {

                "start": {

                    "schemaName": "UsrMobileUsrAppNewTasksGridPageSettingsPortal"

                },

                "edit": {

                    "schemaName": "UsrMobileUsrAppNewTasksRecordPageSettingsPortal"

                }

            }

        },

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

Добрий день. 

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

Приклад. На сторінці (Freedom UI) є дві дати:

Дата завершення проекту

Дата завершення завдання, 

Потрібно налаштувати валідацію поля "Дата завершення завдання", щоб вона не перевищувала дату завершення проетку. 







"usr.UniversalDateValidator": {

        validator: function (config) {

        return function (control) {

            let minValue = new Date(config.minValue);

            let controlDate = new Date(control.value);

            let isDateValid = controlDate >= minValue;

            var result;

            if (isDateValid) {

                result = null;

            } else {

                result = {

                    "usr.UniversalDateValidator": { 

                        message: config.message || "Введена дата не відповідає умовам"

                    }

                };

            }

            return result;

        };

    },

    params: [

        {

            name: "minValue"

        },

        {

            name: "message"

        }

    ],

    async: false

}

Нравится

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

Добрий день,

 

При умові, що дві дати отримано коректно, далі треба використати стандартний підхід до порівняння двох дат в JS (наприклад, як описано ось тут https://www.freecodecamp.org/news/javascript-date-comparison-how-to-com…), а на основі порівняння проставляти isDateValid значення.

Oscar Dylan,

Дякую, не зовісім коректно сформулював питання.  Мене цікавть якраз як коректно отримати другу дату у коді валідатора. Допоможіть, будь ласка. 

Oscar Dylan,

Я пробую отак:

var timeStartValue = control.parent.get("DateTimeAttribute_84s5bhk").value;

але отримую помилку Cannot read properties of undefined (reading 'get') Cannot read properties of undefined (reading 'get)

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

Допоможіть, будь ласка, розібратись з валідаторам.

Прив'язав валідатор до поля типу ДатаЧас у сторінці створення запису. Сторінка відкривається, алідатор працює,  але через частинку коду у блоці viewModelConfigDiff не відкривається дизайнер цієї сторінки (Якщо цю частину закоментувати - відкривається). Використаний код додаю. 



У блоці стоінки viewModelConfigDiff прив'язав валідатор до поля



"DateTimeAttribute_qc2mfzm": {

                        "modelConfig": {

                            "path": "UsrAppNewTasksDS.UsrDateDeadline"

                        },

                        

                        

                        "validators": {

                                   "MyDateValidator": {

                                        "type": "usr.UniversalDateValidator",

                                            "params": {

                                                        "minValue": new Date(new Date().getTime() + (3 * 60 * 60 * 1000)), 

                                                        "message": "Термін виконання завдання не може бути меншим ніж 3 години."

                                                    }

                                                        }

                                            }            

            

                        

                    },





В блоці validators: 



"usr.UniversalDateValidator": {

        validator: function (config) {

        return function (control) {

            let minValue = new Date(config.minValue);

            let controlDate = new Date(control.value);

            let isDateValid = controlDate >= minValue;

            var result;

            if (isDateValid) {

                result = null;

            } else {

                result = {

                    "usr.UniversalDateValidator": { 

                        message: config.message || "Введена дата не відповідає умовам"

                    }

                };

            }

            return result;

        };

    },

    params: [

        {

            name: "minValue"

        },

        {

            name: "message"

        }

    ],

    async: false

}

            

               

Нравится

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

Проблема в "minValue": new Date(new Date().getTime() + (3 * 60 * 60 * 1000)), в параметрах валідатора в атрибуті. Якщо його прописати текстом (наприклад "2023-12-10"), то дизайнер відкривається. Перенесіть, будь ласка, цю перевірку в середину логіки валідатора (там де if (isDateValid) {), а не передавайте в config.

Добрий день,

 

Яка помилка виникає при спробі відкрити дизайнер (в консолі)? Ви робили відладку помилки?

Проблема в "minValue": new Date(new Date().getTime() + (3 * 60 * 60 * 1000)), в параметрах валідатора в атрибуті. Якщо його прописати текстом (наприклад "2023-12-10"), то дизайнер відкривається. Перенесіть, будь ласка, цю перевірку в середину логіки валідатора (там де if (isDateValid) {), а не передавайте в config.

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

пробували налаштували відправлення пуш-сповіщень на телефон про отримання нового звернення на відповідального, але вони не приходять хоча в журналі БП відображає, що БП відпрацював без помилок



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

Використовували інструкцію з сайту: 

https://academy.terrasoft.ua/docs/user/biznes_processy/primery_nastrojk…



Можливо хтось зіштовхувався з даною проблемою?

 

Нравится

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

Добрий день,

 

Просимо вас звернутися напряму у нашу тех підтримку, написавши на пошту support@creatio.com, оскільки нам необіхдно детально проаналізувати вашу проблему з доступом до вашого веб сайту для того, щоб зрозуміти у чому полягає проблема такої поведінки. 

 

Дякуємо.

В мене схожа складність з портальними користувачами.  Якщо дію, що запускає процес виконує портальний користувач - сповіщення не приходить, хоча процес відпрацьовує (В журналі процесів успішно завершений). В моїй ситуації допомогло надати права на читання об'кта SysAdminUnit портальним користувачам. 

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