|
18.04.2017, 11:24 | #1 |
Участник
|
Создание строк в договоре продажи
Добрый день.
Пытаюсь через код создать строки в договоре продажи. В таблице строки появляются, но на форме их не видно. В чем может быть проблема? Строки создаю следующим образом: X++: agreementHeader.selectForUpdate(true); agreementHeader.DefaultAgreementLineType = commitmentType; agreementHeader.update(); agreementLineVolume = null; agreementLineVolume.initValue(); agreementLineVolume.initFromAgreementHeader(agreementHeader); ecoResCategory = EcoResCategory::findByName(categoryName, InventParameters::find().CategoryHierarchyId); if (!ecoResCategory) throw error(strFmt('Категория %1 не существует', categoryName)); agreementLineVolume.Category = ecoResCategory.RecId; agreementLineVolume.categoryChanged(); agreementLineVolume.insert(); this.createRefs(agreementLineVolume); X++: protected void createRefs(AgreementLine _agreementLine) { AgreementLineDefault agreementLineDefault; AgreementLineExt_RU agreementLineExt; // AgreementLineDefault agreementLineDefault.clear(); agreementLineDefault.initValue(); agreementLineDefault.initFromAgreementHeaderDefault(agreementHeader.agreementHeaderDefault()); switch (salesPurch) { case SalesPurch::Sales : agreementLineDefault.initFromSalesAgreementHeaderDefault(salesAgreementHeader.salesAgreementHeaderDefault()); break; default : } if (_agreementLine.isItemBased()) agreementLineDefault.initFromInventTable(_agreementLine.inventTable()); agreementLineDefault.AgreementLine = _agreementLine.RecId; if (agreementLineDefault.validateWrite()) agreementLineDefault.insert(); // AgreementLineExt_RU agreementLineExt.clear(); agreementLineExt.initFromAgreementLine(_agreementLine); if (_agreementLine.isItemBased()) agreementLineExt.initFromInventTable(_agreementLine.inventTable()); if (agreementLineExt.validateWrite()) agreementLineExt.insert(); } |
|
18.04.2017, 11:42 | #2 |
Участник
|
|
|
18.04.2017, 11:55 | #3 |
Участник
|
Так в том-то и дело, что таких не нашел. Единственная таблица на форме SalesAgreement, которая джойнится по InnerJoin к AgreementLine, это InventDim. Но в создаваемых записях поле InventDimId заполняется также, как если бы вручную строки создавались.
|
|
18.04.2017, 12:17 | #4 |
Участник
|
Для примера картинка во вложении. Первая строка создана вручную и она отображается на форме. Остальные 2 созданы программно, их не видно.
|
|
18.04.2017, 13:20 | #5 |
Участник
|
Посмотрите какой запрос на форме выполняется где-нибудь в .executeQuery(). Если там нет inner join, то могут быть наложены какие-нибудь доп. фильтры
|
|
18.04.2017, 13:28 | #6 |
Участник
|
Спасибо, я нашел в чем ошибка. Не заполнял поле InventDimDataAreaId в строке договора.
|
|