08.05.2019, 10:17 | #1 |
Участник
|
.setTmpData не работает
Здравствуйте.
Столкнулся со странной ситуацией в Ax 2012 R3. Есть класс, наследник RunBase, с диалогом-формой. Класс выполняется на сервере. В конструкторе класса заполняется временная таблица InMemory с определёнными данными, передаётся в форму, пользователь может их откорректировать и по нажатию кнопки "ОК" передать в класс времянку с изменённными данными. Делаю всё, как обычно, в классе делаю метод X++: public void setTmpTable1(TmpTable1 _tmpTable1) { tmpTable1.setTmpData(_tmpTable1); } Но если написать так: X++: public void setTmpTable1(TmpTable1 _tmpTable1) { tmpTable1 = _tmpTable1; } Подскажите, пожалуйста, почему .setTmpData может не работать, а конструкция с присвоением - работает. А также, почему напрямую присваивать может быть плохо. Спасибо! |
|
08.05.2019, 10:53 | #2 |
Administrator
|
Первый вариант правильный, а отсутствие видимости данных означает, что Вы стоите не на той записи. Т.е. после setTmpData нужно будет еще select-ом спозиционироваться на нужную запись
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: mikki_messer (1). |
08.05.2019, 11:46 | #3 |
Участник
|
Цитата:
|
|
|
За это сообщение автора поблагодарили: mikki_messer (1). |
08.05.2019, 12:37 | #4 |
Участник
|
> А также, почему напрямую присваивать может быть плохо
Табличная переменная для временной таблицы в аксапте это и единичная запись и итератор (положение текущей записи) и все записи сразу. Если вы сделаете setTmpData то у вас будет отдельный курсор на те же данные - при навигации по нему при помощи next или выборках не будет изменяться исходный итератор и поля записи. Если просто присвоите переменную, то это будет тот же самый интератор и та же самая запись (соответственно, при любых манипуляциях его положение будет сбиваться). |
|
|
За это сообщение автора поблагодарили: mikki_messer (1). |
13.05.2019, 17:25 | #5 |
Участник
|
Цитата:
X++: public void setTmpTable1(TmpTable1 _tmpTable1) { tmpTable1.setTmpData(_tmpTable1); select firstOnly forUpdate tmpTable1; } Последний раз редактировалось mikki_messer; 13.05.2019 в 17:25. Причина: Добавил форматирование кода |
|
Теги |
ax 2012 r3 |
|
|