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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.12.2016, 11:58   #9  
makbeth is offline
makbeth
Участник
Аватар для makbeth
КОРУС Консалтинг
 
43 / 52 (2) ++++
Регистрация: 15.05.2007
Адрес: Санкт-Петербург
Цитата:
Сообщение от mazzy Посмотреть сообщение
pack/unpack используется и при передаче объекта между клиентом/сервером.
видимо ради этого случая и было сказано про RunOn = Server. )))
Постановка задачи в данном случае достаточно простая - организовать обработку данных классом на сервере. Решение с изменением свойства класса было принято разработчиком. Решение это не совсем правильное, так как в данном случае pack/unpack для передачи данных класса между клиентом и сервером использоваться не будет, потому что этим значением свойства в принципе запрещается создание экземпляра класса на клиенте. Кому передавать то?
Для правильной работы такого вот механизма минимизации обменов между клиентской (диалоговой) частью и серверной (рабочей) частью RunBase нужно чтобы класс можно было создать как на клиенте, так и на сервере (т.е. CalledFrom = RunOn), а на главный экземпляр на сервере создавать либо в коде, либо, например, через MenuItem с соответствующим свойством.

Цитата:
Сообщение от DSPIC Посмотреть сообщение
Вариант 3: там где-то метод можно перекрыть, что-то вроде allowSaveLast (либо метод, либо переменная, объявленная на уровне RunBase). Но, если не ошибаюсь, это поломает передачу параметром клиент/серер. Стоит проверить.
Не поломает. Передача клиент-сервер использует promptPack/promptUnpack, а SysLastValue - свои saveLast и loadLast. Если уж совсем не хочется сохранять параметры класса, достаточно перекрыть RunBase.lastValueElementName и в нем возвратить пустую строку (по крайней мере в четверке так).

Цитата:
Сообщение от DSPIC Посмотреть сообщение
Вариант 4: я бы шел классическим путем:
- сохраняем вашу переменную в pack/unpak как положено.
- в диалоге аналогично, стандартно, чтобы инициализировалось переменной.
- в методе main, принудительно вызываем getLast(), после чего обнуляем переменную. Вы же написали parm метод?
- ну и все. getLast() второй раз не вызывается, так задумано. Будущему программисту вы этим явно покажете, что сделано это осознанно. Универсальность класса сохранится - овцы сыты, волки целы.
Ну, собственно, да - классика. Только getLast можно вызвать даже в new, чтобы не тащить эту особенность наружу (хоть и в main).
За это сообщение автора поблагодарили: Diman (1).
Теги
как правильно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axinthefield: Critical issue in SQL Server 2012 Service Pack 1 that could crash your SQL server Blog bot DAX Blogs 0 01.11.2013 01:11
emeadaxsupport: How to disable the Public Sector solution when using Microsoft Dynamics AX 2012 Feature Pack Blog bot DAX Blogs 0 07.08.2012 00:13
emeadaxsupport: Error when upgrading to AX 2012 Feature Pack: The UPDATE statement conflicted with the FOREIGN KEY constraint "FK_ModelElementData_HasModelId_LayerId" Blog bot DAX Blogs 0 20.07.2012 00:11
AX UK: Microsoft Dynamics AX 2009 Management Pack for SCOM 2007 Blog bot DAX Blogs 2 12.08.2009 09:08
chrisfie: Announcing the release of Project Portfolio Server 2007 Service Pack 2 (SP2) Blog bot DAX Blogs 0 24.07.2009 04:20

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

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

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