|
30.03.2012, 10:26 | #1 |
MCTS
|
Запись не сохраняется при переходе на другую в гриде
Запись не сохраняется при переходе на другую в гриде. Подскажите, пожалуйста. в чем может быть проблема?
|
|
30.03.2012, 10:31 | #2 |
Участник
|
посмотрите, не перекрыт ли write, validateWrite и/или create на датасоурсе, и что в них творится. думаю, что дело, скорее всего, в методах датасоурса.
конечно, может и в табличных методах дело. как запасной вариант, можно снести настройки формы, почистить кеш, удалить локальные кеш-файлы *.aoc (*.auc).
__________________
С уважением, Александр. Последний раз редактировалось samolalex; 30.03.2012 в 10:50. |
|
30.03.2012, 13:31 | #3 |
Участник
|
Также можно заглянуть в leaveRecord() датасорса, проверить какой параметр в super() передаётся
|
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
30.03.2012, 17:38 | #4 |
Британский учённый
|
Еще можно проверить не устанавливается ли свойство датасорса где нибудь в коде - setTmp(), а так же проверить на манипуляции в используемых классах.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
26.09.2014, 11:37 | #5 |
Участник
|
Возник похожий вопрос:
Нужно сделать следующее: Цитата:
Не должно позволять перейти на другую строку, если обязательное поле не заполнено
По совету Cardagant заглянул в leaveRecord() датасорса и увидел что при перехода курсора с записи на записи параметр в super передаётся false. И только если руками исправить на true, тогда при переходе выдаёт ворнинг о том, что надо заполнить поле, как , собственно и должно быть. Думал, что это в 2012 изменили немного функционал, однако поглядев в 2009, увидел, что там тоже по-умолчанию передаётся false. Как можно изменить данное поведение? Благодарю заранее за ответ. Последний раз редактировалось user_ax; 26.09.2014 в 11:40. |
|
26.09.2014, 12:13 | #6 |
Участник
|
Цитата:
Очень просто: создать новую запись в таблице |
|
26.09.2014, 12:43 | #7 |
Участник
|
Цитата:
Сообщение от S.Kuskov
Если пользователь не вносил изменения ни в одно поле строки, то система считает что запись не изменена и сохранять её не нужно.
Очень просто: создать новую запись в таблице Попробую добавить в Create forceWrite() ! Благодарю! |
|
26.09.2014, 13:27 | #8 |
Участник
|
Цитата:
Метод leaveRecord() при уходе с записи вызывается всегда, только с разными параметрами. Если система считает, что запись не изменена, то попытки сохранения записи не будет. Если же запись была изменена пользователем (либо выставлен флаг forceWrite), то при уходе с записи будет совершена попытка сохранения. Будут произведены все необходимые проверки, включая обязательность полей. Если будут обнаружены ошибки, то запись сохранена не будет и уход с записи также не будет выполнен. Последний раз редактировалось S.Kuskov; 26.09.2014 в 13:29. |
|
26.09.2014, 15:28 | #9 |
Участник
|
Цитата:
Сообщение от S.Kuskov
Почему не так? Так.
Метод leaveRecord() при уходе с записи вызывается всегда, только с разными параметрами. Если система считает, что запись не изменена, то попытки сохранения записи не будет. Если же запись была изменена пользователем (либо выставлен флаг forceWrite), то при уходе с записи будет совершена попытка сохранения. Будут произведены все необходимые проверки, включая обязательность полей. Если будут обнаружены ошибки, то запись сохранена не будет и уход с записи также не будет выполнен. Вариант с X++: this.forceWrite(true) Последний раз редактировалось user_ax; 26.09.2014 в 15:30. |
|
26.09.2014, 16:13 | #10 |
Участник
|
подскажите заодно: при создании новой записи в гриде нужно,чтобы одно из полей устанавливалось по умолчанию заданным значением
|
|
26.09.2014, 16:14 | #11 |
Участник
|
метод initvalue() на датасорсе или таблице
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет. |
|
26.09.2014, 16:56 | #12 |
Участник
|
|
|
26.09.2014, 17:53 | #13 |
Участник
|
Цитата:
Предыдущие записи и так будут иметь значения из таблицы. Для того, чтобы во время создания новой записи заполнять какое-либо поле значением по-умолчанию, Вам нужно перекрыть метод initvalue() и в нём присваивать полю нужное значение. |
|
26.09.2014, 18:00 | #14 |
Участник
|
Да, я уже понял, что я не так делал, я пытался через контрол.text сделать, а не через датасорс.поле = значение по умолчанию
|
|
|
|