14.02.2013, 21:56 | #41 |
Участник
|
Цитата:
Сообщение от LeonDerCom
Вообще, мне непонятна идея засовывания проверки на разрешение редактирования в валидацию поля...
Если необходимо определить разрешение на редактирование всей записи, то в метод active() - <имядатасерса>.allowEdit(FieldSetupTable::SetupFormDataSource2(salesQuotationLine_ds, this.formRun(), true)); Либо в modifiedField - если определенные поля... А валидацию оставить на решение ее конкретной задачи. Но не всегда подходит жёсткая блокировка записи от всех изменений. Иногда нужно разрешить изменение но его ограничить - вот тогда как раз без методов validate не обойтись. Причём если ограничение значения поля не зависит от соседних полей, то тогда достаточно метода validateField(). А если для принятия решения необходима проверка комбинации полей, то тогда validateWrite(). modifiedField() используется для автоматизации заполнения связанных полей, когда на основании значения одного поля можно определить значение другого поля. |
|
14.02.2013, 22:43 | #42 |
Участник
|
Почему нельзя в modified ставить проверку?
Validate возвращает, что все ОК, Идет метод modified, перехватываем super и если остальной код для изменений - если условие не выполняется - то отменяем. Почему нет? ПС: писал, что в Аксе не долго, поэтому уроки правильного коддинга приму с благодарностью. ПСС: <имядатасерса>.object(fieldid).allowEdit() - спасибо, пригодится. |
|
15.02.2013, 03:25 | #43 |
NavAx
|
Потому что программирование это форма общения между людьми. И писать код в месте, в котором никто не ожидает проверки на валидность записи, просто неприлично.
Представьте завод. Молодой слесарь, выточил болванку, положил фрезу в ящик с гайками и с чувством выполненого долга ушел домой. Приходит его сменщик и начинает искать фрезу нужного диаметра. Где он ее будет искать? Что он скажет/сделает когда поймет, что фреза лежит не в том ящике? Что скажет/сделает мастер участка когда поймет, что пришлось заказать новую фрезу и перекроить план производства, в то время как она спокойно лежала в метре от станка?
__________________
Isn't it nice when things just work? |
|
|
За это сообщение автора поблагодарили: Pustik (2). |
15.02.2013, 08:02 | #44 |
Участник
|
Цитата:
Сигнатура метода validate: Цитата:
boolean validate()
Цитата:
void modified()
Можно конечно для запрета ввода определённого значения вызвать исключение из modified, так сказать аварийно завершить работу метода. Тогда это будет как-то похоже на поведение validate. Но это будет уже точно перебор. См пост от macklakov. Зачем делать похоже, если можно сделать как нужно Последний раз редактировалось S.Kuskov; 15.02.2013 в 08:04. |
|
15.02.2013, 09:01 | #45 |
Участник
|
S.Kuskov
Имелось в виду modified конрола. В случае перехвата супера, он не тронет значение из базы и вернет его на место в случае ввода или изменения курсора на форме. Единственное, что туда не стоит помещать сообщение об ошибке, поскольку в случае запрета на модификацию modified будет выполнен два раза, первый на саму замену, второе на возвращение обратного значения. И кстати, можете объяснить одну интересную штуку с этим делом перехвата супер. Метод модификации контрола возвращает булево значение, так вот почему после запрета на супер для смены фокуса в случае возвращения true достаточно нажать ввод или переместить курсор, а в случае false - помогает выйти с редактирования только после жатаия пробела? ПС: macklakov - уговорили. Хотя ограничивался просто запретом allowedit и валидацией, но экспериментирование с некоторыми методами нестандартным подходом дает интересные результаты для общего развития. |
|
15.02.2013, 09:20 | #46 |
Участник
|
Ууу... Не, это вообще не вариант. Контролы лучше вообще не трогать без лишней необходимости. Интерфейс в аксапте же может быть изменён пользователем в runtime. И вообще говоря пользователь может не только перемещать существующие контролы, но и создавать новые, связанные с теми же источниками данных.
Так что программирование на уровне контролов и тем более программирование прав доступа в аксапте вообще не вариант. |
|
15.02.2013, 09:25 | #47 |
Участник
|
S.Kuskov
Не знал, спасибо за информацию. |
|
15.02.2013, 14:02 | #48 |
Участник
|
user_ax, лучше под новый вопрос создавать новую ветку.
Эту тему модераторы скорее всего порежут на несколько частей. Пожалуйста, создавайте отдельные ветки для обсуждения отдельных тем. |
|
|
За это сообщение автора поблагодарили: Pustik (9). |
15.02.2013, 14:28 | #49 |
Участник
|
Цитата:
Сообщение от S.Kuskov
user_ax, лучше под новый вопрос создавать новую ветку.
Эту тему модераторы скорее всего порежут на несколько частей. Пожалуйста, создавайте отдельные ветки для обсуждения отдельных тем. |
|
26.02.2013, 10:52 | #50 |
Участник
|
Цитата:
Сообщение от belugin
У Microsoft есть своя корпоративная "аська" под названием Lync. Она интегрирована в продукты Microsoft - например, я сейчас, читая письмо в outlook, или смотря документы в sharepoint могу легко посмотреть, находятся ли люди онлайн в программе Lync и быстро написать им сообщение.
__________________
Дмитрий |
|
26.02.2013, 11:00 | #51 |
Участник
|
|
|
Теги |
datafield, datasource, presence, свойства полей |
|
|