powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Шаблон таблицы счетов и таблицы позиций
25 сообщений из 54, страница 1 из 3
Шаблон таблицы счетов и таблицы позиций
    #40081641
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня,

столкнулся с тем что в каждой конторе свой набор полей. Существует какой то паттерн на эти таблицы?

Спасибо.
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081642
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EAV, но ты его не осилишь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081643
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

EAV, но ты его не осилишь.

А ссылочку или расшифровку можно? Я бы попробовал, а то гугл на это сокращение ничего на выдаёт подходящего.

Спасибо.
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081645
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://www.google.com/search?q=database design EAV
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081651
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Спасибо. Судя по этой статье EAV предполагает проблемы с производительностью.
Хотя если таблицу объектов дополнить полями которые встречаются во всех сущностях и как правило участвующих в поиске можно частично решить проблему производительности в моём случае. (Имею ввиду поля типа номер документа, дата, сумма, количество ...)
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081670
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunEAV предполагает проблемы с производительностью.

Только в кривых руках. Я же сказал: ниасилишь.

PS: EAV идеально вписывается в концепцию ORM и прочего MVC. И наоборот - совершенно не вписывается в TDBGrid. И те, кто пытается её прогнуть под грид - пишут такие вот статьи.
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081676
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

базовая структура хоть одинаковая? Может, там только дополнительные столбцы отличаются?
А то вдруг пытаешься бухгалтерию со складом скрестить...
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081690
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hlopotun
Всем доброго дня,

столкнулся с тем что в каждой конторе свой набор полей. Существует какой то паттерн на эти таблицы?

Спасибо.

Знаю человека, который обслуживает несколько контор, для каждой конторы - свой проект. Не жалуется.

У нас - вариант EAV. Все равно, каждая контора - свой проект. Да, код ядра один, но плагины, отчеты, документация - для каждой конторы свои. Поначалу было геморно, но все уже заточено.

Ещё видел вариант, когда код ядра один, но схема базы разная, при этом в базе ведется словарь, отвечающий ха правила отображения, разграничения, и т.п. Т.е., таблички создаются на лету, как в EAV, но - таблички реальные, физические. Имхо, тут проблем, связанных с EAV, меньше. Ядро, при запуске, на основе словаря, показывает доступные данному пользователю справочники, поля, действия.
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081693
istrebitel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если для бухгалтерии, то обычно делается каталог плана счетов, каталог самих счетов, таблица проводок.
Планы счетов
id name1001 Бух. учёт1002 Нал. учёт
Код аналитики обозначает сущность например 1 - контрагент, 2 - договор, 3 - накладная/акт.
Счета
id plan acc name analitcode1 analitcode2 analitcode3 analitcode4 analitcode5 analitcode6123123 1001 60.2 РАСЧЕТЫ С ПОСТАВЩИКАМИ И ПОДРЯДЧИКАМИ 1 2 3 null null null123124 1001 62.2 РАСЧЕТЫ С ПОКУПАТЕЛЯМИ И ЗАКАЗЧИКАМИ 1 2 3 null null null
Проводки
id date accd analitcoded1 analitvalued1 analitcoded2 analitvalued2 analitcoded3 analitvalued3 ... acck analitcodek1 analitvaluek1 analitcodek2 analitvaluek2 analitcodek3 analitvaluek3 ...566765 05.07.2021 123123 1 org_id 2 contr_id 3 doc_id ...
Для ускорения работы делают денормализацию и хранят № счетов в проводках, чтобы можно было делать запросы like '60.1%'
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081782
bum_bum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
istrebitel
Если для бухгалтерии, то обычно делается каталог плана счетов, каталог самих счетов, таблица проводок.
Планы счетов
id name1001 Бух. учёт1002 Нал. учёт

План счетов устанавливается государством или над-государственными органами. Его структура проста:
1. Номер счёта;
2. Наименование счёта.
3. Номер основного счёта (только для субсчетов)
Можно добавить поле для комментариев.
Предприятие может, следуя рекомендациям, вводить свои субсчета.

Аналогично, государство устанавливает корреспонденцию счетов:
1. Дебет-счёт;
2. Кредит-счёт.
Может быть добавлено поле для комментариев.
Предприятие может добавить свои проводки для субсчетов и ограничить использование установленных государством корреспондирующих счетов. Поэтому, можно добавить логическое поле, как флаг допускающий/запрещающий конкретный вид проводок на данном предприятии. Можно поступить иначе, введя дополнительную таблицу допустимых видов проводок для данного предприятия, эта таблица будет простым подмножеством корреспонденций, плюс проводки по субсчетам.

Далее, есть типы документов, которые подлежат бухгалтерскому/налоговому учёту. Перечень этих типов документов может меняться.
Есть документы, подлежащие учёту, и позиции этих документов.

Типы документов:
1. Обозначение типа документа;
2. Название типа документа.

Документы:
1. Идентификатор документа:
2. Тип документа
3. Номер документа;
4. Дата документа;
5. Организация источник документа;
6. Основание документа;
7. Сумма по документу;
8. Сумма с учётом налогов;
9. ...

Позиции документов:
1. Идентификатор позиции;
2. Ссылка на документ;
3. Номер позиции в документе;
4. Содержание позиции (например, наименование материалов);
5. Количество;
6. Цена;
7. Сумма;
8. Общая сумма с учётом налогов;
9. ...

Далее необходимо учитывать налоги, которых может быть много, и ставки которых меняются со временем. Какие-то налоги могут отменять, какие-то вводить.
Виды налогов:
1. Идентификатор налога;
2. Обозначение налога;
3. Название налога;
4. Дата введения;
5. Дата отмены;
6. Описание.

Ставки по налогам:
1. Идентификатор ставки;
2. Ссылка на вид налога:
3. Размер ставки в %;
4. Размер ставки (номинальный);
5. Описание.

