![]() |
#14 |
Участник
|
И хотя уважаемый S.Kuskov уже ответил на Ваш вопрос всё же приведу
пару дополнений, которые могут быть полезны новичку для понимания: 1.) Чтобы заполнить Set значениями Вам нужно будет в цикле перебрать все записи, которые на данный момент выбраны по активному запросу на форме, то есть, через актуальную на данный момент quеry. Вот так примерно будет выглядеть метод, заполняющий Set (для начала почитайте о том, как работать с Query и QueryRun, хотя бы на той же аксаптапедии) X++: QueryRun currentQueryRun; CustTable customer; ; currentQueryRun = CustTable_DS.queryRun(); while (currentQueryRun.next()) { if (currentQueryRun.changed(tablenum(CustTable))) { customer = currentQueryRun.get(tablenum(CustTable)); selectedCustomers.add(customer.RecId); } } 2.) Для всех отобранных по активному запросу на форме записей аксаптовский движок отрисовует записи на гриде, если контрол грида завязан на поле записи - его значение берется напрямую из записи, если на метод(через свойство dataMethod), то данный метод(display или edit) выполняется с значением записи(или точнее ссылкой на текущую, отобранную запись) в качестве параметра. Edit метод(в нашем случае) лезет в Set и проверяет, находится ли в нем RecId данной записи. И возвращает NoYes::No или NoYes::Yes, в зависимости от значения, которое вернул опрошенный движком edit метод, движок отображает чекбокс отмеченным(если метод вернул true) или нет. Так работает логика в случае отображения, то есть для edit метода в режиме отображения или для display метода, который предназначен исключительно для отображения(контролы, завязанные за display метод всегда read-only). Если посмотреть на сигнатуру edit метода, видно, что первый параметр логического типа и имеет название set, этот параметр дает понять для каких целей исполняется метод - для чтения или для изменения(записи). В случаях, когда система только отображает запись метод выполняется с значением set = false. В случаях, когда пользователь меняет значение в контроле, завязанном на edit метод(в Вашем случае - checkbox), движок аксапты исполняет данный метод с значением set = true и 3ьим параметром(в случае с edit-методами на уровне таблицы активная запись не передается и параметр значения - второй), который передает состояние контрола - то есть, введенное\установленное в нем значение(базовый тип этого параметра, равно как и тип возвращаемого значения метода, должен совпадать с типом допустимого контента связанного контрола, в нашем случае это чекбокс и возвращает он enum - NoYes). Так вот, в случае изменения значения контрола edit метод вызывается с set = true и значением NoYes типа, установленным в контроле. Edit метод проверяет, что он вызван на запись и добавляет в Set значение, если чекбокс был отмечен или убирает значение из Set, если галка на чекбоксе была снята(то есть, в зависимости от 3ьего параметра, параметра состояния NoYes типа). Ну и возвращает значение, чтобы отобразить состояние контрола.
__________________
Axapta has seduced me deadly! ![]() Последний раз редактировалось HorrR; 22.09.2012 в 01:33. |
|
|
За это сообщение автора поблагодарили: Nikit (1). |
|
![]() |
||||
Тема | Ответов | |||
Помогите новичку: импорт | 6 | |||
помогите новичку | 16 | |||
Помогите новичку. | 9 | |||
Помогите новичку Security keys | 4 | |||
Помогите новичку | 1 |
|