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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.07.2014, 10:52   #1  
Mila is offline
Mila
Участник
 
73 / 31 (2) +++
Регистрация: 21.04.2006
UnitOfWork на форме
Добрый день, уважаемые знатоки. Подскажите пожалуйста как можно реализовать на форме создание заголовка и множества строк с использованием механизма UnitOfWork. Для случая заголовка и одной строки - работает, но при добавлении второй строки - идет попытка сохранения записи заголовка и записи строки.
Старый 31.07.2014, 10:59   #2  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
А в чем собственно проблема? "Фишка" UnitOfWork в том что одновременно сохраняються все датасорсы между writing и written
Старый 31.07.2014, 11:03   #3  
Mila is offline
Mila
Участник
 
73 / 31 (2) +++
Регистрация: 21.04.2006
Проблема в том, что при попытке добавить вторую строку, происходит запись заголовка и первой строки. А нам этого не нужно. Нужно, чтобы одновременно записались и заголовок, и все строки. Если в коде использовать UnitOfWork, то так все и работает. А на форме у нас не получается это реализовать. Может быть мы что-то не так делаем
Старый 31.07.2014, 11:19   #4  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Насколько я понимаю он групирует вашу шапку и строки в 1 юнит и вызывает запись для всего юнита, так что неважно какая это строка 1, 2 или 25.
Старый 31.07.2014, 11:25   #5  
Mila is offline
Mila
Участник
 
73 / 31 (2) +++
Регистрация: 21.04.2006
Я с Вами полностью согласна, что так должно работать. Так почему же у нас только при Ctr + N второй строки уже запись идет и заголовка и первой строки?
Старый 31.07.2014, 12:42   #6  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Вы создаете 1 строку , не сохраняете ее, жмете ctr+N он в супере create вызывает запись для певой строки потом initValue() второй строки ...
Старый 31.07.2014, 13:19   #7  
Ramil is offline
Ramil
Участник
 
30 / 10 (1) +
Регистрация: 29.06.2006
Адрес: Казань
Да именно так при попытке добавить вторую строку в гриде идет попытка сохранения записи и заголовка и строки соответвенно

Вопрос как раз в том как на форме работающей по технологи UnitOfWorks добавлять несколько строк в гриде в связанной таблице и чтобы сохранять набитые заголовок и строки только при выходе из формы или по кнопке сохранить.А при выходе из формы по escape не сохранять ничего. Может кто может встречался в стандарном функционале с подобной формой.
Старый 31.07.2014, 13:33   #8  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Как реализовать на форме создание заголовка и множества строк с использованием механизма UnitOfWork -

Выставить свойство ChangeGroupMode в ImplicitInnerOuter. Тут подробнее -
MSDN

Цитата:
при добавлении второй строки - идет попытка сохранения записи заголовка и записи строки.
Так в это и суть механизма UnitOfWork - сохраняется все целиком и если есть ошибка - не сохраняется тоже все целиком.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
Старый 31.07.2014, 13:59   #9  
Ramil is offline
Ramil
Участник
 
30 / 10 (1) +
Регистрация: 29.06.2006
Адрес: Казань
) что то мы все не можем понять друг друга ))
про свойство ChangeGroupMode в курсе с ним и работаем
Давайте начнем сначала от поставленной задачи ))

Есть следующая задача сделать форму в которой обслуживаются 2 таблицы
Header и Lines. Cоответственно в шапке формы поля таблицы Header после чего отображется грид связанной таблицы Lines в которой можно добавлять несколько строк. Задача стоит в том чтобы если пользователь набил данные заголовка( Header) и НЕСКОЛЬКО связанных строк (LInes) и после чего передумал и нажал на форме ESCAPE не нужно сохранять ни Заголовок ни Строки.
Старый 31.07.2014, 14:12   #10  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
никак
Старый 31.07.2014, 14:29   #11  
Ramil is offline
Ramil
Участник
 
30 / 10 (1) +
Регистрация: 29.06.2006
Адрес: Казань
Точно никак ?
Програмно при помощи класса UnitOfWork это позволяет сделать
В этом то вроде как и суть UnitOfWork
Старый 31.07.2014, 14:43   #12  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
По моему вам журнал надо.
Разнесли - значит принято.
Нет - значит все записи времянка.

Или статус на 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  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от Ramil Посмотреть сообщение
Точно никак ?
Програмно при помощи класса UnitOfWork это позволяет сделать
В этом то вроде как и суть UnitOfWork
Понимаете вы пытаетесь придумать свой велосипед. В АХ вы создали запись потом перешли на другую и она сохранилаь. Но тут появляетесь вы и ваша "особенная" форма которая ведет себя по другому, зачем? Пользователь привык к такому поведению, а вы его насильно переучиваете.
ИМХО плохая поставнока задачи. Сделаете как советуют выше с журналом и будет как везде "пускай безобразно но однообразно"
Старый 31.07.2014, 15:04   #14  
Ramil is offline
Ramil
Участник
 
