Как используется свойство запроса копирования вызывающей стороны в пункте меню дисплея в D365? - PullRequest
0 голосов
/ 02 мая 2020

Существует форма, которая связана с элементом меню дисплея. Я проверял свойство пункта меню и увидел, что два свойства имеют значение yes, (1) requiredRecord и (2) CopyCallerQuery. Я обнаружил, что когда свойство copyCallerQuery имеет значение true, переход к этой форме из других форм завершился неудачно с этой ошибкой:

Невозможно применить начальный запрос, поскольку никакая таблица источника данных формы root не соответствует запросу root data исходная таблица ..

С другой стороны, в некоторых ситуациях эта форма открывается кодом из вспомогательного класса, как показано ниже:

  private void openMyForm(MyTable _myTable)
    {
        MenuFunction    _menuFunction;
        Args            _args;
        _args           = new Args();

        _args.record(_myTable);
        _args.caller(this);
        _menuFunction   = new MenuFunction(menuItemDisplayStr(MyFormDisplayMenu),MenuItemType::Display);
        _menuFunction.openMode(OpenMode::Edit);
        _menuFunction.run(_args);
    }

Когда я устанавливаю для copyCallerQuery значение Нет, форма открыта с неправильной записью, но когда я установил ее, форма открыта с правильной записью. Итак, я хочу знать, что такое использование свойства CopyCallerQuery? Я правильно использовал это?

1 Ответ

0 голосов
/ 03 мая 2020

copyCallerQuery будет указывать, следует ли копировать запрос формы вызова в целевую форму, например, копировать запрос страницы списка в форму подробностей.

Вы можете сами это понять и лучше понять,

  1. Создание формы (Form1)
  2. Добавление в нее источника данных SalesTable
  3. Переопределение метода init в \Forms\Form1\Methods\init и после super(); call put info(SalesTable_ds.query().toString());
  4. Создание элемента меню Display (\Menu Items\Display\Form1) со свойством Object = Form1 и CopyCallerQuery = Yes.
  5. Go в форме SalesTable в \Forms\SalesTable и просто добавьте этот новый пункт меню (Form1) в любом месте в форме SalesTable в качестве кнопки на панели действий и установите для свойства источника данных значение SalesTable
  6. Откройте форму SalesTable и нажмите кнопку. Скопируйте информацию в блокнот куда-нибудь.
  7. Измените \Menu Items\Display\Form1, установите CopyCallerQuery = No, затем снова откройте форму SalesTable и скопируйте запрос в блокнот и сравните их.

Вы получаете ошибку, потому что источник данных root формы вызывающей стороны должен соответствовать источнику данных root целевой формы, чтобы скопировать его.

...