Доброго времени суток, коллеги подскажите пожалуйста есть ошибка которая часто повторяется когда переходишь по преднастроенным старницам нажимаешь на кнопку для перехода к следующей странице в строке браузера урл меняется на следующую страницу при этом переход не осуществляется страница остается текущая в консоли появляется следующая ошибка Cannot set property 'showNextPrcEl' of undefined  (скрине 1). Сделал замещение в модуле CustomProcessPageV2Utilities что бы посмотреть что приходит в объекты currentState и newState в методе completeExecution оба не пустые (скрин 2). в БП процесс движется к следующему элементу если есть или если он конечный то завершается без ошибок. Подскажите  что может быть и как поправить заранее благодарен

Нравится

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

Дмитрий, тут Вы писали, что это ещё связано с элементом привязки процесса к объекту. Или « Cannot set property 'showNextPrcEl' of undefined» само по себе, а остановки при попытке привязки сами?

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

Добрый день,

Есть несколько преднастроенных страниц (использую в БП). Необходимо настроить валидацию определенных полей (напр. только цифры).
Пробовала настроить по аналогии с валидацией на странице раздела, но на преднастроенной странице валидация не срабатывает.

Явно, я что-то упускаю срецифическое для преднастроенных страниц? Просьб направить в правильном направлении.

Пример метода, которй я использую:

            setValidationConfig: function() {
               this.addColumnValidator("CrpINN", this.innValidator);
            },
                innValidator: function(value) {
                var invalidMessage = "";
                var isValid = true;
                var number = value || this.get("CrpINN");
                isValid = (Ext.isEmpty(number) ||
                    new RegExp("^[0-9]{8}$").test(number));
                if (!isValid) {
                    invalidMessage = this.get("Resources.Strings.InvalidINNCodeFormat");
                }
                return {
                    invalidMessage: invalidMessage
                };
            },
      

Заранее спасибо.

 

 

Нравится

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

судя по всему проблема в том, что преднастроенная страница и обычная страница раздела унаследованы от разных родителей. Следовательно в зависимости преднастроенной нужно добавить тот модуль, в котором реализован функционал валидации. Беглым поиском нашел BaseSchemaViewModel, однако не уверен на 100%.

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

Вадим Косарев,

 Спасибо! Я обязательно разберусь с зависимостями.

 

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

Ксения, если там должны быть только цифры, может вместо валидации получится с добавлением маски телефонного номера? Пример описан тут.

Все оказалось гораздо проще  - для преднастроенной страницы необходимо указать поле+сослаться на основную страницу. Все заработало.

 

setValidationConfig: function() {
             this.addColumnValidator("CrpPortalProductRequest1.CrpINN", this.innValidator);
            },
                innValidator: function(value) {
                
                var invalidMessage = "";
                var isValid = true;
                var number = value || this.get("CrpPortalProductRequest1.CrpINN");
            
                isValid = (Ext.isEmpty(number) ||
                    new RegExp("^[0-9]{8}$").test(number));
                if (!isValid) {
                    invalidMessage = this.get("Resources.Strings.InvalidINNCodeFormat");
                }
                return {
                    invalidMessage: invalidMessage
                };
            },

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

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

Мой вопрос заключается в том, каким образом можно настроить отображение реестра записей в детали, так как в базе у меня такой детали нет.
Меня интересует, возможно, у кого-то был опыт решения таких задач.
То есть можно ли создать 'виртуальную' деталь, в которой данные не будут храниться ни в одной таблице, так как они нужны только для работы отдельного экземпляра процесса?
Или же нужно создавать специальную деталь, таблица которой физически будет существовать в базе, но тогда к какой основной таблице ее привязывать?

Нравится

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

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

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

Создана преднастроенная страница.

При открытии два обязательных поля

Проблема. Обязательность первого поля не работает. Система позволяет сохранить данные с незаполненным полемИзображение удалено.

В конфигурации страницы добавлен признак обязательности

