Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Плоскости учета / 25 сообщений из 56, страница 1 из 3
14.05.2005, 10:02
    #33063954
valmond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
На данном форуме уже поднимался вопрос, как вести учет в нескольких валютах, по подразделениям.
Например
Структура таблицы бухгалтерских проводок не дает покоя !!!!
Литература

Но я так и не могу понять, как лучше вести учет в ситуации, когда надо вести мультивалютный учет по нескольким структурам центров затрат.
Т.е. существует не один тип плоскостей учета, а несколько.
А если кол-во типов плоскостей динамичное?


Что такое "несколько структур центров затрат".
Это, например, деление по региональному признаку и деление по отраслевому признаку.
Предположим, что такое деление необходимо только для агрегирования данных по узлам.
...
Рейтинг: 0 / 0
14.05.2005, 11:05
    #33064115
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
По сути два вопроса.
1) про валюту. Можно в таблице Проводка (или Полупроводка, если используется этот вариант, кстати, когда бухгалтер реально видит полупроводку, то этот термин проблем не вызывает.) иметь два поля: Валюта_операции, Валюта_баланса, и на каждую операцию создавать столько строк, сколько нужно валют баланса. Как вы будете пересчитывать валюты - это определяется законодательством и учетной политикой.
Например, одно из типичных заблуждений - отражение в учете разниц по договорам, номинированым в "валюте по курсу ЦБ", но операции по которым выполняются в рублях, как реальных курсовых разниц с поледующщим налогообложением.
2) про аналтику - см. топики. Или попробуйте сформулировать проблему конкретней.
...
Рейтинг: 0 / 0
14.05.2005, 11:36
    #33064210
valmond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
По валюте все и так понятно.

Непонятно как раз по второму вопросу.
Допустим, ведем учет начислений по сотрудникам.
В организации существует несколько логических делений на группы.
Скажем первое деление по регионам, второе деление по должностям (например, все HR менеджеры всех регионов собранны в одну группу), третье деление по проф. уровню (т.е. аналог звания, скажем, военного).
Предполагается, что хранить надо произвольное число таких структур. Это предположение основано на том, что необходимо вести одновременный учет не одной компании, а нескольких и заранее знать о всех структурных делениях всех компаний мы не можем.
Все это разбиение на структуры необходимо для того, чтобы в дальнейшем подсчитать затраты на персонал с разных точек зрения. Зачем это нужно, я думаю понятно.

Я пояснил вопрос?
...
Рейтинг: 0 / 0
14.05.2005, 16:50
    #33065211
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
valmondПредполагается, что хранить надо произвольное число таких структур.
Произвольное - это 20, 2000 ? Если 20, то годится структура
Код: plaintext
Аналитический_разрез(ИДРазреза,ИДАналитики01,...ИДАналитики20,..) 
с вариациями, где i=1,20 - типы аналитики.
Если 2000, увы только,
Код: plaintext
Значение_разреза_для_проводки (ИДпроводки,ИДТипаАналитики,Значение)
Если мало, то пишем по горизонтали, а много - по вертикали. Действует со времен перфокарт :).
...
Рейтинг: 0 / 0
14.05.2005, 17:00
    #33065243
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
Наверное тут речь идет об аналоге системы "субконто" принятой в 1С. Т.е. что-то в виде измерений аналитики. В 1С кол-во субконто вроде бы задается на этапе создания базы и не меняется.Эдакий план в плане счетов. И в идеале предлагается изобрести систему, такую, чтобы количество измерений аналитики могло быть произвольным. И чтоб это все работало быстро. Я правильно все понял?
...
Рейтинг: 0 / 0
14.05.2005, 17:05
    #33065253
valmond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
gardenmanНаверное тут речь идет об аналоге системы "субконто" принятой в 1С. Т.е. что-то в виде измерений аналитики. В 1С кол-во субконто вроде бы задается на этапе создания базы и не меняется.Эдакий план в плане счетов. И в идеале предлагается изобрести систему, такую, чтобы количество измерений аналитики могло быть произвольным. И чтоб это все работало быстро. Я правильно все понял?

Почти правильно. Т.е. правильно все за исключением вопроса производительности. Хочу этот вопрос пока оставить. Есть же несколько вариантов решения производительности.

