|
|
#1 |
|
Программатор
|
Выделенные записи на форме в отчёт/форму
Доброго времени суток, уважаемые Дамы и Господа!!! Вопрос состоит в следующем.
На моей форме есть грид. Выбираю на гриде несколько записей и нажимаю (например) кнопку "В отчёт", Эта кнопка - меню итем от моего отчёта.На кнопке указан датасорс грида(формы).Как мне в отчёте перебрать по очереди эти записи и что то с ними сделать...? С уважением - Sada... |
|
|
|
|
#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. Причина: Дополнение |
|
|
|
|
#3 |
|
Программатор
|
Почиму то таблица не та берется. Мне нада пройтись по строкам (мой грид)(таблица InventJournalTrans), а в С пишет InventJournalTable...
|
|
|
|
|
#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 |
|
|
|
|
#5 |
|
Модератор
|
Ловите.
Все работает прекрасно. Уф-ф-ф. Хоть программирование немного вспомнил ![]() Георгий. |
|
|
|
| За это сообщение автора поблагодарили: Geo (1). | |
|
|
#6 |
|
Модератор
|
Там все очень просто: нарисовал формочку и отчет по CustTable, сделал менюайтем, разрешил на нем мультиселект. По нажатию открывается отчет, в котором перекрыт фетч. На фетче берется родительский датасорс и идет перебор по выделенным записям. Просто, как и все гениальное
![]() С Уважением, Георгий |
|
|
|
|
#7 |
|
Модератор
|
Блин. Sada!
А что Вы мозги-то тренируете? Почему пользователи не могут выделить записи и нажать, например - автоотчет? ![]() Группа полей для автоотчета задается на таблице. С Уважением, Георгий |
|
|
|
|
#8 |
|
Программатор
|
Секунду, секунду. Сейчас будем смотреть
|
|
|
|
|
#9 |
|
Программатор
|
Ё маё....
И AndyD прав и George Nordic. Пашол увальнятся...
|
|
|
|
|
#10 |
|
Участник
|
Помогите, срочно нада.
Цитата:
Сообщение от Sada
Доброго времени суток, уважаемые Дамы и Господа!!! Вопрос состоит в следующем.
На моей форме есть грид. Выбираю на гриде несколько записей и нажимаю (например) кнопку "В отчёт", Эта кнопка - меню итем от моего отчёта.На кнопке указан датасорс грида(формы).Как мне в отчёте перебрать по очереди эти записи и что то с ними сделать...? С уважением - Sada... Пример: на форме SalesTable выбираем несколько строк, затем нажимаем на кнопку "Выбранные" , открывается форма только с выбранными строками. |
|
|
|
|
#11 |
|
Боец
|
По нажатию на кнопку "Выбранные" передаем датасорс в нужную вам форму, пробегаемся по нему циклом типа
X++: for (c=fds.getFirst(1) ? fds.getFirst(1) : this.args().record(); |
|
|
|
|
#12 |
|
Участник
|
Цитата:
Собсно интересует заполнение в цикле X++: SalesTable table;
;
super();
fds = caller.dataSource();
for (table = fds.getFirst(1) ? fds.getFirst(1) : fds.cursor();
table;
table = fds.getNext())
{
// чевототам
} |
|
|
|
| За это сообщение автора поблагодарили: wojzeh (1). | |
|
|
#13 |
|
Боец
|
Датасорс на второй форме какой? такой же как и на первой?
Что должно происходить далее с этими выделенными записями на 2й форме, после того как они нарисуются? просто их показать и закрыть форму? |
|
|
|
|
#14 |
|
Участник
|
Вторая форма также состоит из 3х датасорсов: SalesTable, SalesLine, InventDim.
Форма самописная, дизайном отличается от формы заказов. На ней так же должны быть возможны манипуляции со строками заказов |
|
|
|
|
#15 |
|
Боец
|
Мдя, это не гуд. И если правильно, то по-простому сделать не пулучится...
Выкрутиться можно так: Собрать из 1й формы все выделенные записи, а вернее собрать их RecId (Надеюсь выделяться будут только записи из SalesTable...). Во второй форме наложить фильтр (Range)на кверю по собранным RecId. Такой подход хорош простотой и надежностью, но плох тем, что в Range не поулчится наложить критериев (RecId's) больше чем... вроде 255 с чем-то - не помню точно. Т.е. при этом подходе пользователь сможет выделить не больше ~255 записей в один заход. Зато просто, надежно, быстро... + можно ему месагу кинуть, типо "выдели строк по-меньше, остальные другим заходом"
|
|
|
|
|
#16 |
|
MCITP
|
Цитата:
Сообщение от DSPIC
Мдя, это не гуд. И если правильно, то по-простому сделать не пулучится...
Выкрутиться можно так: Собрать из 1й формы все выделенные записи, а вернее собрать их RecId (Надеюсь выделяться будут только записи из SalesTable...). Во второй форме наложить фильтр (Range)на кверю по собранным RecId. Такой подход хорош простотой и надежностью, но плох тем, что в Range не поулчится наложить критериев (RecId's) больше чем... вроде 255 с чем-то - не помню точно. Т.е. при этом подходе пользователь сможет выделить не больше ~255 записей в один заход. Зато просто, надежно, быстро... + можно ему месагу кинуть, типо "выдели строк по-меньше, остальные другим заходом" ![]() Правда никто не мешает делать их (рэнджей) несколько...
__________________
Zhirenkov Vitaly |
|
|
|
|
#17 |
|
Участник
|
|
|
|
|
|
#18 |
|
Боец
|
Цитата:
Один рэндж длиной максимум 250 символов.
Правда никто не мешает делать их (рэнджей) несколько... (2x125 или 1x250) - если в сумме получалась магическая цифра немногим больше 250 то запрос не проходил... Точно не могу утверждать - давно было, и не помню - в 3-ке или 4ке. Нужно повторять эксперимент... |
|
|
|
|
#19 |
|
MCITP
|
Цитата:
Сообщение от DSPIC
Может прозвучит нелогично, но помнится, когда я с этим экспериментировал, получалось ограничение именно на количество рэнджей, а не на длину в 250 символов. При этом было не важно, сколько самих рэнджей на одно поле наложить:
(2x125 или 1x250) - если в сумме получалась магическая цифра немногим больше 250 то запрос не проходил... Точно не могу утверждать - давно было, и не помню - в 3-ке или 4ке. Нужно повторять эксперимент...
__________________
Zhirenkov Vitaly |
|
|
|
|
#20 |
|
MCITP
|
Цитата:
![]() Если нет, то может вам их стоит рассмотреть вариант просто как-то помечать в стандартной форме (поле например завести какое-то с номером текущей сессии, есть много разных вариантов), а потом открывать во "второй" форме уже помеченные_нужным_образом записи. Не скажу, что это очень красиво, но возможно вам понравится.
__________________
Zhirenkov Vitaly |
|
|
|
|
|