Показать сообщение отдельно
Старый 09.03.2021, 13:22   #8  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,275 / 3476 (122) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
как лучше это сделать так, чтобы не сломать остальную функциональность аксапты?
Поделюсь опытом, как это делал я.
Вариант 1. Стандартная форма, нестандартный вызов. Например, вызываем форму InventTrans из своей формы, в которой есть строки с номенклатурами. В этом случае в своей форме в методе jumRef пишем что-то типа
X++:
    Args                 args;
    Query                query;
    QueryBuildDataSource qbds;
    ;
    query = new Query();
    qbds = query.addDataSource(tableNum(InventTransOrigin));
    qbds.addRange(fieldNum(InventTransOrigin, InventTransId)).value(queryValue(_inventTransId));
    args = new Args();
    args.initialQuery(InitialQueryParameter::createByQuery(query));
    MenuFunction::runClient(menuitemDisplayStr(InventTrans), MenuItemType::Display, true, args);
Класс InitialQueryParameter появился в АХ с тех пор, как появилось Избранное и стало возможно в избранном менять запрос. Т.е. с 4.0

Для некоторых случаев есть уже готовые методы типа
X++:
InventJournalFormTable::jumpRefReferenceId(inventJournalTable.JournalId);
Еще есть вариант (если нужно чего-то сделать с датасорсами) - написать код по аналогии с формой SysTableBrowser, там достучаться до датасорса и уже с ним чего-то делать

Вариант 2. Стандартная / малоизмененная форма, свой вызов. Добавили новое поле в форму CustTable и хотим по нему сделать свой переход. Тогда есть 2 решения - либо как в Варианте 1, либо на init формы / датасорса уже открываемой формы анализировать методы класса Args: caller / lookupField / record / lookupValue, которые уж несложно заполнить из jumpRef-а вызываемой формы
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 09.03.2021 в 13:52.