AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.04.2023, 12:13   #1  
Aleksey2020 is offline
Aleksey2020
Участник
 
14 / 10 (1) +
Регистрация: 25.02.2020
Не переходит к следующей записи датасорса
Прогоняю по нажатию кнопки на форме цикл по отмеченным записям. пока не вызываю класс внутри перебираются все записи, но если вызываю класс по печати отчёта, то отрабатывает только одна. Куда копать?
Выдаётся эксель отчёт и цикл заканчивается на одной записи..
Старый 28.04.2023, 12:14   #2  
Pandasama is offline
Pandasama
Участник
 
448 / 133 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
Извините, но ничего не понятно.
"не переходит к следующей" - в классе?
Покажите код, где в классе перебираете. Покажите, как в класс курсор передаете.
Старый 28.04.2023, 12:43   #3  
Aleksey2020 is offline
Aleksey2020
Участник
 
14 / 10 (1) +
Регистрация: 25.02.2020
Код кнопки на форме стандартный по обходу датасорса for (record = table_ds.getFirst(true)?..table_ds.getNext()) { вызываем класс печати отчёта Printclass = new.. printclass.run();} несмотря на отмеченные несколько записей точка останова в цикл после формирования экселя не попадает. Если вместо формирования отчёта пишу info(), то попадает столько раз, сколько записей отмечено
Старый 28.04.2023, 13:06   #4  
Pandasama is offline
Pandasama
Участник
 
448 / 133 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
по-прежнему не очень понятно
Старый 28.04.2023, 13:24   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Скорее всего класс Printclassс где-то внутри себя портит переданный ему курсор. Попробуйте передавать в класс печати копию курсора. Для этого объявите ещё одну переменную табличного типа и проинициализируйте её через метод data
За это сообщение автора поблагодарили: Pandasama (3), Aleksey2020 (1).
Старый 22.05.2023, 12:02   #6  
Aleksey2020 is offline
Aleksey2020
Участник
 
14 / 10 (1) +
Регистрация: 25.02.2020
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Скорее всего класс Printclassс где-то внутри себя портит переданный ему курсор. Попробуйте передавать в класс печати копию курсора. Для этого объявите ещё одну переменную табличного типа и проинициализируйте её через метод data
Благодарю, действительно ломался датасорс формы в классе печати. Не ожидал, что передавая запись в другой класс как record за ней тащатся все отмеченные строки датасорса. Ещё и возвращаются испорченные. Спасибо.
Старый 28.04.2023, 17:36   #7  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
А ответы по теме Передать выборку по таблице из класса в класс не помогли,
Или тут что-то другое?
В любом случае, код, которые есть в методе getFormRecord класса FormLetterне помню чтобы когда-то подводил.
Правда там нужно сразу передавать переменную датасорса, но ей сполне можно получить из курсора (конечно с проверкой что передан курсор именно по датасорсу).
Старый 28.04.2023, 18:33   #8  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,651 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Если я правильно понял, то у него есть класс-отчета, который формирует отчет по одной записи таблицы. И ему надо выбрать несколько записей на форме и по каждой из них сформировать по отдельному отчету

Т.е. не стоит задача передать в класс-отчета список. В отчет всегда передается одна запись. И, вероятно, что-то там с этой записью происходит из-за чего "следующую" запись в цикле уже просто не находит.

Т.е. тут совет от S.Kuskov подходит. Или передавать в класс не напрямую запись из DataSource или уже в классе при получении запись сделать ее "перевыбор" (через Find()), чтобы разорвать связь с DataSource

В идеале, передавать в класс-отчета не саму запись, а ее идентификатор (RecId или номер документа). Тогда такой проблемы вообще не возникнет.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 29.04.2023, 14:16   #9  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Ну, если так, то да - без просмотра кода выборки и кода работы с курсором в классе отчета понять сложно.
Ну и, без информации о том, что за формирование Excel (SSRS с сохранением, использование OpenXML, использование чего-то типа стандартных классов формирования Excel или вообще прямая работа с COM или NET) подсказать что-то невозможно.

PS: хотя, возможно, что для автора русский язык не является родным и ему проще задать вопрос хотя бы на английском?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка записи в SalesParmSubLine FrolovAndy DAX: Программирование 2 09.01.2018 15:48
Курсор перешел к следующей записи на клиенте, на сервере этого сделать уже нельзя PavelSR DAX: Программирование 22 01.11.2012 07:33
Существование следующей записи в запросе PavelSR DAX: Программирование 24 28.09.2006 11:39
Отчет: перекрытие fetch() убивает буфер записи в display-методе Zabr DAX: Программирование 1 18.02.2005 18:45
Автоматическое увеличение значения поля при создании новой записи. sguryev DAX: Программирование 3 06.02.2003 14:00
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:07.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.