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

Нравится

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

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

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

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

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

Нравится

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

Доброго дня!

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

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

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

З повагою, 
Антон 
 

Anton Starikov Дякую

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

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

Нравится

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

Добрый день,
Всё различие между сохранением новой записи и уже имеющейся в методе 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 портальним користувачам. 

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

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

Error while executing element Name = ScriptVwWorkspaceObjectsUpdated UId = 71be0708-dede-4ab1-b9d4-0df319348242 SchemaElementUId = 2bdc98ab-bf56-48ee-9ec3-e71d569a42eb	
"System.InvalidOperationException: Sequence contains more than one matching element
   at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at Terrasoft.Core.ClientContentGeneration.SchemaInfoComparer.<>c__DisplayClass15_0.<Compare>b__0(SchemaInfo newSchemaPublishInfo)
   at System.Threading.Tasks.Parallel.<>c__DisplayClass17_0`1.<ForWorker>b__1()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object <p0>)"

 

Нравится

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

Добрый день!

 

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

 

В случае если у вас возникнут трудности или же дополнительные проблемы, пожалуйста, создайте запрос обратившись на почту support@creatio.com.

Kyrylo Atamanenko,

Спасибо за комментарий.

Я проверил записи в таблице SysSchema, группировал по колонкам 

"ManagerName", "Caption" и "ManagerName", "Name", там правда есть дубли, но они присутствуют из-за замещения объектов и страниц. В моём пакете тоже присутствуют дубли при группировке по колонкам "ManagerName", "Caption", но при группировке по колонкам"ManagerName", "Name" дублей нету.  На данный момент не уверен что проблема связана с дублями в колонке "Caption", ибо в базовых пакетах такая же ситуация. 

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

Может быть я что-то упустил. Куда я могу ещё обратить внимание?

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