Как изменить значение выбранного поля

Суть проблемы: Задачи - карточка редактирование. Задача с определенным типом.
Сначала имеем состояние "Не начата". Переводим в состояние "В работе", дальше по скрипту кое-что отрабатывается и возвращает true или false. Если вернет false, то состояние надо вернуть назад в "Не начата". В скрипте ставлю ID статуса, и даже значение переменной edtSttus.DataField.DisplayValue равно 'Не начата', плюс еще когда я сохраняю (на ОК), то задача сохраняется со статусом 'Не начата'. Но в карточке редактирование (пока не сохранишь и не откроешь заново) все равно остается надпись "В работе". Я думаю это из-за того что поле активно.
Дошел до этого, потому что отработал скрипт не только на изменение состояния, но и на изменения типа. Т.е. была задача с другим типом и состоянием "В работе", поменял тип, вуаля, все ОК, надпись в состоянии "Не начата".
Вопрос: как убрать, скажем так, "активность" или "выбранность" поля.

Нравится

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

и правда ничего не помогает :exclaim:
ни UnprepareDropDownList(), ни Window/Control.Begin/EndUpdate()

Как вариант - повесьте вашу логику на OnExit для контрола состояния

Да, к сожалению нет возможности перекрыть свойство Text из конфигурации в этот момент.

Итак, кому интересно, то в итоге у меня получилось обойти эту проблемку так:
1) создал точно такое же поле под нужным нам, назовем edtStatusCopy, но делаем его невидидмым
2) OnDataChange окна дописал скрипт:

//выше логика когда должно выполняться это условие
UpdateStatus(); //меняем статус
Self.BeginUpdate(); //как я понял это, что бы пользуны не заметили подмену полей
//можно сделать красивее, но пятница, вечер, меня достала эта проблема и т.д.
if (edtStatusCopy.IsVisible) {
    edtStatus.IsVisible = true;
    edtStatusCopy.IsVisible = false;
} else {
    edtStatus.IsVisible = false;
    edtStatusCopy.IsVisible = true;
}
Self.EndUpdate();

В результате, когда статус сменился, то идет подмена (вместо edtStatus ставится edtStatusCopy, потом опять вместо edtStatusCopy - edtStatus). Не кашерно, но пользователи довольны.

:twisted:

Думал про копирование. А контролы ссылаются на одно и тоже поле в DS?

Контролы ссылаются на одно и тоже поле, и вообще они полностью идентичны, разность только в свойстве IsVisible

Александр, понятно, спасибо.
Вопрос с другими вариантами обновления свойства Text у ComboBox передам в разработку.

Александр, спешу сообщить что по Вашему обращению были внесены изменения в "ядро". Теперь ComboBox будет корректно пеперисован. Изменения войдут в новые сборки 3.5.2+. Можете запросить через support@terrasoft.ru последние бинарные файлы.

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