Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Не выходит каменный цветок ...
|
|||
|---|---|---|---|
|
#18+
Всем всего доброго! Подскажите, пожалуйста, как лучше организовать структуру данных. Выполняются операции со счетами. Каждая такая операция может порождать другие операции или нет, в зависимости от условий. У каждой операции есть набор атрибутов: сумма, счет дебета, счет кредита и т. д. У счета есть набор атрибутов. Например, тип счета(активный или пассивный), группа счета, владелец счета, группа владельца счета, валюта и атрибуты, задаваемые пользователем. Условия используют атрибуты счета и задаются пользователем. Сумма порожденной операции должна вычисляться из суммы основной операции на основании формулы, заложенной в справочнике тарифов. Тарифы также зависят от атрибутов счета. Весь этот огород городится ради того, чтобы малограмотный оператор, не знакомый с бухгалтерией, мог вводить как можно больше проводок в единицу времени, не заморачиваясь со всякого рода процентами, дисконтами, овердрафтами и прочей лабудой. А условия, атрибуты и тарифы будет ваять мастер спорта по финансам. Он же потом должен ловить кайф от разгребания аналитических Авгиевых конюшен. Можно, наверное, создать справочник шаблонов операций, записи в котором генерировать на основании атрибутов счетов и условий. Затем, при вводе основной операции, программа будет обращаться к этому справочнику на предмет соответствия аттрибутов счетов и условий и генерировать дочерние операции. Но что-то мне это решение не нравится. Может кто-то решал подобные задачи? Помогите собрать этот кубик Рубика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2005, 14:21 |
|
||
|
Не выходит каменный цветок ...
|
|||
|---|---|---|---|
|
#18+
Скорее Вам нужен какой-то скриптовый язык для написания алгоритмов генерации операций. в общем случае одними шаблонами не обойтись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2005, 16:19 |
|
||
|
Не выходит каменный цветок ...
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ. Но у меня нет времени заморачиваться со скриптовым языком. Тем более, что я этого никогда не делал. Добавлю еще, что атрибуты и тарифы меняются редко. Может кого-нибудь посоветует еще какое-нибудь решение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2005, 17:12 |
|
||
|
Не выходит каменный цветок ...
|
|||
|---|---|---|---|
|
#18+
ОПЕРАТОР -- ВВОДИТЬ ПРОВОДКИ ??? Да, оптимисты вы ... Для этого как минимум бухгалтером надо быть. И лучше чтобы -- хорошим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2005, 22:18 |
|
||
|
Не выходит каменный цветок ...
|
|||
|---|---|---|---|
|
#18+
MasterZivОПЕРАТОР -- ВВОДИТЬ ПРОВОДКИ ??? Да, оптимисты вы ... Для этого как минимум бухгалтером надо быть. И лучше чтобы -- хорошим. согласен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2005, 23:39 |
|
||
|
Не выходит каменный цветок ...
|
|||
|---|---|---|---|
|
#18+
Если есть динамический SQL, то делается просто: пишутся функции, которые возвращают 0 или один для объекта/операции, по которому генерируются проводки. В таблицах хранится последовательность вызовов этих функций, объединенных логическими операциями. Например, для операции "Начисление комиссии по покупке" есть 2 условия, объединенные AND: Операция - покупка AND Есть комиссия. Далее через динамический sql они вызываются по очереди, объединяются их результаты по логическим условиям и смотрится, нужно ли выполнять данную проводку. Но по сути - это не травиальная задача: мое ТЗ на универсальный проводочный механизм занимает порядка 30 листов, а ведь еще и надо написать те самые условные функции, функции получения сумм и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2005, 09:20 |
|
||
|
Не выходит каменный цветок ...
|
|||
|---|---|---|---|
|
#18+
Shtock wrote: > Если есть динамический SQL, то делается просто: пишутся функции, которые > возвращают 0 или один для объекта/операции, по которому генерируются > проводки. В таблицах хранится последовательность вызовов этих функций, > объединенных логическими операциями. Например, для операции "Начисление > комиссии по покупке" есть 2 условия, объединенные AND: Операция - > покупка AND Есть комиссия. > Далее через динамический sql они вызываются по очереди, объединяются их > результаты по логическим условиям и смотрится, нужно ли выполнять данную > проводку. > Но по сути - это не травиальная задача: мое ТЗ на универсальный > проводочный механизм занимает порядка 30 листов, а ведь еще и надо > написать те самые условные функции, функции получения сумм и т.д. ну, с точки зрения производительности гораздо эффективнее по результатам настроек генерировать процедуры/функции для расчета этих самых условий. У меня так построен механизм проводок. -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2005, 11:30 |
|
||
|
Не выходит каменный цветок ...
|
|||
|---|---|---|---|
|
#18+
2MasterZiv Оператор вводит не проводки, а операции, которые порождают группу проводок. Например, возьмем поступление на счет клиента через коррсчет. Его действия: 1.Выбирает из группы доступных ему операций операцию прихода. 2.Выбирает счет клиента 3.Вводит сумму и , если необходимо, другие атрибуты(номер, дату документа и т.п.) 4. Повторяет п.2,3 столько раз, сколькое было приходов 5. Давит на кнопку и программа формирует группу проводок на основе введенных операций. К каждой основной проводке могут добавляться дочерние. Например, комиссия за РКО, комиссия за перечисление на счет клиента и.др. Эти все комиссии и пр. не должны волновать оператора. Это прерогатива владельцев бизнеса и их финансистов. Именно они определяют правила взимания процентов. Оператор в этом случае выполняет важную, но не творческую, а механическую работу по набиванию сумм, номеров и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2005, 12:14 |
|
||
|
Не выходит каменный цветок ...
|
|||
|---|---|---|---|
|
#18+
2Shtock Думаю, что вариант с динамическим SQL осложнит работу финансиста, т.к. он не программист. Сейчас я делаю так. Есть справочник тарифов. В него заносятся все виды, например, комиссий. Они делятся на два вида: 1) те, которые идут на счет нашего дохода и 2) которые идут на счет затрат. Эти счета привязываются к тарифам. Одному тарифу может соответствовать несколько ставок. Они хранятся в таблице и связаны с тарифами. Ставки в общем случае могут определяться по формуле, но сейчас я использую фиксированную сумму и/или процент от суммы операции. При заведении лицевого счета к нему привязываются ставки тарифов. Есть таблица шаблонов операций, связанная с тарифом. Когда оператор заводит операцию, то программа определяет на основании шаблона операций какой тариф использовать. Затем проверяются счет дебета и кредита на предмет привязки к ним ставок. И далее формируется столько дочерних проводок, сколько ставок у счета. В этой схеме есть бреши, но она работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2005, 12:50 |
|
||
|
Не выходит каменный цветок ...
|
|||
|---|---|---|---|
|
#18+
To locky: Аналогично некоторые биллинги работают. Вроде "Фастком" один из них называется. ТАк у нас практически также. Только процедуры пишут люди, и не система. У нас написан ряд стандартных условий, комбинации которых охватывают все случаи. Не хватает - пишем новую условную функцию. У Вас же, как я понимаю, получается так: система строит эту функцию, как-то ее обзывает и сохраняет название в метаданных и также динамически вызывает. Поэтому разницы в производительности быть не должно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2005, 12:53 |
|
||
|
Не выходит каменный цветок ...
|
|||
|---|---|---|---|
|
#18+
Так пользователь не видит динамического SQL. Он видет группы бизнес-операций, которые состоят из бизнес-операций, по которым осуществляются уже проводки (для их генерации используется динамический sql для вызова функций расчета сумм и условий по динамически создаваемым выборкам из так-называемых объектов начисления (view)). При этом подхватывается вся аналитика (имеется соответствие столбцов объектов начисления и столбцов аналитики счета) и прочие вкусности... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2005, 12:58 |
|
||
|
Не выходит каменный цветок ...
|
|||
|---|---|---|---|
|
#18+
2Shtock Сейчас сделано так, чтобы упростить работу как финансиста, так и операциониста. Но это за счет моего времени и нервов. А мне хотелось бы, чтобы система взяла часть моей работы на себя. Но пока не выходит((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2005, 13:04 |
|
||
|
Не выходит каменный цветок ...
|
|||
|---|---|---|---|
|
#18+
Shtock wrote: > To locky: Аналогично некоторые биллинги работают. Вроде "Фастком" один > из них называется. ТАк у нас практически также. Только процедуры пишут > люди, и не система. У нас написан ряд стандартных условий, комбинации > которых охватывают все случаи. Не хватает - пишем новую условную > функцию. У Вас же, как я понимаю, получается так: система строит эту > функцию, как-то ее обзывает и сохраняет название в метаданных и также > динамически вызывает. Поэтому разницы в производительности быть не должно. да как вам сказать... предположим, условие выглядит как (Заголовок.Операция=Отгрузка) и (Заголовок.НДС=20%) это трансформируется в процедуру типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: plaintext 1. или динамически выполнять заранее построенный. Есть, конечно, свои жопы, но это - дело 10-е. -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2005, 13:34 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33342655&tid=1545596]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 275ms |
| total: | 452ms |

| 0 / 0 |