Так же на атрибут повешен признак isRequired: true

Однако это не дает ровным счетом ничего

Так же, ни последующая валидация при сохранении, ни правила не помогли

Если кто сталкивался с подобным, подскажите как выходили из ситуации

Спасибо

 

Нравится

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

Попробуйте для установки обязательности поля использовать бизнес-правила. 

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

Алла Савельева, Пробовал бизнес-правила. Не помогло.
Спасибо

Дубов Андрей Владимирович,

Приведите пример Вашего кода

Без изучения кода карточки сложно сказать.

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

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

Коллеги, здравствуйте. Возникла проблема - веб-сервис возвращает значения, однако мы не можем их увидеть на преднастроенной странице в bpmonline - в соответствующих полях отображаются 0 (если числовое) и пустота (если строковое). Другие веб-сервисы отображаются корректно, проблема только с одним конкретным. При этом, сам веб-сервис работает корректно, т.е. формирует и отправляет нужный запрос на bpmonline, а дальше мы не можем его отобразить. Используем простой бизнес-процесс, в котором элементы веб-сервис и преднастроенная страница. Будем признательны за помощь

Нравится

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

Добрый день,

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

Добрый день,

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

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

1. Фильтрация лукапа такое же как и в обычной карточке?

Вот такой код:

"UsrLookup2": {
                lookupListConfig: {
                    filter: function() {
                        var filters = new Terrasoft.createFilterGroup();
                        filters.name = "CategoryFilter";
                        filters.logicalOperation = Terrasoft.core.enums.LogicalOperatorType.AND;
                        filters.isEnabled = true;
                        filters.addItem(Terrasoft.createColumnFilterWithParameter(
                            Terrasoft.ComparisonType.NOT_EQUAL, "МоеПоле", ""));
                        //filters.addItem(Terrasoft.createIsNotNullFilter("МоеПоле"));
                        return filters;
                    }
                }
            }

Не срабатывает - в окне выбора остаются записи которые должны были пропасть, кроме того в запросе к БД - нет такого фильтра

2. Можно ли по нажатии на кнопку прорисовать новое поле? нажимать можно неограниченное кол-во раз, создать много полей, задизейблить и потом откривать - не вариант

Нравится

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

Радчук Виталий Владимирович,

По фильтрации лукапа: строчку 

filters.logicalOperation = Terrasoft.core.enums.LogicalOperatorType.AND;
замените на

filters.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;

И уберите вот эту строчку 

filters.isEnabled = true;

И ещё почитайте этот пост.

По второму вопросу смотрите статью на академии.

По фильтрации попробуйте вместо Вашего кода написать таким образом:

"UsrLookup2": {
                lookupListConfig: {
                    filter: function() {
                        var filters = new Terrasoft.createFilterGroup();
                        filters.logicalOperation = Terrasoft.core.enums.LogicalOperatorType.AND;
                        filters.isEnabled = true;
                        filters.add("CategoryFilter", Terrasoft.createColumnFilterWithParameter(
                            Terrasoft.ComparisonType.NOT_EQUAL, "МоеПоле", ""));
                        //filters.addItem(Terrasoft.createIsNotNullFilter("МоеПоле"));
                        return filters;
                    }
                }
            }

 

По второму вопросу посмотрите обсуждение здесь.

Алла Савельева,

По первому - не помогло. Еще заметил, что не могу запустить серверный код! ошибка 500, вот код: 

	var config1 = {
					serviceName: "ShowReport1CService",
					methodName: "CreateReport3",
					callback: function(response) {
						var result = response.CreateReport3Result;
					},
					data: {
					},
					scope: this,
					timeout: 1000000
				};
				ServiceHelper.callService(config1);

и на стороне сервера

