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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.09.2015, 11:59   #1  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Поле метод
Доброго времени суток!

AX 2012
Допустим есть таблица 1 и таблица 2.

В таблице 2 находятся документы связанные с таблицей 1.

В таблицу 1 нужно добавить поле (checkbox) которое будет изменятся в зависимости от того есть ли документы для данной записи в таблице 2. Если все документы будут удалены соответственно чек бокс для связанной записи должен изменится.

Собственно как правильно реализовать подобный функционал?
Старый 10.09.2015, 12:12   #2  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 513 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
В методах AOSValidateDelete и AOSValidateInsert таблицы 2 проверяйте наличие записей и меняйте нужное значение.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 10.09.2015, 13:28   #3  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Насколько я понимаю методы AOSValidateDelete и AOSValidateInsert срабатывают до удаления\вставки записей в таблицу. Со вставкой конечно проблем особых нету, а при удалении нужно проверять сколько записей существует, т.к. в таблице 2 может быть много строк относящихся к записи в таблице 1.

Какие еще варианты?
Старый 10.09.2015, 13:52   #4  
axm2013
Гость
 
n/a
Цитата:
Сообщение от syl Посмотреть сообщение
...
Собственно как правильно реализовать подобный функционал?
Имхо традиционно: как на SalesTable/SalesLine к примеру. Событие обрабатывается на update изменяя возможно SalesLine или при событии удалении/добавлении SalesLine изменяется SalesTable.

Последний раз редактировалось axm2013; 10.09.2015 в 14:15.
Старый 10.09.2015, 14:20   #5  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,689 / 405 (17) +++++++
Регистрация: 23.03.2006
дисплей метод не подойдет?
Старый 10.09.2015, 14:20   #6  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 513 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от syl Посмотреть сообщение
Насколько я понимаю методы AOSValidateDelete и AOSValidateInsert срабатывают до удаления\вставки записей в таблицу. Со вставкой конечно проблем особых нету, а при удалении нужно проверять сколько записей существует, т.к. в таблице 2 может быть много строк относящихся к записи в таблице 1.

Какие еще варианты?
AOSValidateDelete вызывается в super метода delete. По идее, если результат валидации положительный, то запись будет удалена. Так что можно проверять количество связанных записей с учетом текущей удаляемой.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 10.09.2015, 15:01   #7  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Сделал через display method. По моему самый правильный вариант, хотя в некоторых случаях может приводить к огромной нагрузке, надо быть осторожней с ним ))
Старый 10.09.2015, 15:02   #8  
Napalm is offline
Napalm
Участник
 
80 / 88 (3) ++++
Регистрация: 23.05.2012
У меня есть безумная идея - перекрыть методы "insert" и "delete" в таблице 2.
Старый 10.09.2015, 16:19   #9  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
Сообщение от syl Посмотреть сообщение
Сделал через display method. По моему самый правильный вариант, хотя в некоторых случаях может приводить к огромной нагрузке, надо быть осторожней с ним ))
Если дисплей метод создаёт большую нагрузку, можете рассмотреть возможность кешировать его.
Старый 10.09.2015, 16:38   #10  
epetrov is offline
epetrov
Участник
 
13 / 22 (1) +++
Регистрация: 27.10.2005
Адрес: Казань
Если нет желания связываться с дисплей методом или нужна возможность фильтрации по этому полю, то можно решить задачу через view. В запросе view сделать группировку по RecId таблицы 1 и посчитать количество связанных записей таблице 2. В поля view добавить RecId таблицы 1 и калькулируемое поле типа NoYes, которое будет в зависимости от количества связанных записей принимать значение 0 или 1. Затем на форме приджойнить нашу view к таблице 1 через RecId и вывести калькулируемое поле в грид.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
На диалоговом поле метод Modified Poleax DAX: Программирование 19 22.03.2010 00:02
Одновременно поле и метод данных таблицы в отчете wojzeh DAX: Программирование 2 19.03.2010 17:47
сопоставление оплат клиента, переносов сальдо-поле накладная в общем журнале? Aquarius DAX: Функционал 3 28.01.2009 12:51
Форма: как привязать метод до выбора в поле Arahnid DAX: Программирование 9 22.11.2007 16:18
Передача массива VARIANTов в Automation метод Maximin DAX: Программирование 0 09.10.2002 19:31

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:07.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.