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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.02.2007, 13:21   #1  
Кирен is offline
Кирен
Участник
 
22 / 10 (1) +
Регистрация: 03.02.2004
Адрес: Украина, г. Донецк
Добавление поля в диалог разноски складского журнала.
Axapta 3.0 SP4, 3-х уровневая, SQL.

Задача: добавить поле в диалог, вызываемый при нажатии на кнопку "Разноска" в журналах переноса.

Сделано: попыталась сделать по аналогии с флажком "Строки с ошибками в новый журнал"
(переменная transferErrors класса JournalCheckPost).

Изменяла класс JournalCheckPost - в ClassDeclaration объявление переменных,
в dialog добавлено поле, в getFromDialog переменной присваиваю значение поля.
Значение пременной мне нужно где-нибудь в run, runInit.
Но в этих методах значение - 0. Хотя в getFromDialog переменной присваивается правильное значение.
Даже в getFromDialog наследников значение правильное.
Например, в getFromDialog класса InventJournalCheckPost_Movement.

Тем не менее, значение той же переменной transferErrors используется
в методах runCheck() и методе createJournalTransfer() класса JournalCheckPost.

Кроме того, в процессе возник вопрос: где используется метод
\Classes\JournalCheckPost\parmTransferErrors?

Инкрементную компиляцию и глобалную перекомпиляцию сделала. Не помогло.

Кроме того, пыталась поместить код в наследниках JournalCheckPost.
Тоже не помогло.

Что можете посоветовать?
Старый 09.02.2007, 13:29   #2  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от Кирен Посмотреть сообщение
Изменяла класс JournalCheckPost - в ClassDeclaration объявление переменных
LOL

Не забывайте запаковывать переменную. Допишите методы .pack() и .unpack() в классе InventJournalCheckPost_Movement.
За это сообщение автора поблагодарили: Кирен (1).
Старый 09.02.2007, 13:35   #3  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от Кирен Посмотреть сообщение
Кроме того, в процессе возник вопрос: где используется метод
\Classes\JournalCheckPost\parmTransferErrors?
Судя по перекрестным ссылкам и поиску - нигде..
Старый 09.02.2007, 13:43   #4  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Метод используется в наследниках (например в LedgerJournalCheckPost). Сама переменная используется в createJournalTransfer класса JournalCheckPost, кстати там в SP3 есть ошибка при переносе строк в складских журналах (не меняется в складских проводках ссылка на журнал), в более поздних сервис-паках может быть уже исправили, а может и нет.
Старый 09.02.2007, 14:20   #5  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Метод используется в наследниках (например в LedgerJournalCheckPost).
А точно наследник?
PHP код:
class LedgerJournalCheckPost  extends RunBase 
Да, согласен, не усмотрел, в других наслениках используется.
Старый 09.02.2007, 14:42   #6  
Кирен is offline
Кирен
Участник
 
22 / 10 (1) +
Регистрация: 03.02.2004
Адрес: Украина, г. Донецк
Thumbs up
Спасибо, EVGL, помогло!

Хотя не совсем поняла почему в данном случае требуется упаковка.
Можете объяснить?
Старый 09.02.2007, 15:20   #7  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Потому что Вы работаете, очевидно, в 3-х уровневом окружении. Диалог исполняется на клиенте под управлением копии объекта, а сам объект - на сервере. Аксапта не умеет самостоятельно сериализовывать все переменные объекта, но вызывает для этого методы .pack() и .unpack() класса, подразумевая, что класс реализовывает интерфейс SysPackable. В этих методах нужно сериализовать все переменные, требующиеся для запуска выполнения задания в .run().
За это сообщение автора поблагодарили: kashperuk (1).
Старый 09.02.2007, 15:33   #8  
kvan is offline
kvan
Moderator
Аватар для kvan
Дети Юза
 
775 / 49 (3) +
Регистрация: 07.08.2002
Адрес: Donetsk
Попробую ответить чуть проще:
Если класс с диалогом вызывается на сервере, происходит упаковка параметров и передача их на клиента, так как контролы диалога добавляются все таки на форму Dialog, а формы выполняются на клиенте.
А упаковываются именно те переменные, которые перечислены в CurrentList.

2EVGL: Поправьте меня если неверно сформулировал.
__________________
С уважением, kvan.
Старый 09.02.2007, 16:10   #9  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от kvan Посмотреть сообщение
А упаковываются именно те переменные, которые перечислены в CurrentList.
Скажем немного расширенно: упаковываются те переменные, которые укажет программист, а использование макроопределения CurrentList просто обычай, принятый большинством разработчиков.
Старый 09.02.2007, 17:06   #10  
Кирен is offline
Кирен
Участник
 
22 / 10 (1) +
Регистрация: 03.02.2004
Адрес: Украина, г. Донецк
Да, спасибо. Теперь понятнее.
Старый 09.02.2007, 18:41   #11  
kvan is offline
kvan
Moderator
Аватар для kvan
Дети Юза
 
775 / 49 (3) +
Регистрация: 07.08.2002
Адрес: Donetsk
2Raven Melancholic:
Согласен, просто гораздо проще и изящнее включить переменную в CurrentList
__________________
С уважением, kvan.
Старый 12.02.2007, 05:19   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от kvan Посмотреть сообщение
2Raven Melancholic:
Согласен, просто гораздо проще и изящнее включить переменную в CurrentList
Ну, тогда и я добавлю.
ЕСЛИ добавляете переменную в CurrentList,
ТО увеличивайте номер версии (см. пример в BestPractice)
И не забывайте дописать код, который правильно распаковывает старые версии в unpack.

Дело в том, что пока вы дорабатываете, пользователи уже могут поработать и запомнить старые параметры в sysLastValue.
Если старые параметры будут считаны в новый список без соответствующей обработки, то скорее всего произойдет ошибка (в этом случае часто советуют удалить Используемые данные в параметрах пользователя)
__________________
полезное на axForum, github, vk, coub.
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Добавления поля для разноски в производственном журнале. Poleax DAX: Программирование 11 12.02.2009 17:22
Утверждение складского журнала Andrux DAX: Администрирование 5 13.08.2007 16:00
Добавление поля в InventJournalTable polygris DAX: Программирование 2 16.09.2006 14:50
Добавление нового поля в старую таблицу PavelSR DAX: Программирование 3 14.06.2006 08:22
Профиль разноски для складского журнала подотчетные лица RFC DAX: Функционал 0 25.03.2004 14:08

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

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

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