[OperationContract]
		[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
		ResponseFormat = WebMessageFormat.Json)]
		public string CreateReport3()
		{
			return "asd";

В чем моя ошибка?

Радчук Виталий Владимирович,

По фильтрации лукапа: строчку 

filters.logicalOperation = Terrasoft.core.enums.LogicalOperatorType.AND;
замените на

filters.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;

И уберите вот эту строчку 

filters.isEnabled = true;

И ещё почитайте этот пост.

По второму вопросу смотрите статью на академии.

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

Добрый день!

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

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

Нравится

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

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

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

Пробовали удалить из процесса и добавить заново элемент с данной преднастроенной страницей?

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

Коллеги, подскажите, как в преднастроенной странице, которая в бизнес-процессах сделать зависимость полей?

Есть два поля "Страны" и "Города" оба поля лукапы. Как при выборе Страны фильтровать значения в поле "Города"?

 

Нравится

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

Евгений, посмотрите с 24 минуты https://academy.terrasoft.ru/webinar/qa-sessiya-po-funkcionalnosti-plat…

Евгений, здравствуйте!

Настройка бизнес-правил для преднастроенных страниц реализована в версии 7.12.0. Вы можете настроить бизнес - правила для добавления фильтрации по аналогии с настройкой в мастере раздела.

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

Показать все комментарии
Есть атрибут: 

"Amount": {
    dataValueType: Terrasoft.DataValueType.FLOAT,
    type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
}

Поле: 

{
    "operation": "insert",
    "name": "Amount",
    "values": {
        "layout": {
            "column": 0,
            "row": 2,
            "colSpan": 12
        },
        "bindTo": "Amount"
    },
    "parentName": "FinApplicationContent",
    "propertyName": "items"
}

Находятся на преднастроенной странице, не привязанной к какому-либо объекту. Страница показывается пользователю в ходе БП. Поля виртуальные,т.е. по результату ввода введенные данные просто попадают в процесс, без записи в какой-либо объект. 

Проблема: нельзя ввести с клавиатуры никакие символы, только ctrl+v.

Примечание: Если установить contentType: Terrasoft.ContentType.TEXT - то можно ввести символы. На странице есть одноименный параметр типа "Дробное число"

Как решить проблему с вводом в данное поле? Что не так?

 

Нравится

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

скорее всего вы обнаружили "дефект", надо бы отписать о нем в ТП
Тем временем, в вашем случае,:
1) попробуйте использовать

Terrasoft.DataValueType.MONEY

в сути то же самое FLOAT (может прокатить laugh)
2) попробуйте не задавать у атрибута явно тип

Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN

 

PS: Если что-то из этого Вам поможет, отпишитесь пожалуйста что именно.

 

 

Первое помогло! Огромная вам благодарность! Все еще стоит писать об этом в ТП?

Рад что удалось помочь.
Лучше написать с примером и точной версией приложения и Вашей версии поставки, скорее всего вы выявили "дефект" логики конкретной типовой конфигурации или самой платформы и неизвестно к каким еще "проблемам" это дефект может быть причастен.

"Amount": {
    dataValueType: Terrasoft.DataValueType.FLOAT,
    type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
    precision: 2,
    size: 18
}

говорим спасибо вот этому куску в генераторе

if (column) {
	Ext.apply(floatEdit, {
		decimalPrecision: column.precision
	});
}

В очередной раз ломаем ноги о код террасофта и его "универсальность" и идем дальше

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

Добрый вечер.
Каким образом передавать параметры из БП в преднастроенную страницу? Требуется передавать, как значение справочника, так и какие-то текстовые/логические данные.
Видео, на которое постоянно ссылаются (http://www.community.terrasoft.ru/img/video/lms/28/story.html) по-моему уже не является актуальным. По-крайней мере я, повторив все шаги, результата не получил. Есть ли ещё материал, тема на форуме (не нашёл) с более подробным рассмотрением данного вопроса?

Нравится

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

Добрый день!

В структуре преднастроенной страницы определяете параметры в ветке "Параметры", потом в элементе бп присваиваете им значения из парамеров процесса.

Также рекомендую ознакомиться с следующей темой http://www.community.terrasoft.ru/forum/topic/25237

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