23.08.2006, 11:24 | #1 |
Программатор
|
Выделенные записи на форме в отчёт/форму
Доброго времени суток, уважаемые Дамы и Господа!!! Вопрос состоит в следующем.
На моей форме есть грид. Выбираю на гриде несколько записей и нажимаю (например) кнопку "В отчёт", Эта кнопка - меню итем от моего отчёта.На кнопке указан датасорс грида(формы).Как мне в отчёте перебрать по очереди эти записи и что то с ними сделать...? С уважением - Sada... |
|
23.08.2006, 11:38 | #2 |
Участник
|
Где-то так
X++: FormRun fr; FormDatasource fds; Common c; ; fr = this.args().caller(); if (fr) { fds = fr.dataSource(); c=fds.getFirst(1); while (c) { // здесь делаете что вам надо с полученной записью c = fds.getNext(); } }
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 23.08.2006 в 11:49. Причина: Дополнение |
|
23.08.2006, 11:57 | #3 |
Программатор
|
Почиму то таблица не та берется. Мне нада пройтись по строкам (мой грид)(таблица InventJournalTrans), а в С пишет InventJournalTable...
|
|
23.08.2006, 12:14 | #4 |
Участник
|
Наверное, ваш датасоурс не первый на форме. Модернизируем
X++: FormDatasource fds; Common c; ; fds = this.args().record().dataSource(); if (fds) for (c=fds.getFirst(1) ? fds.getFirst(1) : this.args().record(); c;c=fds.getNext()) { info(int2str(c.(fieldnum(common, recId)))); }
__________________
Axapta v.3.0 sp5 kr2 |
|
23.08.2006, 12:21 | #5 |
Модератор
|
Ловите.
Все работает прекрасно. Уф-ф-ф. Хоть программирование немного вспомнил Георгий. |
|
|
За это сообщение автора поблагодарили: Geo (1). |
23.08.2006, 12:23 | #6 |
Модератор
|
Там все очень просто: нарисовал формочку и отчет по CustTable, сделал менюайтем, разрешил на нем мультиселект. По нажатию открывается отчет, в котором перекрыт фетч. На фетче берется родительский датасорс и идет перебор по выделенным записям. Просто, как и все гениальное
С Уважением, Георгий |
|
23.08.2006, 12:32 | #7 |
Модератор
|
Блин. Sada!
А что Вы мозги-то тренируете? Почему пользователи не могут выделить записи и нажать, например - автоотчет? Группа полей для автоотчета задается на таблице. С Уважением, Георгий |
|
23.08.2006, 12:34 | #8 |
Программатор
|
Секунду, секунду. Сейчас будем смотреть
|
|
23.08.2006, 13:09 | #9 |
Программатор
|
Ё маё.... И AndyD прав и George Nordic.
Пашол увальнятся... |
|
22.12.2008, 12:56 | #10 |
Участник
|
Помогите, срочно нада.
Цитата:
Сообщение от Sada
Доброго времени суток, уважаемые Дамы и Господа!!! Вопрос состоит в следующем.
На моей форме есть грид. Выбираю на гриде несколько записей и нажимаю (например) кнопку "В отчёт", Эта кнопка - меню итем от моего отчёта.На кнопке указан датасорс грида(формы).Как мне в отчёте перебрать по очереди эти записи и что то с ними сделать...? С уважением - Sada... Пример: на форме SalesTable выбираем несколько строк, затем нажимаем на кнопку "Выбранные" , открывается форма только с выбранными строками. |
|
22.12.2008, 13:05 | #11 |
Боец
|
По нажатию на кнопку "Выбранные" передаем датасорс в нужную вам форму, пробегаемся по нему циклом типа
X++: for (c=fds.getFirst(1) ? fds.getFirst(1) : this.args().record(); |
|
22.12.2008, 13:15 | #12 |
Участник
|
Цитата:
Собсно интересует заполнение в цикле X++: SalesTable table; ; super(); fds = caller.dataSource(); for (table = fds.getFirst(1) ? fds.getFirst(1) : fds.cursor(); table; table = fds.getNext()) { // чевототам } |
|
|
За это сообщение автора поблагодарили: wojzeh (1). |
22.12.2008, 13:21 | #13 |
Боец
|
Датасорс на второй форме какой? такой же как и на первой?
Что должно происходить далее с этими выделенными записями на 2й форме, после того как они нарисуются? просто их показать и закрыть форму? |
|
22.12.2008, 13:27 | #14 |
Участник
|
Вторая форма также состоит из 3х датасорсов: SalesTable, SalesLine, InventDim.
Форма самописная, дизайном отличается от формы заказов. На ней так же должны быть возможны манипуляции со строками заказов |
|
22.12.2008, 13:44 | #15 |
Боец
|
Мдя, это не гуд. И если правильно, то по-простому сделать не пулучится...
Выкрутиться можно так: Собрать из 1й формы все выделенные записи, а вернее собрать их RecId (Надеюсь выделяться будут только записи из SalesTable...). Во второй форме наложить фильтр (Range)на кверю по собранным RecId. Такой подход хорош простотой и надежностью, но плох тем, что в Range не поулчится наложить критериев (RecId's) больше чем... вроде 255 с чем-то - не помню точно. Т.е. при этом подходе пользователь сможет выделить не больше ~255 записей в один заход. Зато просто, надежно, быстро... + можно ему месагу кинуть, типо "выдели строк по-меньше, остальные другим заходом" |
|
22.12.2008, 13:50 | #16 |
MCITP
|
Цитата:
Сообщение от DSPIC
Мдя, это не гуд. И если правильно, то по-простому сделать не пулучится...
Выкрутиться можно так: Собрать из 1й формы все выделенные записи, а вернее собрать их RecId (Надеюсь выделяться будут только записи из SalesTable...). Во второй форме наложить фильтр (Range)на кверю по собранным RecId. Такой подход хорош простотой и надежностью, но плох тем, что в Range не поулчится наложить критериев (RecId's) больше чем... вроде 255 с чем-то - не помню точно. Т.е. при этом подходе пользователь сможет выделить не больше ~255 записей в один заход. Зато просто, надежно, быстро... + можно ему месагу кинуть, типо "выдели строк по-меньше, остальные другим заходом" Правда никто не мешает делать их (рэнджей) несколько...
__________________
Zhirenkov Vitaly |
|
22.12.2008, 14:00 | #17 |
Участник
|
|
|
22.12.2008, 14:14 | #18 |
Боец
|
Цитата:
Один рэндж длиной максимум 250 символов.
Правда никто не мешает делать их (рэнджей) несколько... (2x125 или 1x250) - если в сумме получалась магическая цифра немногим больше 250 то запрос не проходил... Точно не могу утверждать - давно было, и не помню - в 3-ке или 4ке. Нужно повторять эксперимент... |
|
22.12.2008, 15:03 | #19 |
MCITP
|
Цитата:
Сообщение от DSPIC
Может прозвучит нелогично, но помнится, когда я с этим экспериментировал, получалось ограничение именно на количество рэнджей, а не на длину в 250 символов. При этом было не важно, сколько самих рэнджей на одно поле наложить:
(2x125 или 1x250) - если в сумме получалась магическая цифра немногим больше 250 то запрос не проходил... Точно не могу утверждать - давно было, и не помню - в 3-ке или 4ке. Нужно повторять эксперимент...
__________________
Zhirenkov Vitaly |
|
22.12.2008, 15:08 | #20 |
MCITP
|
Цитата:
Если нет, то может вам их стоит рассмотреть вариант просто как-то помечать в стандартной форме (поле например завести какое-то с номером текущей сессии, есть много разных вариантов), а потом открывать во "второй" форме уже помеченные_нужным_образом записи. Не скажу, что это очень красиво, но возможно вам понравится.
__________________
Zhirenkov Vitaly |
|
|
|