On Mar 5, 5:50 pm, Ded <[EMAIL PROTECTED]> wrote: > > Что об этом думает уважаемая публика. > Вот скажи-ка, мил человек. Вспоминая многострочные > докУменты-проводки. Вот у мну, например, процедура завершения складской > операции, скажем, приёмки, задевает 13 таблиц: > - хидер входной накладной > - маршрутный лист транспортной партии > - агрегированный потоварно состав входной накладной > - подетальный товарный состав входной накладной > - резервы (назначение товаров) в составе накладной > - хидер складской операции > - агрегированный потоварно состав складской операции > - подетальный состав складской операции > - агрегированное состояние запасов на складе потоварно > - состояние запасов на складе подетально > - назначение запасов на складе > - состояние запасов по ГТД > - средняя себестоимость товаров на складе
> Это без бухгалтерии которая отдельно и в своём темпе. Может ещё чего > забыл, давненько туда не заглядывал, работает как часики. Ну и методом > какой из этих таблиц объявим сию процедуру? Али просто вместо Update > Table бум писать Table.Update? Складская операция - сложный объект, состоящий из связанных объектов накладной, объекта-списка бухгалтерских проводок, объекта-списка движений по складу, чего еще там душе угодно. Каждый подобъект в своих методах меняет то к чем относится - накладная, как наследник документа, проходит свои этапы(прием, проведение, итд), проводки меняют бухгалтерские остатки(если их хранить), движение по складу меняет складские запасы, итд. Объекты накладной состоит из шапки(полей объекта) и строк(вложенного списка объектов-строк). Чорт его знает, как автоматически такие объекты отображать на реляционную модель - OR мапперы, hibernate всякие это как-то делают. Аггрегированные отображения делать расчетными, считать по мере надобности на сервере приложений, кэшировать, т.е. ленивый расчет. Т.е. если по хорошему - клиент вообще не касается таблиц, а работает с объектами через сервер приложений. Создается или открывается объект "Складская операция", GUI для него генерируется автоматически по описанию объекта, выполняемые операции дергают методы на сервере приложений, который в свою очередь уже отображает изменения в СУБД. Описание объекта в свою очередь состоит из описания его хранения в СУБД(адаптер объект-СУБД), нескольких вариантов описания его интерфейса(адаптеры GUI,адаптеры веб-интерфейса) Остается описание списков объектов и отчетов - тут в некоторых случаях хватает обычного датасета, заполняемого sql запросом, а иногда можно еще сверху прицепить обработку какую-нибудь сложную. А, и еще советуют вообще не пользоваться кодом внутри СУБД, типа хранимых процедур - типа "чтобы можно было сервер заменить на другой" Но по-моему, "замена СУБД" это иллюзия :)

