При изменении склада, отдела, даты поставки в заголовке Аксапта умеет копировать измененные значения в строки. Как сделать так, чтобы поле, добавленное программистом, обрабатывалось стандартным механизмом копирования.

Загрузить
Добавление поля в SalesTable и SalesLine

Загрузить

Table2LineCopy_TST.xpo (22Кб, для загрузки требуется регистрация на форуме у Mazzy)

 

Добавление поля в SalesTable и SalesLine

Контрольный список добавления поля в SalesTable и SalesLine с подключением функциональности обновления строк.

  1. Новое поле Дата в заголовке и в строках заказа Добавьте новые поля в таблицу SalesTable.
  2. Поместите поля, которые вы собираетесь копировать, в группу HeaderToLineUpdate.
  3. Добавьте новые поля в таблицу SalesLine.
  4. Выведите поля в форму SalesTable.
  5. Переинициализируйте таблицу SalesTable 2 LineParameters.
    1. Очистите таблицу.
    2. Создайте и выполните Job, состоящий из одной команды: SalesTable2LineParameters::initiate();
      Вместо этого шага можно просто очистить таблицу SalesParameters, но тогда параметры модуля Заказы придется переввести заново.
  6. Добавьте case для вашего поля в switch в методе SalesTable2LineField::lineDescription().
    Возвращаемая в методе строка будет использована в диалоге обновления строк, в случае если настройка обновления строк для выбранного поля «Подсказка». Перед выводом в диалог строка будет отформатирована с помощью оператора: Strfmt("Обработать %1", <возвращаемая строка>);
  7. Поле дата появляется в диалоге настройки автоматически, если поле разместить в группе HeaderToLineUpdate Добавьте инструкции в метода SalesLineType::initFromSalesTable() для инициализации значения Вашего поля в строках заказа по умолчанию.
    Метод вызывается при создании новой строки заказа.
  8. В класс AxSalesTable добавьте parm-метод для Вашего поля, а также отдельно создайте set-метод.
    Класс используется при создании заказа из внешней системы. В частности, класс используется в Commerce Gateway. Для решения задачи достаточно создать только parm-метод. Рекомендуется скопировать код метода из одного из имеющихся в классе parm-методов и изменить названия полей.
  9. В класс AxSalesLine добавьте parm-метод для Вашего поля, а также отдельно создайте set-метод.
    Класс используется при создании строки заказа из внешней системы. В частности, класс используется в Commerce Gateway. Рекомендуется скопировать код методов из имеющихся в классе методов и изменить названия полей.
  10. Добавьте строку в метод AxSalesLine::setTableFields() с вызовом set-метода для Вашего поля.

В прилагаемом проекте приведен пример добавления поля «Дата» в заказ и его строки.


Максим Горбунов, maxim@mazzy.ru