Вот, кстати, вспомнилось. Не совсем начальные данные, правда, но всё равно показательно.
Пример использования контейнеров в системе когда не надо использовать контейнеры, а надо таблицы: RTax25RegisterTrans.RegsiterValues. там хранится около дюжины самых разнотипных полей.
См. например LedgerJournalCreate_Tax25AmountDiff_RU
Код:
ledgerJournalTrans.DocumentNum = conpeek(registerTrans.RegisterValues, #Value3);
ledgerJournalTrans.DocumentDate = conpeek(registerTrans.RegisterValues, #Value4);
Ещё вот как хорошо сделано в RAssetAdvancedAssessedTaxDeclaration
Код:
taxPay += (this.round(conpeek(_trans.RegisterValues, #Value10)) -
this.round(conpeek(_trans.RegisterValues, #Value13)));
Очень легко читать и отлаживать /s.
Надеюсь, когда нибудь проверка BP научится бить по рукам за #define.Value13(13) от которого толку - ноль.
Ещё один плюс таблиц перед containerами: фильтры. Помню была доработка по этим RTax25* где надо было выбирать определенные RegisterValues. Так как делать joinы и фильтры на container'ы внутри таблиц нельзя, то приходилось перебирать все RTax25RegisterTrans принадлежащие RTax25RegisterTable'у.