05.12.2012, 11:37 | #1 |
Участник
|
Tutorial Form. Непонятное влияние на таблицу.
При открытии формы tutorial_AuctionBids поле Auctioner отображает значение из первой строки таблицы tutorial_AuctionItems
Если на форме вставить в это поле другое значение, то после закрытия формы первая строка в таблице обновится в соответствии с ним. Таким образом, добавить строку в таблицу, используя эту форму, невозможно, при этом форма портит данные в таблице без подтверждения. Прошу объяснить, в чем смысл такой работы формы и в каком случае такое поведение требуется. |
|
05.12.2012, 12:02 | #2 |
Участник
|
А что за версия у вас? Я в стандарте не нахожу такой формы.
|
|
05.12.2012, 12:07 | #3 |
Участник
|
Axapta 3.0 SP 4
Насколько я понял это поведение любой формы по умолчанию, т.к. на tutorial_AuctionBids нет перекрытых методов, которые могли бы влиять на этот результат.
__________________
Axapta 3.0 SP 4 Последний раз редактировалось bodeaux; 05.12.2012 в 12:12. |
|
05.12.2012, 12:28 | #4 |
Участник
|
это нормальное поведение, когда при переходе на другую строку( или закрытие формы или нажатие кнопки), измененная текущая строка записывается
|
|
|
За это сообщение автора поблагодарили: bodeaux (1). |
05.12.2012, 12:44 | #5 |
Участник
|
Это имеет смысл, если данная форма - подчиненная. Вызывается из формы со списком по таблице tutorial_AuctionItems. Ну, например, добавить кнопку вызова в форму tutorial_AuctionItems. Т.е. выбор конкретной записи таблицы tutorial_AuctionItems происходит в родительской форме
Правда, для такой работы на таблице tutorial_AuctionItems должен быть Primary Key или Relation по которому и организуется автоматическая связка. Здесь этого нет, поскольку цель данной формы несколько другая. Собственно, это действительно стандарт. Ну, например, вызов формы "Строк" из любого "Журнала". Правда, обычно, поля из "головной" таблице в подчиненной форме отображаются только на просмотр. Но никто не запрещает давать возможность их редактировать
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: bodeaux (1). |
05.12.2012, 12:51 | #6 |
Участник
|
Я согласен, что такое поведение ожидаемо и понятно, если поле расположено на гриде, где выведены все (нужные) строки таблицы.
Дело в том, что в данном случае поле Auctioner просто выведено как отдельное поле и сложно предсказать, на что оно повлияет. Как известно, если в свойствах поля формы указать не конкретный столбец таблицы, а EDT (в данном случае подойдет CustAccount), то поведение формы для пользователя останется прежним, но пропадет эффект замены значения поля в таблице. Однако, при этом появляется отступление от BestPractice: Unknown data field or data method on data source 'AuctionItems'. Подскажите, можно ли реализовать поле на форме так, чтобы: 1. была возможность выбора из выпадающего списка (значений поля таблицы); 2. поле в таблице (помещенной в DS) не изменялось при выборе нового значения; 3. были соблюдены BestPractice. Добавлено позже: просто я перестарался, не нужно указывать DS в свойствах поля и все ок
__________________
Axapta 3.0 SP 4 Последний раз редактировалось bodeaux; 05.12.2012 в 13:19. |
|
05.12.2012, 13:38 | #7 |
Участник
|
Ещё такие "отдельные" контролы можно реализовывать на базе edit-методов.
1) в ClassDeclaration формы объявляем переменную. 2) в методах формы создаём edit-метод, который отображает/изменяет переменную 3) перетаскиваем метод на дизайн формы. Плюсы такого подхода. Хранение и доступ к данным не связан с логикой их отображения. Нет необходимости выставлять свойство AutoDeclaration. Можно иметь несколько контролов связанных с одной и той же переменной. |
|
|
За это сообщение автора поблагодарили: bodeaux (1). |