powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Не выходит каменный цветок ...
13 сообщений из 13, страница 1 из 1
Не выходит каменный цветок ...
    #33342655
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем всего доброго!
Подскажите, пожалуйста, как лучше организовать структуру данных.
Выполняются операции со счетами. Каждая такая операция может порождать другие операции или нет, в зависимости от условий.
У каждой операции есть набор атрибутов: сумма, счет дебета, счет кредита и т. д.
У счета есть набор атрибутов. Например, тип счета(активный или пассивный), группа счета, владелец счета, группа владельца счета, валюта и атрибуты, задаваемые пользователем.
Условия используют атрибуты счета и задаются пользователем.
Сумма порожденной операции должна вычисляться из суммы основной операции на основании формулы, заложенной в справочнике тарифов. Тарифы также зависят от атрибутов счета.

Весь этот огород городится ради того, чтобы малограмотный оператор, не знакомый с бухгалтерией, мог вводить как можно больше проводок в единицу времени, не заморачиваясь со всякого рода процентами, дисконтами, овердрафтами и прочей лабудой. А условия, атрибуты и тарифы будет ваять мастер спорта по финансам. Он же потом должен ловить кайф от разгребания аналитических Авгиевых конюшен.

Можно, наверное, создать справочник шаблонов операций, записи в котором генерировать на основании атрибутов счетов и условий. Затем, при вводе основной операции, программа будет обращаться к этому справочнику на предмет соответствия аттрибутов счетов и условий и генерировать дочерние операции.
Но что-то мне это решение не нравится.

Может кто-то решал подобные задачи?
Помогите собрать этот кубик Рубика.
...
Рейтинг: 0 / 0
Не выходит каменный цветок ...
    #33343049
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее Вам нужен какой-то скриптовый язык для написания алгоритмов генерации операций. в общем случае одними шаблонами не обойтись.
...
Рейтинг: 0 / 0
Не выходит каменный цветок ...
    #33343255
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответ.
Но у меня нет времени заморачиваться со скриптовым языком. Тем более, что я этого никогда не делал.
Добавлю еще, что атрибуты и тарифы меняются редко.
Может кого-нибудь посоветует еще какое-нибудь решение?
...
Рейтинг: 0 / 0
Не выходит каменный цветок ...
    #33343762
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОПЕРАТОР -- ВВОДИТЬ ПРОВОДКИ ??? Да, оптимисты вы ...
Для этого как минимум бухгалтером надо быть. И лучше чтобы -- хорошим.
...
Рейтинг: 0 / 0
Не выходит каменный цветок ...
    #33343821
Фотография Эстонский голем
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivОПЕРАТОР -- ВВОДИТЬ ПРОВОДКИ ??? Да, оптимисты вы ...
Для этого как минимум бухгалтером надо быть. И лучше чтобы -- хорошим.
согласен
...
Рейтинг: 0 / 0
Не выходит каменный цветок ...
    #33344073
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если есть динамический SQL, то делается просто: пишутся функции, которые возвращают 0 или один для объекта/операции, по которому генерируются проводки. В таблицах хранится последовательность вызовов этих функций, объединенных логическими операциями. Например, для операции "Начисление комиссии по покупке" есть 2 условия, объединенные AND: Операция - покупка AND Есть комиссия.
Далее через динамический sql они вызываются по очереди, объединяются их результаты по логическим условиям и смотрится, нужно ли выполнять данную проводку.
Но по сути - это не травиальная задача: мое ТЗ на универсальный проводочный механизм занимает порядка 30 листов, а ведь еще и надо написать те самые условные функции, функции получения сумм и т.д.
...
Рейтинг: 0 / 0
Не выходит каменный цветок ...
    #33344473
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtock wrote:
> Если есть динамический SQL, то делается просто: пишутся функции, которые
> возвращают 0 или один для объекта/операции, по которому генерируются
> проводки. В таблицах хранится последовательность вызовов этих функций,
> объединенных логическими операциями. Например, для операции "Начисление
> комиссии по покупке" есть 2 условия, объединенные AND: Операция -
> покупка AND Есть комиссия.
> Далее через динамический sql они вызываются по очереди, объединяются их
> результаты по логическим условиям и смотрится, нужно ли выполнять данную
> проводку.
> Но по сути - это не травиальная задача: мое ТЗ на универсальный
> проводочный механизм занимает порядка 30 листов, а ведь еще и надо
> написать те самые условные функции, функции получения сумм и т.д.
ну, с точки зрения производительности гораздо эффективнее по результатам
настроек генерировать процедуры/функции для расчета этих самых условий.
У меня так построен механизм проводок.

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Не выходит каменный цветок ...
    #33344614
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2MasterZiv
Оператор вводит не проводки, а операции, которые порождают группу проводок.
Например, возьмем поступление на счет клиента через коррсчет.
Его действия:
1.Выбирает из группы доступных ему операций операцию прихода.
2.Выбирает счет клиента
3.Вводит сумму и , если необходимо, другие атрибуты(номер, дату документа и т.п.)
4. Повторяет п.2,3 столько раз, сколькое было приходов
5. Давит на кнопку и программа формирует группу проводок на основе введенных операций. К каждой основной проводке могут добавляться дочерние.
Например, комиссия за РКО, комиссия за перечисление на счет клиента и.др.
Эти все комиссии и пр. не должны волновать оператора. Это прерогатива владельцев бизнеса и их финансистов. Именно они определяют правила взимания процентов.
Оператор в этом случае выполняет важную, но не творческую, а механическую работу по набиванию сумм, номеров и т.п.
...
Рейтинг: 0 / 0
Не выходит каменный цветок ...
    #33344725
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Shtock
Думаю, что вариант с динамическим SQL осложнит работу финансиста, т.к. он не программист.
Сейчас я делаю так.
Есть справочник тарифов. В него заносятся все виды, например, комиссий.
Они делятся на два вида: 1) те, которые идут на счет нашего дохода и 2) которые идут на счет затрат. Эти счета привязываются к тарифам.
Одному тарифу может соответствовать несколько ставок. Они хранятся в таблице и связаны с тарифами. Ставки в общем случае могут определяться по формуле, но сейчас я использую фиксированную сумму и/или процент от суммы операции.
При заведении лицевого счета к нему привязываются ставки тарифов.
Есть таблица шаблонов операций, связанная с тарифом.

