|  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 сделать, а не через датасорс.поле = значение по умолчанию
		 | 
|  | 
|  | 
| Опции темы | Поиск в этой теме | 
| Опции просмотра | |
| 
 |