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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.06.2012, 20:28   #1  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
AX 2009: Пустая строка не даёт закрыть форму "Строки производственного журнала..."
Берём стандартное приложение AX 2009 SP1 RU7 и выполняем следующие действия:

- Открываем форму Производство\Журналы\Карта задания
- Создаём новый журнал (нажимаем на кнопку "Создать")

В этот момент откроется форма Строки производственного журнала, карта задания и в ней будет создана одна пустая строка.

- Закроем форму, нажав на крестик в правом верхнем углу

Форма закроется без ошибок. Пустая строка сохранена не будет.

Теперь повторим эксперимент с журналом Отгрузочная накладная.

- Открываем форму Производство\Журналы\Отгрузочная накладная
- Создаём новый журнал (нажимаем на кнопку "Создать")

В этот момент откроется форма Строки производственного журнала, отгрузочная накладная и в ней будет создана одна пустая строка.

- Попытаемся закрыть форму, нажав на крестик в правом верхнем углу

Форма не закрывается. Вместо этого отображается список полей, которые не были заполнены в новой записи. То есть, система явно пытается эту запись сохранить при закрытии, в отличие от предыдущего случая.

А теперь вопрос: в чём именно ключевое отличие этих двух форм? Что можно сделать с формой Отгрузочная накладная, чтобы она вела себя так же, как и все остальные журналы в системе (то есть, не пыталась сохранить пустую строчку при закрытии)?

Всем заранее спасибо за ответы.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 26.06.2012, 15:46   #2  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Я с этим давно смирился, принял как данность.
Старый 26.06.2012, 17:55   #3  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
В качестве временного решения я пока поставил InsertIfEmpty = No на датасорсе в форме строк журнала отгрузочной накладной. Но всё равно интересно было бы разобраться.

Воспринимайте это как конкурсную задачу. Решившему - почёт и уважение
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 26.06.2012, 19:14   #4  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
А теперь вопрос: в чём именно ключевое отличие этих двух форм?
Отличие в том, что в ProdJournalBOM.active() вызывается journalFormTrans.datasourceActivePost(), где в ProdJournalFormTransBOM\datasourceActivePost() есть код
X++:
this.updateDesign(InventDimFormDesignUpdate::Active);
Внутри этого updateDesign()
X++:
 InventMovement _movement = this.inventMovement();
А вот внутри мувмента уже и причина:
X++:
if (!prodJournalBOM.RecId)
   prodJournalBOM.InventTransChildType = InventTransChildType::ProdJournalBOM;
Проставляется значение в поле InventTransChildType и AX считает, что запись изменена.
За это сообщение автора поблагодарили: Maxim Gorbunov (5), gl00mie (2).
Старый 27.06.2012, 12:41   #5  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
oip, большое спасибо! Это действительно оно Комментирование упомянутых строчек в ProdJournalFormTransBOM.inventMovement() решает проблему.

Остаётся, правда, вопрос, куда эти строчки перенести. У меня складывается такое впечатление, что никуда, они просто лишние. InventTransChildType всё равно переписывается в ProdJournalBOM.insert(), так что нет смысла инициализировать его каждый раз из active() датасорса. Как вы считаете?
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Теги
ax2009, ошибка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axinthefield: Compatibility Testing for Microsoft Dynamics AX Blog bot DAX Blogs 0 23.06.2012 02:26
AX 2009. Приказ на отпуск. Расчет "начало периода" Sada DAX: Программирование 2 29.03.2012 13:28
rumicrosofterp: AX 2009: Видеокурс "Разработка часть 1" Blog bot DAX Blogs 6 18.06.2011 21:04
axinthefield: Dynamics AX Event IDs Blog bot DAX Blogs 0 01.03.2011 22:11
Sample Design Patterns: Shortcuts for Dynamics AX 2009 - New Poster Blog bot DAX Blogs 0 31.07.2010 12:05
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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