измерения аналитики это не стандартная задача?
...
Рейтинг: 0 / 0
14.05.2005, 17:22
    #33065293
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
слушайте gardenman он хорошо про плоскости учета расскажет и, к стати, где-то тут скрипт БД приводил


Что такое "несколько структур центров затрат".

а это уже больше про план счетов. Т.е. как обычно

План счетов->Счета->Проводки
...
Рейтинг: 0 / 0
14.05.2005, 17:28
    #33065303
valmond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
funikovyuriслушайте gardenman он хорошо про плоскости учета расскажет и, к стати, где-то тут скрипт БД приводил


Знаю, я с этого и начал.
Но там все относилось к одному типу плоскостей.
Или валюты, или регионы...а надо одновременно.

funikovyuri
Что такое "несколько структур центров затрат".
а это уже больше про план счетов. Т.е. как обычно

План счетов->Счета->Проводки


К сожалению не нашел ничего путного на тему плана счетов. Из постов gardenman -а видно, что аналитика на счета завязанна, но что-то не соображается ничего :-(
...
Рейтинг: 0 / 0
14.05.2005, 17:40
    #33065339
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
Если говорить о плане счетов - то его действительно легко представить в виде дерева. Но вот если говорить о субконто - это не дерево - это все-же измерения, и работать с ними надо как-то по-другому. У меня пока на эту тему мыслей не было. Я - пас...
...
Рейтинг: 0 / 0
14.05.2005, 17:58
    #33065375
valmond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
gardenmanЕсли говорить о плане счетов - то его действительно легко представить в виде дерева. Но вот если говорить о субконто - это не дерево - это все-же измерения, и работать с ними надо как-то по-другому. У меня пока на эту тему мыслей не было. Я - пас...


Так по хорошему в какую сторону надо думать? в сторону плана счетов (т.е. по сути получится несколько планов счетов, каждый для своей комбинации типов плоскостей, так?) или все же в сторону субконто?

Или выделить из типов плоскостей какие-то (например валют, которая есть в любом случае) и сделать как в Вашем примере?
...
Рейтинг: 0 / 0
14.05.2005, 18:22
    #33065409
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
valmond

угу - я бы думал в сторону нескольких планов счетов. А плоскость учета формируется на основании валюты проводок, а не валюты самих счетов
...
Рейтинг: 0 / 0
14.05.2005, 18:28
    #33065419
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
Понимаете, я автоматизировал банк. А чтобы дать ответ на ваш вопрос, и предложить решение, за которое потом мне не было бы стыдно - мне нужно сначала досконально изучить вашу задачу. А это - не реально.
...
Рейтинг: 0 / 0
14.05.2005, 18:35
    #33065424
valmond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
gardenmanПонимаете.... А это - не реально.

Да....понимаю, конечно.

Попробую перефразировать немного...может станет чуть понятнее и появятся какие-то мысли...(кстати можно писать все мысли, что есть...не виду смысла стыдить кого-то за что-то...было бы совсем простое решение, то или сам бы догадался или вы бы тут сразу сказали что да как).

Общая задача - расчет заработной платы.
компания логически делится на регионы и на центры затрат.
Зарплату получают как в рублях так и в usd, налоги платят в рублях.
В итоге хочется понять сколько было затраченно (и на что) для каждого региона и для каждого центра затрат в каждой валюте.
...
Рейтинг: 0 / 0
14.05.2005, 19:04
    #33065448
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
в принципе в RS-Balance была возможность наворота произвольного количества разрезов на счет.

Если правильно помню, там были таблицы
Проводки
Проводки_Аналитики

где каждая проводка могла быть детализирована массой проводок аналитики (по каждому разрезу), (т.е. запись в "проводки" можно было бы считать агрегирующей для записей разрезов, но, на деле, разница между суммой аналитических проводок по разрезу и (полной) суммой проводки в "проводки" рассматривалась как проводка по "неизвестному объекту" данного разреза (чем обеспечивалось совпадение сумм проводок, считаемым по всем разрезам, и возможность постепенного уточнения "неопределенной" части разрезов)
...
Рейтинг: 0 / 0
14.05.2005, 20:49
    #33065513
Programmer_Ortodox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
Давно никуда не встревал, тоже встряну
Вот примерная "рыба" озвученных автором хотелок
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
/*RDBMS: FIREBIRD/INTERBASE*/
SET SQL DIALECT  3 ;
CREATE DATABASE "D:\DATA\IBDATA\TEMP2.GDB" USER "SYSDBA"
PASSWORD "masterkey" PAGE_SIZE  4096 ;

/* Ñïðàâî÷íèê ñ÷åòîâ(ðåãèñòðîâ ó÷åòà)("äðåâåñíûé") */
CREATE TABLE Acc(
 ID      BIGINT DEFAULT  0  NOT NULL, /* ID-ðåãèñòðà(ñ÷åòà) */
 PARENT  BIGINT DEFAULT  0  NOT NULL, /* ID-ðîäèòåëÿ ðåãèñòðà(ñ÷åòà) */
 SIGN    VARCHAR( 16 ),               /* SIGN: Òèïà: '19.ÍÄÑ18%'...'41.ÌËß.ÌËß'*/
 AccYype CHAR( 1 ),                   /* 'À', 'Ï', ... */
 /* ...ìëÿ-ìëÿ-ìëÿ...*/
 NAME    VARCHAR( 128 ),
PRIMARY  KEY(ID),
CONSTRAINT PARENT_Acc FOREIGN KEY(PARENT) REFERENCES Acc(ID)
);

/* Ñïðàâî÷íèê îáúåêòîâ ó÷åòà("äðåâåñíûé") */
CREATE TABLE Object(
 ID     BIGINT DEFAULT  0  NOT NULL,  /* ID-îáúåêòà ó÷åòà */
 PARENT BIGINT DEFAULT  0  NOT NULL,  /* ID-ðîäèòåëÿ îáúåêòà ó÷åòà */
 /* ...ìëÿ-ìëÿ-ìëÿ...*/
 NAME   VARCHAR( 128 ),
PRIMARY KEY(ID),
CONSTRAINT PARENT_Obj FOREIGN KEY(PARENT) REFERENCES Object(ID)
);

/* Ñïðàâî÷íèê ìíîæåñòâ "ñóáêîíòî" ("äðåâåñíûé") */
/* Ññûëêà íà ID,-ññûëêà íà åäèíè÷í.ýëåìåíò èëè íà ïàïêó(ïîääåðåâî) */
CREATE TABLE ObjLink(
 ID     BIGINT DEFAULT  0  NOT NULL,  /* ID-îáúåêòà ó÷åòà */
 PARENT BIGINT DEFAULT  0  NOT NULL,  /* ID-ðîäèòåëÿ îáúåêòà ó÷åòà */
 /* ...ìëÿ-ìëÿ-ìëÿ...*/
 NAME   VARCHAR( 128 ),
PRIMARY KEY(ID),
CONSTRAINT PARENT_ObjLink FOREIGN KEY(PARENT) REFERENCES ObjLink(ID),
CONSTRAINT PARENT_Objects FOREIGN KEY(ID) REFERENCES Object(ID)
);

/* Òàáëèöà îïåðàöèé(ïðîâîäîê) */
CREATE TABLE OPERS(
 /*-------------------------Êîðïî-êîíñîëèäàöèÿ:-------------*/
 /* --- ìëÿ-ìëÿ-ìëÿ ---*/
 /*-------------------------Ïðèêëàä:------------------------*/
 OP_DOC_ID  BIGINT DEFAULT  0  NOT NULL,  /* Äîêóìåíò-ðîäèòåëü ïðîâîäêè */
 OP_ID      BIGINT DEFAULT  0  NOT NULL,  /* ID-ïðîâîäêè */
 OP_DATE    DATE DEFAULT 'NOW' NOT NULL,/* Äàòà îïåðàöèè */
 OP_ACC_D   INTEGER DEFAULT  0  NOT NULL, /* Ñ÷åò(ðåãèñòð) ïî äåáåòó*/
 OP_OBJ_D   BIGINT DEFAULT  0  NOT NULL,  /* Îáúåêò ó÷åòà ïî äåáåòó */
 OP_ACC_K   INTEGER DEFAULT  0  NOT NULL, /* Ñ÷åò(ðåãèñòð) ïî êðåäèòó */
 OP_OBJ_K   BIGINT DEFAULT  0  NOT NULL,  /* Îáúåêò ó÷åòà ïî êðåäèòó */
 OP_KOL     DOUBLE PRECISION DEFAULT  0 . 0  NOT NULL, /* Êîëè÷åñòâî */
 OP_SUM     DOUBLE PRECISION DEFAULT  0 . 0  NOT NULL, /* Ñóììà */
 MONEY_ID   INTEGER DEFAULT  1  NOT NULL,            /*Âàëþòà */
 MONEY_RATE DOUBLE PRECISION DEFAULT  1 . 0  NOT NULL, /*Êóðñ íà äàòó OP_DATE*/
 /*-------------------------System:-------------------------*/
 OP_DT_CRE  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,/*Äàòà è âðåìÿ ñîçäàíèÿ*/
 OP_DT_EDI  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,/*Äàòà è âðåìÿ ìîäèôèêàöèè*/
 CREATOR_ID INTEGER DEFAULT  0  NOT NULL,        /*Ïîëüçîâàòåëü-ñîçäàòåëü*/
 EDITOR_ID  INTEGER DEFAULT  0  NOT NULL,        /*Ïîëüçîâàòåëü-ìîäèôèêàòîð*/
PRIMARY KEY(OP_ID),
/*Íåìíîãî äåêëàðàöèé îò äóðàêà*/
CONSTRAINT PARENT_ACC_D FOREIGN KEY(OP_ACC_D) REFERENCES ACC(ID),
CONSTRAINT PARENT_ACC_K FOREIGN KEY(OP_ACC_K) REFERENCES ACC(ID),
CONSTRAINT PARENT_JBJ_D FOREIGN KEY(OP_OBJ_D) REFERENCES ObjLink(ID),
CONSTRAINT PARENT_JBJ_K FOREIGN KEY(OP_OBJ_K) REFERENCES ObjLink(ID)
);

/*
 OP_ACC_D, OP_ACC_k - ññûëêà íà ðåãèñòð(ñ÷åò)
 OP_OBJ_D, OP_OBJ_K - ññûëêà íà çàïèñü(ýòî ìîæåò áûòü è "ïàïêà"
 â òàáëèöå ðàñøèôðîâêè "ñóáêîíòî") â ObjLink,äàëüøå ðàñøèôðîâêà â Object
 ÈÌÅÅÌ: ïðîâîäêà ìîæåò õðàíèòü ïðîèçâîëüíîå êîëè÷åñòâî ñóáêîíòî,
 êàæäûé èç êîòîðûõ ìîæåò èìåòü ïðîèçâîëüíîå êîëè÷.óðîâíåé èåðàðõèè...
*/
...
Рейтинг: 0 / 0
14.05.2005, 20:50
    #33065516
Programmer_Ortodox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
Блин, кириллицы не видать, почему?
/*RDBMS: FIREBIRD/INTERBASE*/
SET SQL DIALECT 3;
CREATE DATABASE "D:\DATA\IBDATA\TEMP2.GDB" USER "SYSDBA"
PASSWORD "masterkey" PAGE_SIZE 4096;

/* Справочник счетов(регистров учета)("древесный") */
CREATE TABLE Acc(
ID BIGINT DEFAULT 0 NOT NULL, /* ID-регистра(счета) */
PARENT BIGINT DEFAULT 0 NOT NULL, /* ID-родителя регистра(счета) */
SIGN VARCHAR(16), /* SIGN: Типа: '19.НДС18%'...'41.МЛЯ.МЛЯ'*/
AccYype CHAR(1), /* 'А', 'П', ... */
/* ...мля-мля-мля...*/
NAME VARCHAR(128),
PRIMARY KEY(ID),
CONSTRAINT PARENT_Acc FOREIGN KEY(PARENT) REFERENCES Acc(ID)
);

/* Справочник объектов учета("древесный") */
CREATE TABLE Object(
ID BIGINT DEFAULT 0 NOT NULL, /* ID-объекта учета */
PARENT BIGINT DEFAULT 0 NOT NULL, /* ID-родителя объекта учета */
/* ...мля-мля-мля...*/
NAME VARCHAR(128),
PRIMARY KEY(ID),
CONSTRAINT PARENT_Obj FOREIGN KEY(PARENT) REFERENCES Object(ID)
);

/* Справочник множеств "субконто" ("древесный") */
/* Ссылка на ID,-ссылка на единичн.элемент или на папку(поддерево) */
CREATE TABLE ObjLink(
ID BIGINT DEFAULT 0 NOT NULL, /* ID-объекта учета */
PARENT BIGINT DEFAULT 0 NOT NULL, /* ID-родителя объекта учета */
/* ...мля-мля-мля...*/
NAME VARCHAR(128),
PRIMARY KEY(ID),
CONSTRAINT PARENT_ObjLink FOREIGN KEY(PARENT) REFERENCES ObjLink(ID),
CONSTRAINT PARENT_Objects FOREIGN KEY(ID) REFERENCES Object(ID)
);

/* Таблица операций(проводок) */
CREATE TABLE OPERS(
/*-------------------------Корпо-консолидация:-------------*/
/* --- мля-мля-мля ---*/
/*-------------------------Приклад:------------------------*/
OP_DOC_ID BIGINT DEFAULT 0 NOT NULL, /* Документ-родитель проводки */
OP_ID BIGINT DEFAULT 0 NOT NULL, /* ID-проводки */
OP_DATE DATE DEFAULT 'NOW' NOT NULL,/* Дата операции */
OP_ACC_D INTEGER DEFAULT 0 NOT NULL, /* Счет(регистр) по дебету*/
OP_OBJ_D BIGINT DEFAULT 0 NOT NULL, /* Объект учета по дебету */
OP_ACC_K INTEGER DEFAULT 0 NOT NULL, /* Счет(регистр) по кредиту */
OP_OBJ_K BIGINT DEFAULT 0 NOT NULL, /* Объект учета по кредиту */
OP_KOL DOUBLE PRECISION DEFAULT 0.0 NOT NULL, /* Количество */
OP_SUM DOUBLE PRECISION DEFAULT 0.0 NOT NULL, /* Сумма */
MONEY_ID INTEGER DEFAULT 1 NOT NULL, /*Валюта */
MONEY_RATE DOUBLE PRECISION DEFAULT 1.0 NOT NULL, /*Курс на дату OP_DATE*/
/*-------------------------System:-------------------------*/
OP_DT_CRE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,/*Дата и время создания*/
OP_DT_EDI TIMESTAMP DEFAULT CURRENT_TIMESTAMP,/*Дата и время модификации*/
CREATOR_ID INTEGER DEFAULT 0 NOT NULL, /*Пользователь-создатель*/
EDITOR_ID INTEGER DEFAULT 0 NOT NULL, /*Пользователь-модификатор*/
PRIMARY KEY(OP_ID),
/*Немного деклараций от дурака*/
CONSTRAINT PARENT_ACC_D FOREIGN KEY(OP_ACC_D) REFERENCES ACC(ID),
CONSTRAINT PARENT_ACC_K FOREIGN KEY(OP_ACC_K) REFERENCES ACC(ID),
CONSTRAINT PARENT_JBJ_D FOREIGN KEY(OP_OBJ_D) REFERENCES ObjLink(ID),
CONSTRAINT PARENT_JBJ_K FOREIGN KEY(OP_OBJ_K) REFERENCES ObjLink(ID)
);

/*
OP_ACC_D, OP_ACC_k - ссылка на регистр(счет)
OP_OBJ_D, OP_OBJ_K - ссылка на запись(это может быть и "папка"
в таблице расшифровки "субконто") в ObjLink,дальше расшифровка в Object
ИМЕЕМ: проводка может хранить произвольное количество субконто,
каждый из которых может иметь произвольное колич.уровней иерархии...
*/
...
Рейтинг: 0 / 0
14.05.2005, 20:54
    #33065519
Programmer_Ortodox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
/*RDBMS: FIREBIRD/INTERBASE*/
SET SQL DIALECT  3 ;
CREATE DATABASE "D:\DATA\IBDATA\TEMP2.GDB" USER "SYSDBA"
PASSWORD "masterkey" PAGE_SIZE  4096 ;

/* Справочник счетов(регистров учета)("древесный") */
CREATE TABLE Acc(
 ID      BIGINT DEFAULT  0  NOT NULL, /* ID-регистра(счета) */
 PARENT  BIGINT DEFAULT  0  NOT NULL, /* ID-родителя регистра(счета) */
 SIGN    VARCHAR( 16 ),               /* SIGN: Типа: '19.НДС18%'...'41.МЛЯ.МЛЯ'*/
 AccYype CHAR( 1 ),                   /* 'А', 'П', ... */
 /* ...мля-мля-мля...*/
 NAME    VARCHAR( 128 ),
PRIMARY  KEY(ID),
CONSTRAINT PARENT_Acc FOREIGN KEY(PARENT) REFERENCES Acc(ID)
);

/* Справочник объектов учета("древесный") */
CREATE TABLE Object(
 ID     BIGINT DEFAULT  0  NOT NULL,  /* ID-объекта учета */
 PARENT BIGINT DEFAULT  0  NOT NULL,  /* ID-родителя объекта учета */
 /* ...мля-мля-мля...*/
 NAME   VARCHAR( 128 ),
PRIMARY KEY(ID),
CONSTRAINT PARENT_Obj FOREIGN KEY(PARENT) REFERENCES Object(ID)
);

/* Справочник множеств "субконто" ("древесный") */
/* Ссылка на ID,-ссылка на единичн.элемент или на папку(поддерево) */
CREATE TABLE ObjLink(
 ID     BIGINT DEFAULT  0  NOT NULL,  /* ID-объекта учета */
 PARENT BIGINT DEFAULT  0  NOT NULL,  /* ID-родителя объекта учета */
 /* ...мля-мля-мля...*/
 NAME   VARCHAR( 128 ),
PRIMARY KEY(ID),
CONSTRAINT PARENT_ObjLink FOREIGN KEY(PARENT) REFERENCES ObjLink(ID),
CONSTRAINT PARENT_Objects FOREIGN KEY(ID) REFERENCES Object(ID)
);

/* Таблица операций(проводок) */
CREATE TABLE OPERS(
 /*-------------------------Корпо-консолидация:-------------*/
 /* --- мля-мля-мля ---*/
 /*-------------------------Приклад:------------------------*/
 OP_DOC_ID  BIGINT DEFAULT  0  NOT NULL,  /* Документ-родитель проводки */
 OP_ID      BIGINT DEFAULT  0  NOT NULL,  /* ID-проводки */
 OP_DATE    DATE DEFAULT 'NOW' NOT NULL,/* Дата операции */
 OP_ACC_D   INTEGER DEFAULT  0  NOT NULL, /* Счет(регистр) по дебету*/
 OP_OBJ_D   BIGINT DEFAULT  0  NOT NULL,  /* Объект учета по дебету */
 OP_ACC_K   INTEGER DEFAULT  0  NOT NULL, /* Счет(регистр) по кредиту */
 OP_OBJ_K   BIGINT DEFAULT  0  NOT NULL,  /* Объект учета по кредиту */
 OP_KOL     DOUBLE PRECISION DEFAULT  0 . 0  NOT NULL, /* Количество */
 OP_SUM     DOUBLE PRECISION DEFAULT  0 . 0  NOT NULL, /* Сумма */
 MONEY_ID   INTEGER DEFAULT  1  NOT NULL,            /*Валюта */
 MONEY_RATE DOUBLE PRECISION DEFAULT  1 . 0  NOT NULL, /*Курс на дату OP_DATE*/
 /*-------------------------System:-------------------------*/
 OP_DT_CRE  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,/*Дата и время создания*/
 OP_DT_EDI  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,/*Дата и время модификации*/
 CREATOR_ID INTEGER DEFAULT  0  NOT NULL,        /*Пользователь-создатель*/
 EDITOR_ID  INTEGER DEFAULT  0  NOT NULL,        /*Пользователь-модификатор*/
PRIMARY KEY(OP_ID),
/*Немного деклараций от дурака*/
CONSTRAINT PARENT_ACC_D FOREIGN KEY(OP_ACC_D) REFERENCES ACC(ID),
CONSTRAINT PARENT_ACC_K FOREIGN KEY(OP_ACC_K) REFERENCES ACC(ID),
CONSTRAINT PARENT_JBJ_D FOREIGN KEY(OP_OBJ_D) REFERENCES ObjLink(ID),
CONSTRAINT PARENT_JBJ_K FOREIGN KEY(OP_OBJ_K) REFERENCES ObjLink(ID)
);

/*
 OP_ACC_D, OP_ACC_k - ссылка на регистр(счет)
 OP_OBJ_D, OP_OBJ_K - ссылка на запись(это может быть и "папка"
 в таблице расшифровки "субконто") в ObjLink,дальше расшифровка в Object
 ИМЕЕМ: проводка может хранить произвольное количество субконто,
 каждый из которых может иметь произвольное колич.уровней иерархии...
*/
Попал!
...
Рейтинг: 0 / 0
15.05.2005, 02:42
    #33065658
Templar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
...
Рейтинг: 0 / 0
15.05.2005, 03:03
    #33065662
Programmer_Ortodox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
Глянул по этой ссылке на эту Арбинаду, ну не прикольнула она меня ни чем! Опять лобовое решение, опять "этот", тот же перечень полей, надо 10 аналитик,значит вдолбим в таблицу при создании эти 10 полей. А ещели я к примеру хочу, чтобы в одной проводке была 1 аналитика, а в соседней проводке 21, а через одну, - 121 !? И чтобы по каждой из них уровней было от 2 и по "самое не балуйся"? Пусть уж коллективная творческая мысль дальше ввысь стремится! А то не интересно как то..
...
Рейтинг: 0 / 0
15.05.2005, 13:06
    #33065772
Сахават Юсифов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
Самое универсальное решение - держать аналитику в виде списка
analitika={a1='a',a2='b',a21='21'} в теле основной проводки.
...
Рейтинг: 0 / 0
15.05.2005, 13:42
    #33065792
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
Сахават Юсифов пишет:
> Самое универсальное решение - держать аналитику в виде списка
> analitika={a1='a',a2='b',a21='21'} в теле основной проводки.

Любопытная мысль. Можно развить идею до списка в XML - современные
сервера позволяют разворачивать это в наборы записей. Только вот вопрос,
а что с производительностью, когда пойдет выборка по аналитикам, а счет
проводок идет на миллионы?
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
15.05.2005, 13:47
    #33065795
Сахават Юсифов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
Все решается. Одна допольнителная функция для регулярных выражений и создается нужный разрез для отчета. Дальше сам отчет. Насчет 1000.... записей - плохая организация данных. (Детский подход навеянный примитивизмами типа нормализации и т.д.)
...
Рейтинг: 0 / 0
15.05.2005, 14:07
    #33065800
valmond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
valmondОбщая задача - расчет заработной платы.
компания логически делится на регионы и на центры затрат.
Зарплату получают как в рублях так и в usd, налоги платят в рублях.
В итоге хочется понять сколько было затраченно (и на что) для каждого региона и для каждого центра затрат в каждой валюте

Если вернутся к моему вопросу, то кажется я поставил слишком общую задачу. В моем случае получается всего две аналитики. Валюта суммы и принадлежность суммы к элементу логического деления.
Т.е. получаются валютная плоскость и плоскость логического деления. Как для валюты существует основная плоскость (рубли), так и для логического деления сущетсвует плоскость обособленных подразделений и если применить технику. которую описал gardenman (т.е. отражение всех движений в основных плоскостях), то все вроде как решается.
...
Рейтинг: 0 / 0
15.05.2005, 14:09
    #33065802
valmond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
Александр Гoлдун
Сахават Юсифов пишет:
> Самое универсальное решение - держать аналитику в виде списка
> analitika={a1='a',a2='b',a21='21'} в теле основной проводки.

Любопытная мысль. Можно развить идею до списка в XML - современные
сервера позволяют разворачивать это в наборы записей. Только вот вопрос,
а что с производительностью, когда пойдет выборка по аналитикам, а счет
проводок идет на миллионы?

Реализация планируется на MS SQL 2000. Может конечно мне не хватает опта работы с xml в sql, но что-то мне подсказывается, что групповые операции по аналитикам через xml будут очень очень медленные.
...
Рейтинг: 0 / 0
15.05.2005, 14:18
    #33065804
Сахават Юсифов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плоскости учета
valmond Александр Гoлдун
Сахават Юсифов пишет:
> Самое универсальное решение - держать аналитику в виде списка
> analitika={a1='a',a2='b',a21='21'} в теле основной проводки.

Любопытная мысль. Можно развить идею до списка в XML - современные
сервера позволяют разворачивать это в наборы записей. Только вот вопрос,
а что с производительностью, когда пойдет выборка по аналитикам, а счет
проводок идет на миллионы?

Реализация планируется на MS SQL 2000. Может конечно мне не хватает опта работы с xml в sql, но что-то мне подсказывается, что групповые операции по аналитикам через xml будут очень очень медленные.

Ваша задача сама по себе ничего дополнительного не требует. Стандартная зарплата.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Плоскости учета / 25 сообщений из 56, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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