|  31.07.2014, 10:52 | #1 | 
| Участник | UnitOfWork на форме 
			
			Добрый день, уважаемые знатоки. Подскажите пожалуйста как можно реализовать на форме создание заголовка и множества строк с использованием механизма UnitOfWork. Для случая заголовка и одной строки - работает, но при добавлении второй строки - идет попытка сохранения записи заголовка и записи строки.
		 | 
|  | 
|  31.07.2014, 10:59 | #2 | 
| Участник | 
			
			А в чем собственно проблема? "Фишка" UnitOfWork в том что одновременно сохраняються все датасорсы между writing и written
		 | 
|  | 
|  31.07.2014, 11:03 | #3 | 
| Участник | 
			
			Проблема в том, что при попытке добавить вторую строку, происходит запись заголовка и первой строки. А нам этого не нужно. Нужно, чтобы одновременно записались и заголовок, и все строки. Если в коде использовать UnitOfWork, то так все и работает. А на форме у нас не получается это реализовать. Может быть мы что-то не так делаем
		 | 
|  | 
|  31.07.2014, 11:19 | #4 | 
| Участник | 
			
			Насколько я понимаю он групирует вашу шапку и строки в 1 юнит и вызывает запись для всего юнита, так что неважно какая это строка 1, 2 или 25.
		 | 
|  | 
|  31.07.2014, 11:25 | #5 | 
| Участник | 
			
			Я с Вами полностью согласна, что так должно работать. Так почему же у нас только при Ctr + N второй строки уже запись идет и заголовка и первой строки?
		 | 
|  | 
|  31.07.2014, 12:42 | #6 | 
| Участник | 
			
			Вы создаете 1 строку , не сохраняете ее, жмете ctr+N он в супере create вызывает запись для певой  строки потом initValue()  второй строки ...
		 | 
|  | 
|  31.07.2014, 13:19 | #7 | 
| Участник | 
			
			Да именно так  при попытке добавить вторую строку в гриде  идет попытка сохранения записи и заголовка и строки соответвенно  Вопрос как раз в том как на форме работающей по технологи UnitOfWorks добавлять несколько строк в гриде в связанной таблице и чтобы сохранять набитые заголовок и строки только при выходе из формы или по кнопке сохранить.А при выходе из формы по escape не сохранять ничего. Может кто может встречался в стандарном функционале с подобной формой. | 
|  | 
|  31.07.2014, 13:33 | #8 | 
| Участник | 
			
			Как реализовать на форме создание заголовка и множества строк с использованием механизма UnitOfWork -  Выставить свойство ChangeGroupMode в ImplicitInnerOuter. Тут подробнее - MSDN Цитата: 
		
			при добавлении второй строки - идет попытка сохранения записи заголовка и записи строки.
		
	 
				__________________ AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 | 
|  | 
|  31.07.2014, 13:59 | #9 | 
| Участник |  ) что то мы все не можем понять друг друга )) про свойство ChangeGroupMode в курсе с ним и работаем Давайте начнем сначала от поставленной задачи )) Есть следующая задача сделать форму в которой обслуживаются 2 таблицы Header и Lines. Cоответственно в шапке формы поля таблицы Header после чего отображется грид связанной таблицы Lines в которой можно добавлять несколько строк. Задача стоит в том чтобы если пользователь набил данные заголовка( Header) и НЕСКОЛЬКО связанных строк (LInes) и после чего передумал и нажал на форме ESCAPE не нужно сохранять ни Заголовок ни Строки. | 
|  | 
|  31.07.2014, 14:12 | #10 | 
| Участник | 
			
			никак
		 | 
|  | 
|  31.07.2014, 14:29 | #11 | 
| Участник | 
			
			Точно никак ? Програмно при помощи класса UnitOfWork это позволяет сделать В этом то вроде как и суть UnitOfWork | 