30 / 10 (1) +
Регистрация: 29.06.2006
Адрес: Казань
Я не пытаюсь придумывать велосипед )) Это не мои хотелки это требование заказчика. А Заказчик всегда прав))
А UnitOfWork по сути для этого и предназначен одним запросом добавлять заголовок и строки но в реализации его в пользовательском интерфейсе AX видимо не что то недокрутили или чего то я не понимаю .
Заказчик видит что есть форма которая работает с UnitOfWork и позволяет не сохранять данные по желанию пользователя. И говорит хочу так же но с гридом .
Старый 31.07.2014, 16:02   #15  
Ramil is offline
Ramil
Участник
 
30 / 10 (1) +
Регистрация: 29.06.2006
Адрес: Казань
Реализовать как журнал или с использованием временной таблицы тоже не вариант так как необходимо встроиться в уже существующую тяжелую форму в которой порядка 10 датасоурсов и 2 класса обработчика и переделывать ее под временную таблицу практически нереально и очень трудоемко
проще всего в такой ситуации удалить все что было создано при выходе по escape
но мне это совсем не нравится.
Старый 31.07.2014, 16:17   #16  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от Ramil Посмотреть сообщение
Реализовать как журнал или с использованием временной таблицы тоже не вариант так как необходимо встроиться в уже существующую тяжелую форму в которой порядка 10 датасоурсов и 2 класса обработчика и переделывать ее под временную таблицу практически нереально и очень трудоемко
проще всего в такой ситуации удалить все что было создано при выходе по escape
но мне это совсем не нравится.
Т.е. пользователь октрыл форму, создал 100 строк и пошел в отпуск. Кто-то эти данные использовал в других формах и так далее, а через месяц наш нерадивый но отдохнувший сотрудник пришел и нажал ескейп и тут вы будите все удалять? Прикольно, удачи
Старый 31.07.2014, 16:43   #17  
Ramil is offline
Ramil
Участник
 
30 / 10 (1) +
Регистрация: 29.06.2006
Адрес: Казань
Мне самому не нравится эта идея но описанная вами проблема решается достаточно просто.В заголовке можно завести поле статус черновик и анализировать его при удалении и при использовании.
Старый 31.07.2014, 17:05   #18  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
1) Ок, если это существующаю форма вы готовы везде где это используеться прокинуть свой статус "черновик".
2) Надо еще запретить другим пользователям использовать\редактировать этот черновик
3) Если 1 пользователь открыл 2 раза эту форму и 1 закрыл по ескейпу, как вы узнаете что надо удалить, а что оставить?)
я думаю еще куча подобного найдеться...
может проще отговорить заказчика и сделать журналом?
Старый 31.07.2014, 17:22   #19  
Ramil is offline
Ramil
Участник
 
30 / 10 (1) +
Регистрация: 29.06.2006
Адрес: Казань
Да определить что нужно удалить не проблема я не собираюсь тупо удалять все записи со статусом черновик а при выходе из формы создания записи определять текущую запись и ее удалять при необходимости все это решаемо.
Есть задача реализовать ее можно множеством способов но у каждого способа есть трудоемкость соотвественно деньги а заказчик считает каждую копейку.
Да и я уже сказал что такой метод тоже меня не устраивает и я склоняюсь к UnitOfWork который по идее должен это позволять.
Вы бы вместо критики все же тогда обьяснили почему UnitOfWork програмно позволяет это делать а через форму нет.
Старый 01.08.2014, 08:10   #20  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Для того чтобы при переходе на новую строку старая автоматически не пыталась сохраниться попробуйте на датасурсе перекрыть метод leaveRecord и передать в super false.
Теги
unitofwork

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Что вызывать вместо write на data source которые работают через UnitOfWork bio_unit DAX: Программирование 5 28.06.2014 12:47
Отображение таблицы в новой форме форме DAsm DAX: Программирование 23 04.03.2011 21:50
Как правильно связать таблицы в форме? Как показать параметры партии? mazzy DAX: Программирование 10 27.10.2010 15:56
Несинхронность размерности полей в форме поиска... glibs DAX: Функционал 0 05.04.2010 21:54
Использование семейства InventDimCtrl_Frm_* - 2 DS InventDim на одной форме Pavlo AKA Panok DAX: База знаний и проекты 5 22.12.2008 17:15

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

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

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