AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.03.2012, 10:26   #1  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Запись не сохраняется при переходе на другую в гриде
Запись не сохраняется при переходе на другую в гриде. Подскажите, пожалуйста. в чем может быть проблема?
Старый 30.03.2012, 10:31   #2  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
посмотрите, не перекрыт ли write, validateWrite и/или create на датасоурсе, и что в них творится. думаю, что дело, скорее всего, в методах датасоурса.
конечно, может и в табличных методах дело.
как запасной вариант, можно снести настройки формы, почистить кеш, удалить локальные кеш-файлы *.aoc (*.auc).
__________________
С уважением, Александр.

Последний раз редактировалось samolalex; 30.03.2012 в 10:50.
Старый 30.03.2012, 13:31   #3  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Также можно заглянуть в leaveRecord() датасорса, проверить какой параметр в super() передаётся
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 30.03.2012, 17:38   #4  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Еще можно проверить не устанавливается ли свойство датасорса где нибудь в коде - setTmp(), а так же проверить на манипуляции в используемых классах.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 26.09.2014, 11:37   #5  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Возник похожий вопрос:

Нужно сделать следующее:
Цитата:
Не должно позволять перейти на другую строку, если обязательное поле не заполнено
Выставил поле mandatory на таблице yes. Однако при переходе в гриде с одной записи на другую с незаполненным полем обязательным - оно даёт переходить.

По совету Cardagant заглянул в leaveRecord() датасорса и увидел что при перехода курсора с записи на записи параметр в super передаётся false. И только если руками исправить на true, тогда при переходе выдаёт ворнинг о том, что надо заполнить поле, как , собственно и должно быть.

Думал, что это в 2012 изменили немного функционал, однако поглядев в 2009, увидел, что там тоже по-умолчанию передаётся false.

Как можно изменить данное поведение? Благодарю заранее за ответ.

Последний раз редактировалось user_ax; 26.09.2014 в 11:40.
Старый 26.09.2014, 12:13   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от user_ax Посмотреть сообщение
Выставил поле mandatory на таблице yes. Однако при переходе в гриде с одной записи на другую с незаполненным полем обязательным - оно даёт переходить.
Если пользователь не вносил изменения ни в одно поле строки, то система считает что запись не изменена и сохранять её не нужно.
Очень просто: создать новую запись в таблице
Старый 26.09.2014, 12:43   #7  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Если пользователь не вносил изменения ни в одно поле строки, то система считает что запись не изменена и сохранять её не нужно.
Очень просто: создать новую запись в таблице
Странное поведение, если честно. Я, по правде говоря, думал, что leaveRecord срабатывает, когда пользователь переходит с одной записи на другую. Как бы само название метода за себя говорит. Однако, видимо, это не так ...
Попробую добавить в Create forceWrite() ! Благодарю!
Старый 26.09.2014, 13:27   #8  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от user_ax Посмотреть сообщение
Странное поведение, если честно. Я, по правде говоря, думал, что leaveRecord срабатывает, когда пользователь переходит с одной записи на другую. Как бы само название метода за себя говорит. Однако, видимо, это не так ...
Почему не так? Так.

Метод leaveRecord() при уходе с записи вызывается всегда, только с разными параметрами. Если система считает, что запись не изменена, то попытки сохранения записи не будет. Если же запись была изменена пользователем (либо выставлен флаг forceWrite), то при уходе с записи будет совершена попытка сохранения. Будут произведены все необходимые проверки, включая обязательность полей. Если будут обнаружены ошибки, то запись сохранена не будет и уход с записи также не будет выполнен.

Последний раз редактировалось S.Kuskov; 26.09.2014 в 13:29.
Старый 26.09.2014, 15:28   #9  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Почему не так? Так.

Метод leaveRecord() при уходе с записи вызывается всегда, только с разными параметрами. Если система считает, что запись не изменена, то попытки сохранения записи не будет. Если же запись была изменена пользователем (либо выставлен флаг forceWrite), то при уходе с записи будет совершена попытка сохранения. Будут произведены все необходимые проверки, включая обязательность полей. Если будут обнаружены ошибки, то запись сохранена не будет и уход с записи также не будет выполнен.
Да, Вы правы, это я некорректно выразился

Вариант с
X++:
 this.forceWrite(true)
- работает, благодарю за подсказку!

Последний раз редактировалось user_ax; 26.09.2014 в 15:30.
Старый 26.09.2014, 16:13   #10  
Mutnyi is offline
Mutnyi
Участник
 
12 / 10 (1) +
Регистрация: 16.09.2014
подскажите заодно: при создании новой записи в гриде нужно,чтобы одно из полей устанавливалось по умолчанию заданным значением
Старый 26.09.2014, 16:14   #11  
Weez is offline
Weez
Участник
Axapta Retail User
 
250 / 84 (3) ++++
Регистрация: 18.01.2006
Адрес: Moscow city
метод initvalue() на датасорсе или таблице
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет.
Старый 26.09.2014, 16:56   #12  
Mutnyi is offline
Mutnyi
Участник
 
12 / 10 (1) +
Регистрация: 16.09.2014
Цитата:
Сообщение от Weez Посмотреть сообщение
метод initvalue() на датасорсе или таблице
Это работает, если у моего контрола нет датасорса, может я и не прав. А мне нужно, чтобы предыдущие записи имели в этом поле значения из таблицы, а новая запись создавалась со значением по умолчанию.
Старый 26.09.2014, 17:53   #13  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от Mutnyi Посмотреть сообщение
Это работает, если у моего контрола нет датасорса, может я и не прав. А мне нужно, чтобы предыдущие записи имели в этом поле значения из таблицы, а новая запись создавалась со значением по умолчанию.
А как у Вас может не быть датасорса, но при этом предыдущие записи берутся из таблицы ?

Предыдущие записи и так будут иметь значения из таблицы. Для того, чтобы во время создания новой записи заполнять какое-либо поле значением по-умолчанию, Вам нужно перекрыть метод initvalue() и в нём присваивать полю нужное значение.
Старый 26.09.2014, 18:00   #14  
Mutnyi is offline
Mutnyi
Участник
 
12 / 10 (1) +
Регистрация: 16.09.2014
Да, я уже понял, что я не так делал, я пытался через контрол.text сделать, а не через датасорс.поле = значение по умолчанию
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Не корректно сохраняет запись в inventTable Starling DAX: Программирование 8 31.03.2008 15:30
Не сохраняется запись, исправленная в другом месте Atani DAX: Программирование 2 14.12.2004 16:17
Переход на правильную запись при Переходе к основной таблице. - 2 Anais DAX: Программирование 2 01.11.2004 17:14
Переход на правильную запись при Переходе к основной таблице. Anais DAX: Программирование 11 29.06.2004 19:16
как сохранить отмеченную запись на гриде ? Omeo DAX: Программирование 2 25.03.2004 12:47

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:55.