Dynamics AX 2009: удаление скидок и дополнительных сборов - PullRequest
0 голосов
/ 31 октября 2011

По сути, то, что я делаю, это:

  1. При вставке, удалении или обновлении таблицы SalesLine я проверяю ProductCode этой строки и определяю, применяется ли скидка или прочие расходы
  2. У меня есть таблицы поиска для сборов и скидок
  3. Когда вносятся какие-либо изменения, я должен эффективно удалить скидки / сборы, потому что недавно измененная SalesLine может не подходить для сборов / скидок

У меня есть код, который делает то, что описано выше, но со следующим побочным эффектом:

  • Если я выделю несколько строк в сетке формы SalesTable и нажму кнопку удаления на панели инструментов, я получу ошибки.
  • Кажется, ошибки вызваны тем, что мой код удалял некоторые элементы, а затем форма также пытается удалить строки после того, как они уже были удалены кодом.

Как лучше всего стереть добавленные по коду скидки или сборы при удалении родительской строки, что не приведет к взрыву формы, если пользователь выберет те же строки для удаления?

Заранее спасибо, эта штука сводит меня с ума !

РЕДАКТИРОВАТЬ: конкретная ошибка, которую я получаю, когда кэшированные записи формы пытаются удалить, это:

Невозможно редактировать запись в строках заказа (SalesLine). Конфликт обновления произошел из-за того, что другой пользовательский процесс удалил запись или изменил одно или несколько полей в записи.

1 Ответ

1 голос
/ 31 октября 2011

Наиболее очевидным способом удаления скидок или сборов added-by-code является добавление вашей таблицы в действия по удалению таблицы salesLine с параметром Cascade. Также сделайте табличное отношение на вашем столе к талбе SalesLine. Таким образом, ваши записи удаляются автоматически. Я бы этого не сделал, если бы скидки / сборы сохранялись как строки продаж.

Сообщение об ошибке заставляет меня догадываться, что при удалении строки продажи вы удаляете другие строки продаж:

  1. При удалении «реальной» строки продаж вы удаляете строки скидок или начислений.
  2. При выполнении многострочного удаления строка # 2 была удалена путем удаления строки # 1, но буфер формы не был обновлен, и удаление завершилось неудачно. Это фактически то, что сообщают вам сообщения об ошибках, строка была обновлена, так как запись была прочитана формой.

Обновление для проблемы удаления:

  1. Удалите ваш код из SalesLine методов удаления.
  2. Создайте набор recId для последующего удаления, заполнив метод удаления источника данных salesLine.
  3. Удалить строки позже (возможно, из активного метода), если набор не равен нулю.
...