Когда оператор заводит операцию, то программа определяет на основании шаблона операций какой тариф использовать. Затем проверяются счет дебета и кредита на предмет привязки к ним ставок. И далее формируется столько дочерних проводок, сколько ставок у счета.

В этой схеме есть бреши, но она работает.
...
Рейтинг: 0 / 0
Не выходит каменный цветок ...
    #33344734
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To locky: Аналогично некоторые биллинги работают. Вроде "Фастком" один из них называется. ТАк у нас практически также. Только процедуры пишут люди, и не система. У нас написан ряд стандартных условий, комбинации которых охватывают все случаи. Не хватает - пишем новую условную функцию. У Вас же, как я понимаю, получается так: система строит эту функцию, как-то ее обзывает и сохраняет название в метаданных и также динамически вызывает. Поэтому разницы в производительности быть не должно.
...
Рейтинг: 0 / 0
Не выходит каменный цветок ...
    #33344752
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так пользователь не видит динамического SQL. Он видет группы бизнес-операций, которые состоят из бизнес-операций, по которым осуществляются уже проводки (для их генерации используется динамический sql для вызова функций расчета сумм и условий по динамически создаваемым выборкам из так-называемых объектов начисления (view)). При этом подхватывается вся аналитика (имеется соответствие столбцов объектов начисления и столбцов аналитики счета) и прочие вкусности...
...
Рейтинг: 0 / 0
Не выходит каменный цветок ...
    #33344773
Фотография FoxLamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Shtock
Сейчас сделано так, чтобы упростить работу как финансиста, так и операциониста. Но это за счет моего времени и нервов.
А мне хотелось бы, чтобы система взяла часть моей работы на себя. Но пока не выходит(((
...
Рейтинг: 0 / 0
Не выходит каменный цветок ...
    #33344865
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtock wrote:
> To locky: Аналогично некоторые биллинги работают. Вроде "Фастком" один
> из них называется. ТАк у нас практически также. Только процедуры пишут
> люди, и не система. У нас написан ряд стандартных условий, комбинации
> которых охватывают все случаи. Не хватает - пишем новую условную
> функцию. У Вас же, как я понимаю, получается так: система строит эту
> функцию, как-то ее обзывает и сохраняет название в метаданных и также
> динамически вызывает. Поэтому разницы в производительности быть не должно.
да как вам сказать...
предположим, условие выглядит как
(Заголовок.Операция=Отгрузка) и (Заголовок.НДС=20%)
это трансформируется в процедуру типа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
create proc eo_1 @doc int,@result int out
as begin
  set nocount on
  declare @p1 int,@p2 int
  select top  1  @p1=[Операция] from [Заголовок] where [Документ]=@doc
  select top  1  @p2=[НДС] from [Заголовок] where [Документ]=@doc
  set @result = case when @p1= 121  and @p2= 20  then  1  else  0  end
  return  0 
end
при необходимости посчитать услови мы делаем
Код: plaintext
1.
  exec @ret=eo_1 @doc,@result out
получается гораздо быстрее, чем на ходу строить вышеприведенный запрос
или динамически выполнять заранее построенный. Есть, конечно, свои жопы,
но это - дело 10-е.

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Не выходит каменный цветок ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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