Показать сообщение отдельно
Старый 07.11.2011, 13:00   #12  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,443 / 1781 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от plumbum Посмотреть сообщение
еще помогает такая функция:
X++:
if (salesLine.isFormDataSource())
{
    salesLineDs = salesLine.dataSource();
    salesTableDs = Global::formGetParentDatasource(salesLineDs);
    salesTable = salesTableDs.cursor();
}
Акуратнее! Ds.cursor() вернёт ссылку на активную в данный момент запись. В случае же с display-методом необходимо получить ссылку на запись соответствующую обрабатываемой (обрабатываемая запись - это та самая запись, которая передаётся в качестве входного параметра, в случае если display-метод находится на датасурсе). Т.е. если display-метод выведен на грид, то он вызовется столько раз сколько строк поместится на экране. А активной, на протяжении всего этого времени, будет оставаться одна и таже запись.

Цитата:
Сообщение от plumbum Посмотреть сообщение
а то joinParent у меня в 4.0 не сработал
У меня тоже не работает. На AX2009 в display-методе на DataSource у входного параметра не получается определить joinParent. Интересно что JoinChild при тех же условиях работает.
В остальных НЕ display методах joinParent прекрасно работает.

Получается, что входной параметр, передающийся в display-метод, не содержит в себе некоторой нужной информации. Попробовал перенести display-метод на уровень таблицы, но this.joinParent() также ничего не вернул (т.е. поведение такое же как и в методе датасурса). Более того обнаружил также что this.isFormDataSource() внутри display-метода не признаётся что имеет отношение к источнику данных формы. Т.е. получется что display-метод вызывается в каком-то искуственном, урезанном контексте.