Добрый день!
BPM Online 7.3.0.745

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

GET http://softex-iis:8896/0/configuration/entityschema/d168b8ad3c426123d2ca... 500 (Internal Server Error) require.js:1834
Uncaught Error: Script error

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

Exception Message: Ссылка на объект не указывает на экземпляр объекта.
Exception Type: System.NullReferenceException
Exception Source: Terrasoft.Core

Подробности во вложенном файле

error.txt

Нравится

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

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу

Добрый день, Александр!
Не удалось воспроизвести ошибку. Прошу уточнить, объект называется "prfService"?
Если да, то каким образом Вы создали объект без приставки "Usr"?
Также прошу выгрузить и предоставить созданный объект для анализа.

Здравствуйте, объект пользовательский.
Приставки Usr нет, т.к. она не выставлена в системных настройках.

Проблема уже была решена.
Во вложении 2 файла.
prfService_withError - объект с ошибкой(неверные данные были у полей MarginPercentage,Cost),
prfService - объект с решенной проблемой

Условия возникновения проблемы:
Создается числовое поле,
выбираю значение по умолчанию=>Устаноновить константу (без входа в поле редактирования)

Решение следующее.
в метаданных у данного объекта для проблемного поля меняем значения следующим образом
"E12":{"FB1":1}
на
"E12":{"FB1":1,"FB2":"0"}

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

Обязательно ли для поля дробного типа указывать константу в формате "0,00"?

Здравствуйте, Александр!
Передам информацию в департамент разработки для исправления в следующих версиях.
Для поля дробного типа можно просто ввести "0", и значение автоматически приведется к виду "0,00".

Добрый день, Александр!
Ошибка устранена. Для получения сборки с исправлением (7.3.0.2665), пожалуйста, обратитесь в тех. поддержку посредством e-mail.
Спасибо!

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

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

Нравится

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

Если у вас поле не предполагает наличие пустой строки, на OnPrepare можно поставить:
if (dlData.Dataset('Country') == null) { //Пустое поле, при создании, оно естественно пустое
dlData.Dataset('Country') = "Беларусь";
}

На OnPrepare окна редактирования контрагента? Если да, то не получается.

В сервисе scr_AccountEdit:

в функцию wnd_AccountEditOnPrepare добавьте

var Dataset = dlData.Dataset;
if (Dataset.State == dstInsert){
Dataset.Values('CountryID') = '{8DE1DE57-C698-4155-B191-38A36F4A7C8D}';
}

'{8DE1DE57-C698-4155-B191-38A36F4A7C8D}' - идентификатор страны

"Sergey Karpenko" написал:

В сервисе scr_AccountEdit:

в функцию wnd_AccountEditOnPrepare добавьте

var Dataset = dlData.Dataset;

if (Dataset.State == dstInsert){

Dataset.Values('CountryID') = '{8DE1DE57-C698-4155-B191-38A36F4A7C8D}';

}

'{8DE1DE57-C698-4155-B191-38A36F4A7C8D}' - идентификатор страны


Попробовал. Теперь, конечно, по умолчанию стоит действительно Беларусь, но при попытке выбрать другую страну из списка стран список стран вообще пуст, кроме Беларуси. При попытке добавить новую страну террасофт ведет себя неадекватно.

И так, давайте последовательно, конкретно по Вашему примеру (выбираем Беларусь)

1) заходим в sq_Country

2) определяем необходимый ID страны

3) переходим в сервис scr_AccountEdit:
в функцию wnd_AccountEditOnPrepare
вносим изменения

if (dlData.Dataset.State == dstInsert){ 
	if (IsEmptyValue(dlData.Dataset.Values('CountryID'))) {
		edtCountry.UnprepareDropDownList();
	}
	dlData.Dataset.Values('CountryID') = '{E66E4C45-6AC0-4FCD-BD15-14C4642B70E5}';
}

наслаждаемся результатом!
Приятной работы с Террасофт!

"Sergey Karpenko" написал:

И так, давайте последовательно, конкретно по Вашему примеру (выбираем Беларусь)

1) заходим в sq_Country

2) определяем необходимый ID страны

3) переходим в сервис scr_AccountEdit:

в функцию wnd_AccountEditOnPrepare

вносим изменения

if (dlData.Dataset.State == dstInsert){

        if (IsEmptyValue(dlData.Dataset.Values('CountryID'))) {

                edtCountry.UnprepareDropDownList();

        }

        dlData.Dataset.Values('CountryID') = '{E66E4C45-6AC0-4FCD-BD15-14C4642B70E5}';

}

наслаждаемся результатом!

Приятной работы с Террасофт!


А теперь после Вашего кода попробуйте войти в клиент и заполнить карточку контрагента, указав другую страну, чем та, что стоит по умолчанию. У меня почему-то список других стран после сего кода пропал.

Алексей!
при выборе страны, подставляется и территория, по ней идет фильтр.

Уберите территорию, все будет работать.

Все. Спасибо всем большое. Разобрался.

Поле территория в моем окне редактирования скрыто. Соответственно сбросить значение фильтра мне из окна редактирования нет возможности. Как можно этот фильтр обойти?

приведите функцию function ProcessAddressFieldChanged(DataField) в сервисе scr_AddressUtils

к такому виду :

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

Здравствуйте! Прошу помощи. Я новичок в CRM и у меня возникла проблема в создании функционала. Дело вот в чем: Есть стандартная карточка редактирования "Задачи". Я изменил её, сделав некоторые поля не доступными в зависимости от типа задачи, вот функция:

