priority-web-sdk: startSubForm возвращает родительскую форму

Следующий код запускает форму и подчиненную форму, проблема заключается в том, что я получаю экземпляр subForm родительского элемента:

    await actions.loginTest();
    const form = await actions.priority.formStart(this.formName, 
    onShowMessgeFunc, onUpdateFieldsFunc);
    console.log("form", form);
    if(form.subForms["SHIPTO2"]) {
      const subForm = await form.startSubForm("SHIPTO2");
      console.log("subform", subForm);
      subForm.choose("CUSTDES", '').then(options => {
        let custOptions = options.SearchLine.map(x => {return 
       {label:x.retval + " - " + x.string1, value: x.retval }});
        this.setState({
          customersShippingOptions: custOptions,
        })
      }).catch((err) => {
        console.log("CHOOSE ERROR", err);
      })
    }

Выход:

2 ответа

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

Перед запуском подчиненной формы вы должны использовать getRows() функция для получения строк, а затем вызвать setActiveRow(rowIndex) установить активную строку. Тогда вы можете начать подчиненную форму.

Измените ваш код следующим образом:

await actions.loginTest();
const form = await actions.priority.formStart(this.formName, 
             onShowMessgeFunc, onUpdateFieldsFunc);
console.log("form", form);
const rows = await form.getRows();
await setActiveRow(5);
if(form.subForms["SHIPTO2"]) {
   const subForm = await form.startSubForm("SHIPTO2");
   console.log("subform", subForm);
   ...
}

Кстати: я вижу, вы используете choose(), Здесь тоже должна быть активная (подчиненная) строка, используйте getRows() с setActiveRow() или создать newRow() перед звонком choose()

Если вы хотите потянуть первую строку на экране больше, чем просто использовать autoRetrieveFirstRows параметр в функции formStart

Ссылка на функцию на сайте Web SDK

Я лично определяю это значение по умолчанию

Другие вопросы по тегам