Невідповідне значення поля у карточці Активності типу [Заявка на внесення змін]

В сутність [Активность] добавив нове поле.
Значення цього поля формується в процесі створення активності (з типом задача на внесення інформації).

Створенням активності займається бізнес-процес, який запускається від роллю [Супервізор по контенту].
Відповідальним для активності призначається просто [контент-менеджер].

В реєстрі активностей видно, що поле має значення відмінне від нуля:

Якщо карточку активності відкрити під відповідальним контент-менеджером, то значення в карточці відображається таке ж як і в реєстрі.
Якщо карточку активності відкрити під [Супервізором по контенту], то значення показується нульове.

В доступі до об"єктів внесено наступні налаштування:

Для прогляду:
Контент-отдел -> Супервизоры по контенту
Супервизоры по контенту -> Контент-отдел
Контент-отдел -> Контент-отдел

Для зміни:
Супервизоры по контенту -> Контент-отдел
Супервизоры по контенту -> Супервизоры по контенту
Контент-отдел -> Контент-отдел

Для контент-менеджера супервізор виступає в ролі керівника.

При відкритті форми зі скрипта [PageLoadCompleteScriptTask] виводиться значення взяте наступним способом:
var complexityFactor = Page.DataSource.ActiveRow.GetTypedColumnValue("ComplexityFactor");

Виводиться завжди значення відмінне від нуля.

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

Запитання: звідки береться той нуль ?

Нравится

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

Если в поле NULL, или значение было каким либо образом считано как NULL (нет прав к примеру и т.п.) то "числовой" контрол отобразит значение "0" + разрядность ",00", если это дробное число.

То значить справа все-таки в правах.
Доведеться знову тестувати схему прав.

Дякую.

По [SQL Server Profiler] бачу, що значення вибирається правильне, тож на рівні доступу до даних в БД немає проблеми з правами доступу

Игорь, т.е. под "проблемным" пользователем вы выводите считанное значение в панель сообщений (и получаете 3) и в то же время в контроле видите 0?

а если сделать

if(a > 0) {
 Page.MyControl.SetValue(a);
}

?

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

Стосовно прив"язки:
[ComplexityFactorEdit]

[ComplexityFactor]

Форма:

Щодо адміністрування - сама сутність [Активности] по полях не адмініструється, тільки по записах та по операціях

І ще, в базі:

А якщо взяти значення ось таким чином:
var complexityFactor1 = Page.ComplexityFactorEdit.Value

то буде ось такий результат: -79228162514264337593543950335
і він !=null

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

Не допомагає.

Для "непроблемного" користувача

var complexityFactor1 = Page.ComplexityFactorEdit.Value

complexityFactor1 також: -79228162514264337593543950335

То що ж тоді Page.ComplexityFactorEdit.Value за величину презентує ?

Знайшов дещо цікаве:

public virtual void SetValue(decimal value)
{
	if (!value.Equals(-79228162514264337593543950335m))
	{
		base.SetValue(value);
	}
	else
	{
		base.SetValue(null);
	}
}

Це значення і презентує NULL.

Попробуйте открыть страницу, консоль браузера, и посмотреть на клиентский объект DataSource: какие колонки загружены. Обычно это можно сделать, введя в консоли:

PageContainer_DataSource.activeRow.columns

В цьому об"єкті ComplexityFactor=2.9

А ще цікаво:

(Guid) Page.AuthorEdit.Value

вказує на одну особу,

а Page.DataSource.ActiveRow.GetTypedColumnValue("AuthorId")

на іншу

---------------------------------------------------------------------------------------------------
з цим розібрався ...

Здравствуйте, Игорь!
Довольно странные вещи Вы описываете. Думаю, дальнейшее обчуждение без возможности посмотреть на проблему "вживую" бесполезно. Поэтому рекомендую обратиться в службу тех. поддержки и предоставить бэкап БД или доступ к среде для воспроизведения ошибки.

"Ігор Андрусенко" написал:
з цим розібрався ...

С чем именно? И в чем было дело?

Ось з цим:

А ще цікаво:
 
(Guid) Page.AuthorEdit.Value
 
вказує на одну особу,
 
а Page.DataSource.ActiveRow.GetTypedColumnValue("AuthorId")
 
на іншу

В скрипті [PageLoadCompleteScriptTaskExecute] є запуск метода [ChangeTextInFields], в якому явно прописувалася особа з сутності [ChangeRequest]:

Page.AuthorEdit.SetValueAndText(
	authorId, 
	TSConfiguration.CommonUtilities.GetLookupDisplayValue(UserConnection, "Contact", authorId)
);

Закоментував цю частину коду і автор почав відображатися коректно.
(Я зупинявся на етапі відкриття форми, не зберігаючи її, тому різниця між завантаженим і прописаним значенням відслідковувалася)

А стосовно значення [ComplexityFactor] зараз намагаюся провести відладку в IE зробити. Ще не зрозумів, де краще точки останова зробити.

Кстати, а в других браузерах такое же поведение?

"Андрей Каспаревич" написал:Игорь, попробуйте в источнике данных в свойствах поля поставить галку "Всегда загружать данные".

Я тоді проставив флажок на набір даних.
"Ігор Андрусенко" написал:Не допомагає.

А проставлення флажка на "Всегда загружать данные" на самому полі вилікувало ситуацію. Перепрошую за неуважність.

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