10.09.2015, 11:59 | #1 |
Участник
|
Поле метод
Доброго времени суток!
AX 2012 Допустим есть таблица 1 и таблица 2. В таблице 2 находятся документы связанные с таблицей 1. В таблицу 1 нужно добавить поле (checkbox) которое будет изменятся в зависимости от того есть ли документы для данной записи в таблице 2. Если все документы будут удалены соответственно чек бокс для связанной записи должен изменится. Собственно как правильно реализовать подобный функционал? |
|
10.09.2015, 12:12 | #2 |
Британский учённый
|
В методах AOSValidateDelete и AOSValidateInsert таблицы 2 проверяйте наличие записей и меняйте нужное значение.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
10.09.2015, 13:28 | #3 |
Участник
|
Насколько я понимаю методы AOSValidateDelete и AOSValidateInsert срабатывают до удаления\вставки записей в таблицу. Со вставкой конечно проблем особых нету, а при удалении нужно проверять сколько записей существует, т.к. в таблице 2 может быть много строк относящихся к записи в таблице 1.
Какие еще варианты? |
|
10.09.2015, 13:52 | #4 |
Гость
|
Имхо традиционно: как на SalesTable/SalesLine к примеру. Событие обрабатывается на update изменяя возможно SalesLine или при событии удалении/добавлении SalesLine изменяется SalesTable.
Последний раз редактировалось axm2013; 10.09.2015 в 14:15. |
|
10.09.2015, 14:20 | #5 |
Участник
|
дисплей метод не подойдет?
|
|
10.09.2015, 14:20 | #6 |
Британский учённый
|
Цитата:
Сообщение от syl
Насколько я понимаю методы AOSValidateDelete и AOSValidateInsert срабатывают до удаления\вставки записей в таблицу. Со вставкой конечно проблем особых нету, а при удалении нужно проверять сколько записей существует, т.к. в таблице 2 может быть много строк относящихся к записи в таблице 1.
Какие еще варианты?
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
10.09.2015, 15:01 | #7 |
Участник
|
Сделал через display method. По моему самый правильный вариант, хотя в некоторых случаях может приводить к огромной нагрузке, надо быть осторожней с ним ))
|
|
10.09.2015, 15:02 | #8 |
Участник
|
У меня есть безумная идея - перекрыть методы "insert" и "delete" в таблице 2.
|
|
10.09.2015, 16:19 | #9 |
Участник
|
|
|
10.09.2015, 16:38 | #10 |
Участник
|
Если нет желания связываться с дисплей методом или нужна возможность фильтрации по этому полю, то можно решить задачу через view. В запросе view сделать группировку по RecId таблицы 1 и посчитать количество связанных записей таблице 2. В поля view добавить RecId таблицы 1 и калькулируемое поле типа NoYes, которое будет в зависимости от количества связанных записей принимать значение 0 или 1. Затем на форме приджойнить нашу view к таблице 1 через RecId и вывести калькулируемое поле в грид.
|
|