Показать сообщение отдельно
Старый 14.04.2011, 12:10   #59  
mayk is offline
mayk
Участник
Аватар для mayk
 
43 / 65 (3) ++++
Регистрация: 07.03.2008
Вот, кстати, вспомнилось. Не совсем начальные данные, правда, но всё равно показательно.

Пример использования контейнеров в системе когда не надо использовать контейнеры, а надо таблицы: 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'у.

Последний раз редактировалось mayk; 14.04.2011 в 12:13.
За это сообщение автора поблагодарили: mazzy (2).