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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.04.2006, 18:48   #1  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,347 / 996 (38) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от gl00mie
Все-таки, как можно увязать changecompany и display-метод на таблице?
Собственно, у меня пока получается следующая ситуация: на форме нужно показывать данные, которые как-то вычисляются по другим данным в строке и по другим таблицам. Для этого выбран, как мне казалось, наиболее подходящий выход - в grid добавлено дополнительное поле, которое связано с display-методом. В условиях того, что форма может быть открыта в одной компании, пользователь переключится на другую компанию, и тогда display-метод при перерисовке формы будет вызываться в контексте другой компании и показывать лажу, необходимо его всегда выполнять в "нужной" компании - той, в которой была открыта форма, например. С одной стороны, видится простое решение: в ClassDeclaration формы добавляется переменная - код компании, она инициализируется с помощью init() формы, затем display-метод использует эту переменную. все бы хорошо, но в моем случае использовать display-метод на чем-то, связанном с формой (читай, на DataSource), не выходит - метод показывает фигню, потому что для разных строк использует одни и те же данные, ведь DataSource ссылается на какую-то одну запись (строку), а в гриде этих строк может быть больше одной... Чтобы таких визуальных глюков не было, был использован display-метод таблицы, а не DataSource'а (в моем случае SalesLine). Все работает замечательно, показывается то, что нужно, вот только мне не приходит в голову, как в метод таблицы, вызываемый без параметров, передать информацию о том, в контексте какой "правильной" компании он должен отрабатывать, - ведь у SalesLine нет доступа к переменным, объявленным в форме И дополнительную "переменную" в SalesLine не заведешь - это же таблица, там только поля записи. Что же остается, создавать в форме временную таблицу, заполнять ее, когда заполняется grid строчной части формы, и потом брать данные оттуда? И все это - только чтобы отобразить лишнее "вычисляемое" поле в строке?
Ничего не понял. Давайте конкретно обсуждать, где и что Вы хотите увидеть?
__________________
Isn't it nice when things just work?
Старый 10.04.2006, 10:22   #2  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5813 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от macklakov
Ничего не понял. Давайте конкретно обсуждать, где и что Вы хотите увидеть?
Стало быть, ситуация такая:
  1. В гриде на форме SalesTable, в части, где выводятся строки заказа, мне необходимо отображать по каждой строке дополнительную информацию, вычисляемую динамически в зависимости от того, что в эту строку вбито (номенклатура, комбинация номенклатурных и складских аналитик, etc).
  2. Был обнаружен один побочный эффект: при вызове формы в другой компании (через внутренние расчеты, например) эта форма SalesTable (как, подозреваю, и любая другая) начинает работать в контексте другой компании, со всеми вытекающими...
Для п.1 я решил использовать display-методы, поскольку мне это показалось наиболее простым и прозрачным решением (конечно, можно возразить, что "у каждой сложной задачи существует простое, ясное и неправильное решение", но мне эта задача сложной не казалась ). Изначально display-методы я пробовал сделать на DataSource формы, но это, как оказалось, тупиковый вариант: для каждой строки вызывается display-метод, который смотрит через DataSource на текущую строку, а не на ту, для которой он должен показывать данные. В результате я перенес display-метод из DataSource формы на таблицу SalesLine - и все начало показываться нормально... пока не переключишься на другую компанию: из-за п.2 display-методы начинают показывать лажу Очевидное решение этой проблемы: при вызове формы запоминать, в какой компании она была вызвана, и в display-методах делать принудительное changecompany в нужную компанию - тогда они будут работать нормально независимо от того, переключились ли мы на другую компанию (а они даже при неактивности формы продолжают вызываться для перерисовки).
Если бы display-методы нормально работали на DataSource формы, прикрутить в них changecompany в нужную компанию было бы проще простого, но вот как из формы передать информацию о нужном коде компании в таблицу SalesLine, мне в голову не приходит Остается еще один вариант: поскольку данные, по которым пересчитывается отображаемая информация, меняются только в самой форме, можно выводить их не display-методами, а через временную таблицу, значения которой изменять в соответствии с изменениями в данных на форме. Однако, вариант с временной таблицей мне пока кажется более геморройным, чем просто display-методы, поэтому я хочу оставить это решение на тот случай, если вариант с changecompany реализовать не удастся...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dataareaid conpeek Logger DAX: Программирование 5 02.02.2009 12:11
DataAreaId в виртуальной компании. vasiliy DAX: Программирование 1 17.04.2008 15:30
Смена компании через Сервис->Параметры Dronas DAX: Программирование 4 06.12.2006 11:15
Смена компании Aslan DAX: Программирование 1 19.04.2006 12:29
Компании: Одна большая или много маленьких? George Nordic DAX: Функционал 4 28.07.2004 20:39

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

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

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