|
Структура хранения документов
|
|||
---|---|---|---|
#18+
Ребят, как бы оптимальным образом хранить документы типа Приходная накладная, Расходная накладная, Накладная на перемещение (или это просто пара накладных расход/приход?), Списание. Задача стандартная - склад. Интересует только хранение шапки документа, а не его содержание. С сожержанием все понятно. Нужно ли в шапке иметь два атрибута - от кого/кому? Тогда как будет выглядеть документ на списание? Вообще есть где нить грамотное описание структуры классического склада? Просто интересно глянуть как все это дело профессионалы обустраивают... Заранее благодарен за советы. СПАСИБО! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2003, 13:33 |
|
Структура хранения документов
|
|||
---|---|---|---|
#18+
Я не профи, но храню так (и проблем пока не имел): Таблица "Docs" - основные характеристики документа (то, что присутствует у всех видов документов): doc_id, doc_date, type_id (тут идентифицируется тип), deleted, locked, ... Для приходных накладных: Таблица "PNkHead" - атрибуты шапки ПНк: клиент, склад, валюта, и т.д. Таблица "PNkTable" - атрибуты таб. части ПНк: товар, количество, цена, и т.д. Таблицы шапки и таб. части привязываются к таблице "Docs" по doc_id. Принцип понятен? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2003, 21:02 |
|
Структура хранения документов
|
|||
---|---|---|---|
#18+
Просто как дважды два - уникальные поля сущности вынес в соответствующие талицы. Как до меня сразу не дошло так сделать? :) Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2003, 22:35 |
|
Структура хранения документов
|
|||
---|---|---|---|
#18+
ale-805 , еще забыл спросить - для чего поле "locked"? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2003, 22:43 |
|
Структура хранения документов
|
|||
---|---|---|---|
#18+
Сори, сразу не обратил внимания... А есть ли смысл выносить приходные накладные в отдельную таблицу? Чем приходные накладные от расходных отличаются? Как потом остатки на складах считать... ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2003, 23:00 |
|
Структура хранения документов
|
|||
---|---|---|---|
#18+
"locked" у меня означает, что документ блокирован для редактирования (поднимается при открытии кем-то документа, опускается при закрытии), но с блокировками есть много реализаций, не уверен, что моя оптимальная. Насчет ПНк и РНк...: Я храню каждый вид документа отдельно. Это лишь информация о документе, к остаткам это не имеет отношения, остатки я храню отдель в таблицах регистров: "RegProducts" например: CREATE TABLE [dbo].[RegProducts] ( [RegProducts_id] [int] IDENTITY (1, 1) NOT NULL , [doc_date] [datetime] NOT NULL , [doc_id] [int] NOT NULL , [doctype_id] [int] NOT NULL , [storage_id] [int] NOT NULL , [product_id] [int] NOT NULL , [client_id] [int] NULL , [curr_id] [int] NOT NULL , [curr_rate] [decimal](18, 5) NOT NULL , [debkred] [tinyint] NOT NULL , (вот здесь и хранится, приход или расход) [quantity] [decimal](18, 3) NOT NULL , [total] [decimal](20, 10) NOT NULL , [primeTotal] [decimal](20, 10) NOT NULL , [priceTotal] [decimal](20, 10) NULL ) ON [PRIMARY] GO ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2003, 13:47 |
|
Структура хранения документов
|
|||
---|---|---|---|
#18+
С лочкой понял, спасибо. С документами правда не совсем понятно. Все-таки зачем отдельные таблицы? Или тут есть какой-то скрытый подводный камень? В итоге по минимум тогда надо иметь хотя бы 4-е таблицы с документами - приход, расход, списание, перемещение. Так? С остатками понятно. Запись в регистр лучше сажать на триггер? И у документа тогда в принципе должен быть признак проводки? Да еще вопрос. Промежуточные остатки ты где нить хранишь или все расчитывается только по регистрам? Спасибо огромное за разъяснения! Хоть немного стало что-то прорисовываться. Просто у меня уже был печальный опыт написания складской системы, когда не продумал структуру и в итоге проект загнулся :( Еще раз благодарю за разъяснения! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2003, 14:59 |
|
Структура хранения документов
|
|||
---|---|---|---|
#18+
авторВсе-таки зачем отдельные таблицы?\r Просто у меня атрибуты ПНк и РНк не совсем одинаковые, а всякие NULL\'ы в этом случае хранить не хочу. Так мне поспокойнее, а для SQL Server\'а какая разница, скока у него таблиц?\r авторИ у документа тогда в принципе должен быть признак проводки?\r Есть такая буква в этом слове.\r авторПромежуточные остатки ты где нить хранишь или все расчитывается только по регистрам?\r Пока просто в регистрах, потом хочу написать подсистему хранения остатков. Была интересная тема, посмотри: тута вот ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2003, 11:31 |
|
Структура хранения документов
|
|||
---|---|---|---|
#18+
У меня сейчас тоже проект, в котором есть и складской учет. На мой взгляд, все документы, которые мы используем для склада имеют одинаковую структуру: Шапка: Номер документа Дата документа Автор документа Клиент кому Клиент от кого Склад-отправитель Склад-получатель Табличная часть: Список товаров с необходимыми аттрибутами (нет необходимости их перечислять. В моей системе есть следующие складские документы (с указанием соотв. аттрибутов шапки для указанной структуры): Приходная накладная: Клиент кому — Фирма-хозяин склада, Клиент от кого — Фирма поставщик, Склад-отправитель — В данном случае указывается склад "Поставщик", что означает, что этот склад не принадлежит системе, Склад-получатель — Склад фирмы Точно так же работает расходная накладная, только уже склад-получатель указывается как "Покупатель" Перемещение между складами тоже точно также, только клиентом указывается одна и та же фирма Я к чему это тут описываю — хочу показать, что документы, которые обрабатывают данные склада, можно построить по одному принципу и хранить их все в одной таблице (шапки), а во второй хранить движения. Как насчет такого варианта? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2003, 11:45 |
|
Структура хранения документов
|
|||
---|---|---|---|
#18+
2 ale-805 С ПНк и РНк понял. Правда интересно, в чем различия? Да, еще вопрос по структуре "Регистра". Я смотрю ты делаешь две записи на одну проводку (ушло с одного, пришло на другой склад). А не сталкивался (или не было мыслей) в одну запись свернуть? Типа: -- Товар Куда Откуда Сколько -- В чем могут быть траблы или приимущества такой формы записи? 2 ingvarwolf А зачем так много аттрибутов? В чем принципиальная разница между "Клиент от кого" и "Склад-отправитель"? -- Клиент кому Клиент от кого Склад-отправитель Склад-получатель К тому же, как будет тогда выглядеть документ на списание товара? Какой-нить фиктивный склад "списание"? Вот табличую часть всех документов в принципе наверно можно хранить в одной таблице. Там ведь получается только номенклатура да количество сидит, которое во всех документах одинаковое. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2003, 16:11 |
|
Структура хранения документов
|
|||
---|---|---|---|
#18+
А зачем так много аттрибутов? В чем принципиальная разница между "Клиент от кого" и "Склад-отправитель"? -- Клиент кому Клиент от кого Склад-отправитель Склад-получатель К тому же, как будет тогда выглядеть документ на списание товара? Какой-нить фиктивный склад "списание"? Так много аттрибутов создано на тот случай, если поля "Клиент кому" и "Склад-получатель" имеют разные типы. У меня просто они имеют разные типы. Все вместе эти аттрибуты не используются в каждом документе. В расходной накладной используются [Клиент кому], [Склад-отправитель]; в приходной — [Клиент от кого], [Склад-получатель], в перемещении — [Склад-отправитель], [Склад-получатель], а в списании можно использовать только [Склад-отправитель]. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2003, 22:48 |
|
Структура хранения документов
|
|||
---|---|---|---|
#18+
2Ingvarwolf Понял, спасибо! 2ale-805 Куда же ты пропал? :( ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2003, 11:53 |
|
Структура хранения документов
|
|||
---|---|---|---|
#18+
Тута я. По поводу автор А не сталкивался (или не было мыслей) в одну запись свернуть? Типа: -- Товар Куда Откуда Сколько -- В чем могут быть траблы или приимущества такой формы записи? Не думал об этом. Если такая мысль возникает только из-за уменьшения количества записей, то, думаю, это неактуально (дублирование будет происходить только в 1 случае из 13, т.к. только в "Перемещении", а это 1/13 часть всех видов документов в нашей системе). А в остальных 12-ти плодить NULL-ы как-то не с руки.. Хотя на вкус и цвет.. А насчет автор Вот табличую часть всех документов в принципе наверно можно хранить в одной таблице. Там ведь получается только номенклатура да количество сидит, которое во всех документах одинаковое. Для нас опять же не годится, ибо не токма количество, а куча табличных реквизитов, как то себестоимость, прих. цена, расх. цена и т.д... Есть еще вопросы, задавай. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2003, 15:19 |
|
Структура хранения документов
|
|||
---|---|---|---|
#18+
Если делаете новое все - то во все шапки Документов всегда добавляейте поле - Код фирмы_хозяина. Люди любят в одной проге вести учет сразу по всем конторам...что у них есть.... Я это поле обозвал CD_SELF Оно также присутсвует всегда в любом фильтре (отчета...запроса...) И также - в таблицах описывающих некоторые настройки, например - списки бланковок (шаблонов) ....печати накладных.... ибо...им требуется иметь чуть-чуть разные внешние виды...этих самых шаблонов... чтобы никто догадаться не смог что все на одном принтере печатали :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2003, 18:15 |
|
Структура хранения документов
|
|||
---|---|---|---|
#18+
В шапке документа очень полезно иметь поле, которое отражает состояние документа (статус). Например: 1 - черновик 2 - готов 3 - состоялся 4 - проведен бухгадтерией У различных групп пользователей могут быть различные полномочия на изменения состояния документа. К тому же функциональность, которая позволяет что-либо делать с документом, тоже зависит от его состояния ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2003, 19:05 |
|
|
start [/forum/topic.php?fid=32&fpage=174&tid=1546712]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 238ms |
total: | 418ms |
0 / 0 |