05.02.2009, 17:33 | #1 |
Участник
|
Вопрос по InventJournalTrans_ds.getNext()
Всем добрый день , есть такой пример на форме InventJournalCount на кнопке:
for (InventJournalTrans = InventJournalTrans_ds.getFirst(true) ? InventJournalTrans_ds.getFirst(true) : InventJournalTrans_ds.cursor(); InventJournalTrans; InventJournalTrans = InventJournalTrans_ds.getNext()) { InventJournalTrans.Counted = _MDCount InventJournalTrans_ds.write(); } InventJournalTrans_ds.write() - Вызвается только для активной строки, то есть та которую я первую выделил в гриде. можно ли как то сделать, чтобы write вызывался по очереди для всех выделенных строк? спасибо |
|
05.02.2009, 17:36 | #2 |
Участник
|
Вам просто нужно не с источником работать, а с записями
Вы получаете текущую (в цикле) запись в переменную InventJournalTrans В ней меняйте поле, и обновляйте запись А после того, как цикл закончится, вызовите InventJournalTrans_ds.research() (если у вас есть параметр retainCurrentPosition, укажите true) |
|
05.02.2009, 17:47 | #3 |
Участник
|
в том то и дело что мне не подходит этот вариант ( у меня на write на датасорсе много чего весит. и нужно чтобы этот метод вызвался .
|
|
05.02.2009, 18:02 | #4 |
Злыдни
|
Может, все то, что висит на write датасорса, оформить в отдельный метод и вызывать его?
__________________
Все может быть и быть все может, все может быть или не быть, но быть того никак не может, чего совсем не может быть. |
|
05.02.2009, 18:16 | #5 |
Moderator
|
Приходилось решать задачку в подобной не-БэстПрактисной постановке. Решением, конечно, не горжусь, но оно как-то работает и выручает. Сделал примерно так:
X++: FormDataSource formDataSource; Common common; int i; ............. // неявный цикл по строкам грида (явный - по датасорсу) i = 0; for ( common = formDataSource.getFirst() ? formDataSource.getFirst() : formDataSource.cursor(); common ; common = formDataSource.getNext() ) { if (i==0) formDataSource.first(); else formDataSource.next(); // bla-bla-bla formDataSource.write(); formDataSource.reread(); formDataSource.refresh(); i++; } P.P.S. Если только не попробовать быстренько отфильтровать выделенные записи (чтобы в гриде остались только они), пробежаться по ним, восстановить фильтрацию перед пробежкой и восстановить выделение... (не более, чем на уровне реплики мозгового штурма) |
|
|
За это сообщение автора поблагодарили: propeller (1). |
05.02.2009, 18:58 | #6 |
Участник
|
Ну, другой вариант - получать датасорс этой записи
Попробуйте так: X++: InventJournalTrans.dataSource().write(); Логика НЕ должна быть написана на формах!! |
|
06.02.2009, 10:32 | #7 |
Ищущий знания...
|
Абсолютно согласен! Лучше переделать на правильное. А то потом в дальнейшем проблемы будут наростать, и все больше изощрений придется придумывать.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
06.02.2009, 14:11 | #8 |
Участник
|
К слову. Заметил однажды. Данный код:
X++: record.dataSource().write(); X++: record_ds.write(); Также, если перекрыт метод modified() поля источника данных, то при таком вызове X++: record_ds.object(fieldNum(Table, Field)).modified() Если логика, реализуемая методами write(), modified() и т.п., связана не с конкретной формой, а с данными хранящимися в таблице, то перекрывать стоит методы не формы а таблицы! Последний раз редактировалось S.Kuskov; 06.02.2009 в 14:30. |
|
06.02.2009, 16:07 | #9 |
Участник
|
Хмм. У меня работает (АХ6)
А если так попробовать? X++: FormDataSource fds; fds = InventJournalTrans.dataSource(); fds.write(); |
|
06.02.2009, 17:33 | #10 |
Участник
|
X++: FormDataSource fds; fds = InventJournalTrans.dataSource(); fds.write(); Цитата:
FormObjectSet class.
The base class for the FormDataSource Class. FormObjectSet provides basic functionality for working with the data source(s) on a form FormObjectSet.write() This method has no functionality in the FormObjectSet class. It is overridden by the FormDataSource.write method, which manages the database write operation. |
|
06.02.2009, 20:01 | #11 |
Moderator
|
|
|
14.02.2009, 16:31 | #12 |
Участник
|
|
|