|
1С устарела в доменах данных? mikecool, rozer76, Blazdan, RomanYS, trad, PR, Злопчинский, Ненавижу 1С, formista2000, georgebgk, Irbis, paramedic, ivanov-i-i, Гений 1С, Krendel, wHammer, Галахад, PLUT, LoneMan, Хряк, Волшебник, Fragster, alexxx961503, AleksandrM09, Шурик71, JanK, andmaxx, Lama12, Amra, Эх-эх-эх, shuhard, andy_minsk, renegade, 1cVandal, agres, Пушкин, Zamestas, Ботаник Гарден Меран, Молочный брат, dedmoroz777, Fish, Homer, John D, Sserj, boozin, viraboy, spiller26, zenik, VladZ, 2S, Ногаминебить, Vstur, LienXo, Greeen
| ☑ | ||
|---|---|---|---|---|
|
0
Гений 1С
гуру
09.11.26
✎
17:09
|
Когда я проектировал Free 1s, столкнулся с архитектурной проблемой.
Что сделать, один документ поступление товаров (с видом операции от поставщика, возврат от покупателя, прием на хранение, прием на комиссию) Или четыре документа: Поступление от поставщика, возврат от покупателя, прием на хранение, прием на комиссию. Аналогичные проблемы возникают и с контрагентами-партнерами, физлицами, контактными лицами, которые являются частями друг друга. Спросил у ИИ, оно ничего толкового не сказало, так как это сейчас грамотно проектируется (не в 1С конечно)? Ответ ИИТакие базы данных и подходы к организации данных называются объектно-ориентированными или объектно-реляционными базами данных. ———————— 📚 1. Объектно-ориентированные СУБД (OODBMS / ООБД) Базы данных, которые изначально проектировались вокруг парадигм ООП (классы, полиморфизм, наследование, инкапсуляция). ⦁ Суть: В таких СУБД нет традиционных таблиц в реляционном понимании. Вы создаете класс Документ, объявляете дочерние классы ПриходнаяНакладная и РасходнаяНакладная, и они напрямую сохраняются в хранилище как объекты. ⦁ Примеры: InterSystems Caché / IRIS, ObjectStore, db4o, Versant. ⦁ Минусы: На практике чистые ООБД сейчас используются редко из-за сложности построения произвольных аналитических выборок, агрегаций и стандартизации (SQL в них заменен на OQL или языковые API). ———————— 📚 2. Объектно-реляционные СУБД (ORDBMS) Реляционные базы, в которые встроена поддержка объектных концепций (включая наследование таблиц на уровне движка). Самый яркий и популярный пример — PostgreSQL. В PostgreSQL есть нативное наследование таблиц (INHERITS): -- Базовая таблица CREATE TABLE documents ( id SERIAL PRIMARY KEY, doc_number VARCHAR(50), doc_date DATE, status VARCHAR(20) ); -- Таблица-наследник CREATE TABLE incoming_invoices ( incoming_number VARCHAR(50), incoming_date DATE, counterparty_id INT ) INHERITS (documents); -- Таблица-наследник CREATE TABLE outgoing_invoices ( outgoing_number VARCHAR(50), outgoing_date DATE, counterparty_id INT ) INHERITS (documents); ⦁ При запросе SELECT * FROM documents база вернет все документы (и базовые, и приходные, и расходные). ⦁ При запросе SELECT * FROM incoming_invoices вернутся только приходные со всеми своими и унаследованными полями. ———————— 📚 3. ORM-паттерны в классических реляционных БД (RDBMS) В современной промышленной разработке чаще всего используют стандартные реляционные СУБД (PostgreSQL, MySQL, MS SQL, Oracle), а само наследование реализуют через слой ORM (Object-Relational Mapping). Описанная вами задача решается одним из паттернов Мартина Фаулера (Inheritance Mapping Patterns): 1. Class Table Inheritance (Joined Table Inheritance): ⦁ Создается таблица documents с общими полями (id, number, date, status). ⦁ Создаются отдельные таблицы incoming_invoices и outgoing_invoices, где первичный ключ id одновременно является внешним ключом (FOREIGN KEY) к documents.id. ⦁ При выборке конкретного документа ORM делает JOIN, а при выборке общего реестра читается только базовая таблица. 2. Single Table Inheritance (STI): ⦁ Все поля всех типов документов хранятся в одной таблице, плюс поле type (дискриминатор). Поля, специфичные для конкретного подтипа, остаются NULL для остальных. 3. Concrete Table Inheritance: ⦁ Каждая накладная живет в отдельной таблице, полностью дублируя общие поля базового документа. ———————— 📚 4. Документоориентированные NoSQL БД Если вам важна гибкость схемы (schemaless), когда базовые атрибуты общие, а специфичные зависят от типа: ⦁ Примеры: MongoDB, Couchbase или реляционные БД с колонками JSONB (PostgreSQL). ⦁ Суть: В единой коллекции документов хранятся JSON-объекты. У всех документов есть поля number, date, status, но в зависимости от типа структуры документа вложенный объект attributes содержит индивидуальный набор полей. |
|||
|
1
Fish
гуру
09.11.26
✎
17:11
|
(0) "Что сделать..." - Нанять грамотного системного архитектора.
|
|||
|
2
RomanYS
09.11.26
✎
17:16
|
(0) ожидается один универсальный ответ?
Реализация от целей и требований зависит. |
|||
|
3
Волшебник
09.11.26
✎
17:19
|
Если ограничиться бухучётом, то документ "Операция" заменяет все остальные.
|
|||
|
4
Гений 1С
гуру
09.11.26
✎
17:27
|
(2) ожидается озвучивание подходов. например, как расписать эти документы в подобной объектной базе.
Цель - красиво расписать структуру данных. (3) и один справочник AnyObject, ага. Давайте без фанатизма. |
|||
|
5
LoneMan
09.11.26
✎
17:33
|
Я бы посмотрел как это сделано в сторонних системах типа SAP, чтобы понимать как люди вообще ведут учёт.
|
|||
|
6
Гений 1С
гуру
09.11.26
✎
17:35
|
(5) я знаю, как это сделано в Navision, там обычные таблицы Customers, Vendors и т.п. С документами что-то в этом духе.
Не думаю что в SAPе начали использовать домены данных. Там такие же реляционные таблицы. |
|||
|
7
mikecool
09.11.26
✎
17:35
|
(5) если я правильно помню, а мне Мойша напел по телефону, то эта симфония звучит как (3)
то бишь - все ручками-ручками |
|||
|
8
Ненавижу 1С
гуру
09.11.26
✎
17:39
|
разные сущности, применять композицию и паттерн Декоратор
|
|||
|
9
Ненавижу 1С
гуру
09.11.26
✎
17:40
|
(6) таблицы вообще не первичны, это периферия хранения сущностей
|
|||
|
10
Гений 1С
гуру
09.11.26
✎
17:40
|
(8) чего сказать то хотел?
|
|||
|
11
Ненавижу 1С
гуру
09.11.26
✎
17:41
|
(10) какое слово непонятно в фразе?
|
|||
|
12
Гений 1С
гуру
09.11.26
✎
17:42
|
(11) ты не понял мой вопрос?
|
|||
|
13
Krendel
09.11.26
✎
17:43
|
(4) Ну так расписывай, показывай, а мы посмотрим -красиво или нет
|
|||
|
14
Krendel
09.11.26
✎
17:45
|
(0) в тз указано что проектировал -т.е. уже должны быть результаты проекта
|
|||
|
15
Гений 1С
гуру
09.11.26
✎
17:47
|
(13) что расписывать. Я не знаю методики, потому и справшиваю, кто сталкивался. ИИ тоже не знает
(14) Если я тебе что-то должен, покажи расписку. |
|||
|
16
Ненавижу 1С
гуру
09.11.26
✎
17:49
|
(12) ты решил что тут конкурс демагогии?
|
|||
|
17
mikecool
09.11.26
✎
17:50
|
пришел Серега и всех начал гнобить ))
но мне больше вспоминается поговорка "никто так хорошо не разбирается в дорогих часах, как нищий" |
|||
|
18
Krendel
09.11.26
✎
17:51
|
В чем преимущество управления доменами данных по сравнению с формами организации баз данных?
|
|||
|
19
Гений 1С
гуру
09.11.26
✎
17:51
|
(18) в простоте проектирования, в отсутствии компромиссов в архитектуре, примеры которых описаны в сабже.
|
|||
|
20
Krendel
09.11.26
✎
17:54
|
(15) тогда какой смысл задавать вопрос и ждать ответа, если сам не хочешь отвечать на банальные вопросы согласования времен
|
|||
|
21
Гений 1С
гуру
09.11.26
✎
18:04
|
Ну как самое тупое решение в духе VMT (таблица виртуальных методов) в том же примере добавляем в таблицу Документ поле "вид операции".
Тогда если вид операции = "Поступление от поставщика" то линкуется таблица ПоступлениеОтПоставщика_Реквизиты ну и доп.реквизиты табличных частей, например ПоступлениеОтПоставщика_Запасы_Реквизиты И получается, что для таблицы поступление от поставщика мы можем добавлять доп. поля. Но мало того, "Поступление от поставщика" всегда наследует поля вида операции "Поступление" (контрагент, договор, номер вх, дата вх) и просто таблицы документ (номер, дата) Хотя это конечно, можно сделать наследования, включая сетевое наследование - наследование от двух и более объектов |
|||
|
22
Гений 1С
гуру
09.11.26
✎
17:55
|
(20) на какой вопрос, имеющий отношение к теме, я не ответил? повтори, отвечу.
|
|||
|
23
Krendel
09.11.26
✎
17:55
|
(19) ну раз есть простота проектирования, то в чем сложность в 0?
|
|||
|
24
Гений 1С
гуру
09.11.26
✎
17:57
|
(23) где есть? мой запрос на описание методов доменного проектирования. Искал их в ИИ, не нашел. Спрашиваю, может кто знает
|
|||
|
25
Krendel
09.11.26
✎
17:57
|
(22) в (14)
|
|||
|
26
Krendel
09.11.26
✎
17:59
|
(24) я просто не понимаю термина "доменное проектирование", если есть 6 форм организации бд. 1с использует 3ю форму
|
|||
|
27
Ненавижу 1С
гуру
09.11.26
✎
17:59
|
(24) ты хоть одну книгу прочел про доменное проектирование?
|
|||
|
28
Гений 1С
гуру
09.11.26
✎
18:05
|
(25) не понял отсылки.
(26) ты про реляционные БД? (27) я учусь не по книгам. |
|||
|
29
Krendel
09.11.26
✎
18:07
|
(28) конечно
|
| Форум | Правила | Описание | Секции | Поиск |