On Mar 5, 5:50 pm, Ded <[EMAIL PROTECTED]> wrote:
> > Что об этом думает уважаемая публика.
>     Вот скажи-ка, мил человек. Вспоминая многострочные
> докУменты-проводки. Вот у мну, например, процедура завершения складской
> операции, скажем, приёмки, задевает 13 таблиц:
> - хидер входной накладной
> - маршрутный лист транспортной партии
> - агрегированный потоварно состав входной накладной
> - подетальный товарный состав входной накладной
> - резервы (назначение товаров) в составе накладной
> - хидер складской операции
> - агрегированный потоварно состав складской операции
> - подетальный состав складской операции
> - агрегированное состояние запасов на складе потоварно
> - состояние запасов на складе подетально
> - назначение запасов на складе
> - состояние запасов по ГТД
> - средняя себестоимость товаров на складе

> Это без бухгалтерии которая отдельно и в своём темпе. Может ещё чего
> забыл, давненько туда не заглядывал, работает как часики. Ну и методом
> какой из этих таблиц объявим сию процедуру? Али просто вместо Update
> Table бум писать Table.Update?

 Складская операция - сложный объект, состоящий из связанных объектов
накладной, объекта-списка бухгалтерских проводок, объекта-списка
движений по складу, чего еще там душе угодно.

 Каждый подобъект в своих методах меняет то к чем относится -
накладная, как наследник документа, проходит свои этапы(прием,
проведение, итд), проводки меняют бухгалтерские остатки(если
их хранить), движение по складу меняет складские запасы, итд.

 Объекты накладной состоит из шапки(полей объекта)
и строк(вложенного списка объектов-строк). Чорт его знает,
как автоматически такие объекты отображать на реляционную
модель - OR мапперы, hibernate всякие это как-то делают.

 Аггрегированные отображения делать расчетными, считать
по мере надобности на сервере приложений, кэшировать,
т.е. ленивый расчет.

 Т.е. если по хорошему - клиент вообще не касается таблиц, а
работает с объектами через сервер приложений. Создается или
открывается объект "Складская операция", GUI для него генерируется
автоматически по описанию объекта, выполняемые операции
дергают методы на сервере приложений, который в свою очередь
уже отображает изменения в СУБД.

 Описание объекта в свою очередь состоит из описания его
хранения в СУБД(адаптер объект-СУБД), нескольких вариантов
описания его интерфейса(адаптеры GUI,адаптеры веб-интерфейса)

 Остается описание списков объектов и отчетов - тут в некоторых
случаях хватает обычного датасета, заполняемого sql запросом,
а иногда можно еще сверху прицепить обработку какую-нибудь сложную.

 А, и еще советуют вообще не пользоваться кодом внутри СУБД, типа
хранимых процедур - типа "чтобы можно было сервер заменить на другой"
Но по-моему, "замена СУБД" это иллюзия :)

Ответить