Налоги по документам:
1. Ссылка на документ;
2. Ссылка на ставку налога;
3. Сумма налога;
4. Обоснование.

Налоги по позиции документов:
1. Ссылка на позицию;
2. Ссылка на ставку налога;
3. Сумма налога;
4. Обоснование.

Над этой первичной информацией настраиваются разного рода аналитические блоки, которые решают различные частные задачи учёта.

istrebitel
Код аналитики обозначает сущность например 1 - контрагент, 2 - договор, 3 - накладная/акт.
Счета
id plan acc name analitcode1 analitcode2 analitcode3 analitcode4 analitcode5 analitcode6123123 1001 60.2 РАСЧЕТЫ С ПОСТАВЩИКАМИ И ПОДРЯДЧИКАМИ 1 2 3 null null null123124 1001 62.2 РАСЧЕТЫ С ПОКУПАТЕЛЯМИ И ЗАКАЗЧИКАМИ 1 2 3 null null null

Проводки
id date accd analitcoded1 analitvalued1 analitcoded2 analitvalued2 analitcoded3 analitvalued3 ... acck analitcodek1 analitvaluek1 analitcodek2 analitvaluek2 analitcodek3 analitvaluek3 ...566765 05.07.2021 123123 1 org_id 2 contr_id 3 doc_id ...
Для ускорения работы делают денормализацию и хранят № счетов в проводках, чтобы можно было делать запросы like '60.1%'
Не надо делать денормализацию... Это плохо сказывается в последствии, IMHO.
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081824
bum_bum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Самое главное, как всегда... забыл :)

Таблица проводок:
1. Дебетовый счёт;
2. Кредитовый счёт;
3. Ссылка на позицию документа;
4. Сумма проводки;
5. Исполнитель проводки;
6. Дата и время проводки.

Дебетовый и кредитовый счета - это ссылка на таблицу корреспонденции счетов.
Первичный (уникальный) ключ составляют первые три поля.
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081831
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
05.07.2021 15:14, bum_bum пишет:
> Первичный (уникальный) ключ составляют первые три поля.

не надо так делать
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081880
bum_bum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий

05.07.2021 15:14, bum_bum пишет:
> Первичный (уникальный) ключ составляют первые три поля.

не надо так делать

Почему? Установка партии?
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081883
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как минимум - это мешает по одной позиции сделать две проводки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081889
bum_bum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Как минимум - это мешает по одной позиции сделать две проводки.

А если подумать?... Можно сделать любое количество проводок, по разным парам дебет-кредит. А вот по одной и той же паре, сделать более одной проводки позиции документа на самом деле нельзя. Это ограничение придумано не мной.
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081891
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
05.07.2021 17:33, bum_bum пишет:
>
> Почему? Установка партии?

не нужно делать составной первичный ключ из трех полей.
на него же потом внешние ключи накладывать предстоит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081893
bum_bum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий

05.07.2021 17:33, bum_bum пишет:
>
> Почему? Установка партии?

не нужно делать составной первичный ключ из трех полей.
на него же потом внешние ключи накладывать предстоит.

Так это весьма удобно и информативно. К тому же я указал, что можно не первичный ключ, если религия запрещает, но ограничение уникальности всё равно делать надо. Плодить или не плодить ограничения - выбор каждого. Споры о суррогатных ключах - давняя история, и каждый волен решать для себя сам, что использовать.
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081898
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
05.07.2021 17:55, bum_bum пишет:
>
> Так это весьма удобно и информативно.

это заи@аться при написании JOIN-ов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081901
bum_bum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий

05.07.2021 17:55, bum_bum пишет:
>
> Так это весьма удобно и информативно.

это заи@аться при написании JOIN-ов.

Во-первых, потребность в JOIN резко сокращается, во-вторых, есть USING.
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081904
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
05.07.2021 18:05, bum_bum пишет:
> Во-первых, потребность в JOIN резко сокращается

уже смешно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081905
bum_bum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий

05.07.2021 18:05, bum_bum пишет:
> Во-первых, потребность в JOIN резко сокращается

уже смешно.
Смех без причины...
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081907
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bum_bum,

> Во-первых, потребность в JOIN резко сокращается, во-вторых, есть USING.

это за счёт чего же она сокращается?
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081910
bum_bum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис
bum_bum,

> Во-первых, потребность в JOIN резко сокращается, во-вторых, есть USING.

это за счёт чего же она сокращается?
За счёт того, что не надо соединяться с первичными таблицами, чтобы разыменовывать каждое поле внешнего ключа.
Ну, представьте, что нам нужно сформировать "главную книгу" или "книгу продаж"... В предложенной модели, мы просто проходим по таблице проводок и всё, никаких соединений делать не надо. Если же таблицы имеют суррогатные ключи, то надо соединяться с таблицей Счетов, чтобы выбирать только те счета, которые нужны. По ID счёта невозможно сказать, какой счёт за ним стоит, да, и про сам ID, пользователи ничего не знают. И это касается практически всей бухгалтерской аналитики.
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081918
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ого, борцы за естественные ключи. Начало очередного цикла Швабе-Вольфа.
...
Рейтинг: 0 / 0
Шаблон таблицы счетов и таблицы позиций
    #40081926
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bum_bum> За счёт того, что не надо соединяться с первичными таблицами,
bum_bum> чтобы разыменовывать каждое поле внешнего ключа.

Когда нужно только разыменовывание - возможно.
Но как только понадобится всё остальное - уже неудобно.

Я как раз щас имею дело с одной такой БД, в которой
ПК - это varchar (при чём 1 поле, а не три). Не сказал бы,
что это очень удобно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 1 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Шаблон таблицы счетов и таблицы позиций
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]