|  | 
|  31.07.2014, 14:43 | #12 | 
| Участник | 
			
			По моему вам журнал надо.  Разнесли - значит принято. Нет - значит все записи времянка. Или статус на Header заведите - принято или нет. Если совсем в лоб - перекрывайте task и ловите свой Esc (#define.taskEsc(1313) в #Task). Если очень хочется UnitOfWork использовать для того чтобы в БД все ушло 1 запросом - делайте форму с временной таблицой, если нажали OK - посылайте все данные из временных таблиц в БД через UnitOfWork. ИМХО оверкил. 
				__________________ AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 | 
|  | 
|  31.07.2014, 14:51 | #13 | 
| Участник | Цитата: ИМХО плохая поставнока задачи. Сделаете как советуют выше с журналом и будет как везде "пускай безобразно но однообразно"   | 
|  | 
|  31.07.2014, 15:04 | #14 | 
| Участник | 
			
			Я не пытаюсь придумывать велосипед )) Это не мои хотелки это требование заказчика.  А Заказчик всегда прав)) А UnitOfWork по сути для этого и предназначен одним запросом добавлять заголовок и строки но в реализации его в пользовательском интерфейсе AX видимо не что то недокрутили или чего то я не понимаю . Заказчик видит что есть форма которая работает с UnitOfWork и позволяет не сохранять данные по желанию пользователя. И говорит хочу так же но с гридом . | 
|  | 
|  31.07.2014, 16:02 | #15 | 
| Участник | 
			
			Реализовать  как журнал  или с использованием временной таблицы тоже не вариант так как необходимо встроиться в уже существующую тяжелую форму  в которой порядка 10 датасоурсов  и 2 класса обработчика  и переделывать ее под временную таблицу практически нереально  и очень  трудоемко  проще всего в такой ситуации удалить все что было создано при выходе по escape но мне это совсем не нравится. | 
|  | 
|  31.07.2014, 16:17 | #16 | 
| Участник | Цитата: 
		
			Сообщение от Ramil
			   Реализовать  как журнал  или с использованием временной таблицы тоже не вариант так как необходимо встроиться в уже существующую тяжелую форму  в которой порядка 10 датасоурсов  и 2 класса обработчика  и переделывать ее под временную таблицу практически нереально  и очень  трудоемко  проще всего в такой ситуации удалить все что было создано при выходе по escape но мне это совсем не нравится.   | 
|  | 
|  31.07.2014, 16:43 | #17 | 
| Участник | 
			
			Мне самому не нравится эта идея но описанная вами проблема решается достаточно просто.В заголовке  можно завести поле статус черновик и анализировать его  при удалении и при использовании.
		 | 
|  | 
|  31.07.2014, 17:05 | #18 | 
| Участник | 
			
			1) Ок, если это существующаю форма вы готовы везде где это используеться прокинуть свой статус "черновик". 2) Надо еще запретить другим пользователям использовать\редактировать этот черновик 3) Если 1 пользователь открыл 2 раза эту форму и 1 закрыл по ескейпу, как вы узнаете что надо удалить, а что оставить?) я думаю еще куча подобного найдеться... может проще отговорить заказчика и сделать журналом? | 
|  | 
|  31.07.2014, 17:22 | #19 | 
| Участник | 
			
			Да определить что нужно удалить не проблема  я не собираюсь тупо удалять все записи со статусом черновик  а при выходе из формы создания записи определять текущую запись и ее удалять при необходимости все это решаемо. Есть задача реализовать ее можно множеством способов но у каждого способа есть трудоемкость соотвественно деньги а заказчик считает каждую копейку. Да и я уже сказал что такой метод тоже меня не устраивает и я склоняюсь к UnitOfWork который по идее должен это позволять. Вы бы вместо критики все же тогда обьяснили почему UnitOfWork програмно позволяет это делать а через форму нет. | 
|  | 
|  01.08.2014, 08:10 | #20 | 
| Участник | 
			
			Для того чтобы при переходе на новую строку старая автоматически не пыталась сохраниться попробуйте на датасурсе перекрыть метод leaveRecord и передать в super false.
		 | 
|  | 
| Теги | 
| unitofwork | 
|  | 
| 
 |