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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.12.2006, 16:03   #1  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
? Копирование строк в форме
Простите за нелепый вопрос...Хотелось бы спросить совет.
Есть форма , также существует checkbox. Так вот,нужно отметить нужные строки , и сохранить их...
Я выбрала временную таблицу...Чтобы дальше запускать класс по скопированным значениям..
Можно обойтись ещё чем-либо кроме темповских таблиц? Мэпы или контейнеры... что лучше?
Старый 15.12.2006, 16:12   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Как делаю я:
1. если необходимо просто повыбирать строки - использую кнопки с multiSelect = Yes. ( то есть просто строки выбираем, а дальше getField(true) и поехали)
2. Если таки хотят галочки в форме и по галочке выбирать, то использую Set в который помещаю RecId строк.
3. Если нужно помимо галочки (выбор записи) еще заполнить какое-то значение по строке, то использую Map (RecId, тип Значения - обычно у меня - дата )
4. Если нужно что-то другое, использую временную таблицу.
За это сообщение автора поблагодарили: e@gle (1).
Старый 15.12.2006, 16:14   #3  
e@gle is offline
e@gle
MCTS
MCBMSS
 
164 / 72 (3) ++++
Регистрация: 11.04.2005
Адрес: Минск
Посмотрите как организовано похожее копирование Расчеты с поставщиками -> Закупка -> Функции -> Копирование из всех.
Но имхо здесь подходят лучше всего временные таблицы.
Старый 15.12.2006, 16:18   #4  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Ну мне нужны галочки, чтобы пользователь видел, что навыбирал... И сохранить номер журнала.. для последующего экспорта выбранного журнала в 1С.
Значит, всё-таки Мэп...
А я так вот запихивала во временную таблицу.. Зря значит...(.

edit NoYes ERG_JournalMarker(boolean _set,
InventJournalTable _inventJournalTable,
NoYes _value)
{
;
select firstonly JournalMarker
where JournalMarker.JournalId == _inventJournalTable.JournalId;
if (_set)
{
if (_value)
{
if (! JournalMarker)
{
JournalMarker.JournalId = _inventJournalTable.JournalId;
JournalMarker.insert();
}
}
else
{
delete_from JournalMarker where
JournalMarker.JournalId == _inventJournalTable.JournalId;
}
}
if (JournalMarker)
_value = NoYes::Yes;
else
_value = NoYes::No;
return _value;
}
Старый 15.12.2006, 16:24   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от fialka Посмотреть сообщение
Ну мне нужны галочки, чтобы пользователь видел, что навыбирал... И сохранить номер журнала.. для последующего экспорта выбранного журнала в 1С.
Значит, всё-таки Мэп...
Номер журнала ведь уникальный - значит можно и set = new Set(Types::String) и в него запихивать номер журнала. (можно и RecId, но для этого должен быть включен индекс по RecId на таблице)
Старый 15.12.2006, 16:34   #6  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Номер журнала ведь уникальный - значит можно и set = new Set(Types::String) и в него запихивать номер журнала. (можно и RecId, но для этого должен быть включен индекс по RecId на таблице)
А можно какой-нибудь простецкий пример...
Старый 15.12.2006, 16:40   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Форма \Forms\HRMVirtualNetworkDismiss
в ней ищите по ключевому слову markedSet
Старый 15.12.2006, 16:42   #8  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Спасибо
Старый 18.12.2006, 10:42   #9  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Как делаю я:
1. если необходимо просто повыбирать строки - использую кнопки с multiSelect = Yes. ( то есть просто строки выбираем, а дальше getField(true) и поехали)
2. Если таки хотят галочки в форме и по галочке выбирать, то использую Set в который помещаю RecId строк.
3. Если нужно помимо галочки (выбор записи) еще заполнить какое-то значение по строке, то использую Map (RecId, тип Значения - обычно у меня - дата )
4. Если нужно что-то другое, использую временную таблицу.
А можно пример...с set...вот есть поле какой-нибудь "Маркер", если выбрали галочку на этой строке, то нужно отправить в контейнер...
можно что-нибудь для примера, где можно посмотреть?
Старый 18.12.2006, 11:24   #10  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от fialka Посмотреть сообщение
А можно пример...с set...вот есть поле какой-нибудь "Маркер", если выбрали галочку на этой строке, то нужно отправить в контейнер...
можно что-нибудь для примера, где можно посмотреть?
Пример - я же выше дал очень хороший пример, где приведен весь необходимый код.
Попробую описать последовательность шагов, которые нужно выполнить.

1. Объявляем в classDeclaration формы переменную типа Set markedSet;
2. В init формы, к примеру, инициализируем ее - markedSet = new Set(Types::Integer);
3. Делаем edit-method типа NoYes на источнике, и в коде этого метода пишем следующий код (похожий):
X++:
if (_set)
{
    if (_value)
        markedSet.add(_currentTableRecord.RecId); //или другое ключевое поле, по которому есть метод find
    else
        markedSet.remove(_currentTableRecord.RecId);
}
return markedSet.in(_currentTableRecord.RecId); //возвращает true или false
Потом, скажем, в методе closeOK (если это что-то типа диалоговой формы), необходимо перебрать и обработать.

X++:
    SetIterator si = new SetIterator(markedSet);
    PurchLine purchLine;
    ;
    ttsbegin;
    si.begin(); // переходим к первому элементу множества
    while (si.more()) //перебираем все элементы
    {
        purchLine = PurchLine::findRecId(si.value(), true);
        purchLine.PurchReceivedNow = 1;
        purchLine.update();
        si.next();
    }
    ttscommit;
// Здесь si.value() содержит RecId отмеченных записей
Вы что-то писали про засунуть в контейнер - я не совсем понял, про какой контейнер речь - про железный контейнер, то есть, к примеру, отбираем те строки, товар по которым отгружаем, или про Axapta container, то есть хотим хранить больше одного значения? Если второе, то вам не к п.2, а к п.3 или п.4
Старый 18.12.2006, 13:36   #11  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
спасибо, за разжевывание..)
Всё получилось.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Фильтр строк подчиненной таблицы на форме demon46 DAX: Программирование 4 15.07.2008 15:41
Как не выводить заголовки в форме, если нет строк? DreamCreator DAX: Программирование 9 29.05.2008 15:10
Тормозит копирование строк в буфер обмена ivas DAX: Программирование 20 21.08.2007 15:05
Количество строк на форме greench DAX: Программирование 7 25.07.2007 12:00
БАГ: копирование строк накладных в новый заказ Антон Солдатов DAX: Функционал 2 03.12.2004 09:02
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:34.