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

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

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

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

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

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

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

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

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

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

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

Спасибо.

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

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

Ещё видел вариант, когда код ядра один, но схема базы разная, при этом в базе ведется словарь, отвечающий ха правила отображения, разграничения, и т.п. Т.е., таблички создаются на лету, как в EAV, но - таблички реальные, физические. Имхо, тут проблем, связанных с EAV, меньше. Ядро, при запуске, на основе словаря, показывает доступные данному пользователю справочники, поля, действия.
...
Рейтинг: 0 / 0
05.07.2021, 06:45
    #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
05.07.2021, 12:38
    #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
05.07.2021, 15:14
    #40081824
bum_bum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблон таблицы счетов и таблицы позиций
Самое главное, как всегда... забыл :)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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