Невідповідне значення поля у карточці Активності типу [Заявка на внесення змін]
В сутність [Активность] добавив нове поле.
Значення цього поля формується в процесі створення активності (з типом задача на внесення інформації).
Створенням активності займається бізнес-процес, який запускається від роллю [Супервізор по контенту].
Відповідальним для активності призначається просто [контент-менеджер].
В реєстрі активностей видно, що поле має значення відмінне від нуля:
Якщо карточку активності відкрити під відповідальним контент-менеджером, то значення в карточці відображається таке ж як і в реєстрі.
Якщо карточку активності відкрити під [Супервізором по контенту], то значення показується нульове.
В доступі до об"єктів внесено наступні налаштування:
Для прогляду:
Контент-отдел -> Супервизоры по контенту
Супервизоры по контенту -> Контент-отдел
Контент-отдел -> Контент-отдел
Для зміни:
Супервизоры по контенту -> Контент-отдел
Супервизоры по контенту -> Супервизоры по контенту
Контент-отдел -> Контент-отдел
Для контент-менеджера супервізор виступає в ролі керівника.
При відкритті форми зі скрипта [PageLoadCompleteScriptTask] виводиться значення взяте наступним способом:
var complexityFactor = Page.DataSource.ActiveRow.GetTypedColumnValue("ComplexityFactor");
Виводиться завжди значення відмінне від нуля.
В скриптах форми значення пол не розраховується, але використовується для розрахунку значення іншого поля.
Запитання: звідки береться той нуль ?
Нравится
Если в поле NULL, или значение было каким либо образом считано как NULL (нет прав к примеру и т.п.) то "числовой" контрол отобразит значение "0" + разрядность ",00", если это дробное число.
То значить справа все-таки в правах.
Доведеться знову тестувати схему прав.
Дякую.
По [SQL Server Profiler] бачу, що значення вибирається правильне, тож на рівні доступу до даних в БД немає проблеми з правами доступу
Игорь, т.е. под "проблемным" пользователем вы выводите считанное значение в панель сообщений (и получаете 3) и в то же время в контроле видите 0?
а если сделать
if(a > 0) { Page.MyControl.SetValue(a); }
?
Возможно, вопрос глуп, но его нужно задать.
Игорь, Вы уверены, что поле ввода корректно привязано к полю в источнике данных?
И не администрируется ли эта колонка?
Щодо адміністрування - сама сутність [Активности] по полях не адмініструється, тільки по записах та по операціях
А якщо взяти значення ось таким чином:
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
А ще цікаво:
(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 зробити. Ще не зрозумів, де краще точки останова зробити.
"Андрей Каспаревич" написал:Игорь, попробуйте в источнике данных в свойствах поля поставить галку "Всегда загружать данные".
Я тоді проставив флажок на набір даних.
"Ігор Андрусенко" написал:Не допомагає.
А проставлення флажка на "Всегда загружать данные" на самому полі вилікувало ситуацію. Перепрошую за неуважність.