function SetTaskTypePrepare() {
var Account = Self.ComponentsByName('edtAccount');
var Contact = Self.ComponentsByName('edtContact');
var Opportunity = Self.ComponentsByName('edtOpportunity');
var Invoice = Self.ComponentsByName('edtInvoice');
var Document = Self.ComponentsByName('edtDocument');
var Contract = Self.ComponentsByName('edtContract');
var Report = Self.ComponentsByName('frmReport');
var PercentDue = Self.ComponentsByName('edtPercentDue');
var ActualStartDate = Self.ComponentsByName('edtActualStartDate');
var ActualFinishDate = Self.ComponentsByName('edtActualFinishDate');
var ActualDurationStr = Self.ComponentsByName('edtActualDurationStr');
var FrameGroup9 = Self.ComponentsByName('FrameGroup9');
var Author = Self.ComponentsByName('edtAuthor');
var Result = Self.ComponentsByName('edtResult');
var DetailedResult = Self.ComponentsByName('mmDetailedResult');
var StatusID1 = '{F598ECDB-4EEF-4FA8-9E69-A36B053501E5}';
var TypeID = '{CED7CC70-81CB-4AB1-A9F2-521998B14723}';
var TypeIDMeeting = '{63FB4E89-EE75-404F-8352-1E712AC909F6}';
if ((dlData.Dataset.Values('TypeID') == TypeID) || (dlData.Dataset.Values('TypeID') == TypeIDMeeting)) {
Account.IsEnabled = false;
Contact.IsEnabled = false;
Opportunity.IsEnabled = false;
Invoice.IsEnabled = false;
Document.IsEnabled = false;
Contract.IsEnabled = false;
PercentDue.IsEnabled = false;
ActualStartDate.IsEnabled = false;
ActualFinishDate.IsEnabled = false;
ActualDurationStr.IsEnabled = false;
FrameGroup9.IsEnabled = false;
Author.IsEnabled = false;
Report.IsEnabled = true;
Result.IsEnabled = true;
DetailedResult.IsEnabled = true;
} else {
Account.IsEnabled = true;
Contact.IsEnabled = true;
Opportunity.IsEnabled = true;
Invoice.IsEnabled = true;
Document.IsEnabled = true;
Contract.IsEnabled = true;
PercentDue.IsEnabled = true;
ActualStartDate.IsEnabled = true;
ActualFinishDate.IsEnabled = true;
ActualDurationStr.IsEnabled = true;
FrameGroup9.IsEnabled = true;
Author.IsEnabled = true;
Report.IsEnabled = false;
if (dlData.Dataset.Values('StatusID') == StatusID1) {
Result.IsEnabled = true;
DetailedResult.IsEnabled = true;
} else {
Result.IsEnabled = false;
DetailedResult.IsEnabled = false;
}
}
}

Эта функция вызывается в событии OnPrepare окна редактирования. Работает все отлично, если вызывать окно редактирования стандартной кнопкой "Добавить" под гридом. Но стоит задача, сделать вызов этого окна редактирования из другого раздела (Квартиры - новый раздел). Вот, что я сделал:

function CreateTaskCall() {
var EditWindowUSI = 'wnd_TaskEdit';
var TypeID = '{CED7CC70-81CB-4AB1-A9F2-521998B14723}';
var Attributes = GetNewDictionary();
Attributes.Add('NotifyObject', Self);
var DefaultValues = GetNewDictionary();
var PriorityID = '{F6E5132C-BFC4-48E4-832B-0A60BBF6FC57}';
var StatusID = '{F598ECDB-4EEF-4FA8-9E69-A36B053501E5}';
var DwellingID = '{1E1C4BCB-6730-492A-BB38-4E5A4035EAE4}';
var GenderID = '{4D1769C4-7AB2-4F1A-A227-B0C922412A7C}';
var RoomsID = '{B1837FB0-6B28-4021-A1B7-4DFE0EC6CBAF}';
var FormPaymentID = '{F304FD41-2637-4F30-A4C1-DBD0D6F5BE51}';
/*DATE MODULE*/
var DateWithTime = GetLocalDateTime();//new Date().getTime();
DateWithTime = DateWithTime + 270000;
var DT = new Date(DateWithTime);
DateWithTime = DT.getVarDate(DateWithTime);
DefaultValues.Add('TypeID', TypeID);
DefaultValues.Add('PriorityID', PriorityID);
DefaultValues.Add('StatusID', StatusID);
DefaultValues.Add('DwellingID', DwellingID);
DefaultValues.Add('GenderID', GenderID);
DefaultValues.Add('RoomsID', RoomsID);
DefaultValues.Add('FormPaymentID', FormPaymentID);
DefaultValues.Add('DueDate', DateWithTime);
ShowEditWindowEx(EditWindowUSI, Attributes, DefaultValues);

Эта функция вызывается кликом по нужной строке в меню действия из раздела Квартиры.

Проблема: При открытии окна из меню раздела Квартиры, поля "Результат" (edtResult) и "Результат подробно" (mmDetailedResult) остаются недоступными (по задумке их должен редактировать пользователь), хотя если открыть эту карту стандартной кнопкой "Добавить", то все работает нормально. Прикладываю скрины.

Нравится

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

Разобрался, ошибка была в функции TaskEditOnPrepare, просто строки надо было поменять местами :lol:

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