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
Я лично определяю это значение по умолчанию