|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
Прошу всех кто писал/использовал это средство автоматизации рассказать о том как/какой ценой Вы боролись с формализацией задачи расчета з/п Что представляло из себя предварительное ТЗ, окончательное ТЗ? Какие методологии вы применяли ( RUP )? Применяли ли Use Cases и насколько успешно? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2003, 17:07 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
Учет заработной платы - это имеется в виду расчет зп или это какая то аналитическая программа ?\r \r P.S. Про расчет зп сам рассказывать ничего не буду, все лежит в топике Система с изменяющимися алгоритмами расчета, я там и так сильно много всего писал :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2003, 17:15 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
2ASCRUS: это именно расчет з/п. И повторятся тебя никто не просит - меня интересует другая сторона вопроса - а имеено процесс определения функциональных требований - как ты его проводил. На мой взгляд эта задача в этом смысле весьма нетривиальна. Ведь если попытаться добыть у бухгалтера варинты использования з/п или что-то типа Действующие лица/Цели - то мало что из этого выйдет. Вот меня и интересует КАК производится формализвация задачи ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2003, 17:22 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
Ну я считаю зп - это тот самый продукт, где в первую очередь важно описание не модели данных, а процессов, т.е. начинать надо с самих расчетов. Что имеем в расчетах: Каждое начисление, налог и удержание имеет собственную методику расчета, описанную в трудовом кодексе РФ Благодаря неоднозначности кодекса многие алгоритмы расчетов вполне правомерно могут быть искажены или измененны в отдельных отраслях или же у отдельных клиентов В системе должна быть предусмотрена модель расчетов задними числами, так как многие данные расчетчиками зп могут и изменяются задним числом Сами алгоритмы могут для расчетов пользоваться архивной информацией за неопределенный промежуток времени, с учетом пересчетов задними числами Благодаря не совершенству законодательных органов РФ, также могут изменяться задним числом и сами методики расчетов Каждый пользователь системы может иметь дополнительное кол-во собственных начислений Соотвествующе отталкиваясь от этих пунктов, проведя в каждом из них более менее подробный анализ уже можно будет выявить, что же есть общего в зп, а что совсем разного. Это даст возможность на неком абстрактном уровне описать - как же будет работать расчет зп. Далее уже можно по идее начинать реализовывать модель входящих данных с учетом требований, полученных в результате анализа расчетной части, потом уже сам расчет и модель выходящие (расчетно-архивных) данных. Кстати на этом этапе желательно очень внимательно проанализировать отчетную часть зп - отчеты в ней такие же дурные и не формализуемые частенько, поэтому расчетную модель лучше сразу проектировать так, чтобы отчеты могли элементарно получать доступ к расчетной информации, в том числе и промежуточной, т.е. использующейся во время расчетов. Иначе можно конкретно потом с отчетами сесть в лужу и каждый раз при печати таких отчетов дублировать работу расчетной части для получения промежуточных расчетных данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2003, 18:17 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
2 ASCRUS "В системе должна быть предусмотрена модель расчетов задними числами, так как многие данные расчетчиками зп могут и изменяются задним числом " Можно пообщаться на тему расчетов задним числом? Дело в том, что после очередного расчета ЗП на руки человеку выдают т.н. 'расчетный лист' - в нем указываются все начисления-удержания для конкретного человека. Бывает, что бухгалтер находит ошибку в расчете за прошедший период. Процесс исправления ошибки у нас достаточно болезненный и каждый раз это лежит на программисте. Т.к. расчетный лист человеку на руки уже выдан - изменять рассчитанную ЗП задним числом нельзя. Приходится рассчитывать заново конкретный вид начисления(удержания) по 'вновь уточненному' алгоритму, а разницу между ранее рассчитанной и вновь рассчитанной суммой кидать отдельным начислением-удержанием в ТЕКУЩИЙ период (отклонение). Вот расскажите, при пересчете Вы печатаете расчетный лист заново? PS: Ну и письмецо получилось-надо учиться излагать кратко и понятно.... :( ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 06:49 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
2Дамир: ни знаю как у ASCRUS'a, а у меня у начисления был атрибут "когда оплачивать", т.е. можно пересчитать задним числом, но оплатить сегодня. 2ASCRUS: Большое спасибо. Что еще мне хотелось бы услышать. О том как организовывался процес анализа функциональных требований - буквально как Вы получали требуемую информацию. Опять же - что такое ТЗ на з/п? Use Cases - на сколько сложно, необходимо и какова степень детализации? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 08:03 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
2 funikovyuri Ошибка, действительно, может всплыть через полгода. К тому времени уже все давно выплачено. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 08:34 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
Где Репликант??? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 08:35 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
2Дамир: сходи по указаной ASCRUS'ом ссылке - там найдешь много интересного именно о реализации и конретном решении задачи. Сдесь я спрашиваю о другом ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 08:42 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
funikovyuri Кстати по указанной мной ссылке в последнем из сообщений я как раз отвечал на вопрос по поводу как я получал ТЗ на зарплату - можно там почитать. Если же буквально - то у меня в кач-ве первоисточников ТЗ были: Трудовой кодекс РФ Книги для бухгалтерии по расчету зп Старая программа расчета зп, работающая и по сей день Бухгалтера, внедренцы и программист, сопровождающие старую задачу Печально конечно, что не было постановщика, но в принципе изучив основополагающие принципы расчета зп, я стал более менее разбираться в том, что я пишу и уже знал, где что искать и какие задавать наводящие вопросы сотрудникам, сопровождающим старую зп. Case я не использовал, так как проектировал и писал БД я один, работодатель таких требований не выдвигал (наоборот проект им нужен был как можно быстрее, так как старый уже на последнем издыхании), плюс уровень наших сотрудников, сопровождающих в ДОС старый проект зп настолько низок, что обсуждать с ними модели реализации проекта по схемам было бы просто пустой тратой времени - например у них постановка проекта прочно ассоциируется со старым проектом и иногда бывает очень сложно им сформулировать вопрос так, чтобы они ответили с точки зрения принципов постановки, а не реализации в старом проекте. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 12:30 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
2ASCRUS: Про CASE средства ( или про UML) я и не спрашивал. Use Cases - это варианты использования - методология определения функциональных требований. Я про них спрашивал по тому, что для зарплаты они мне кажуться мало эффективны( хотя это на вскидку - составлять пока не пробовал ) Я сам проектировщик - хотя постепенно становлюсь постановщиком - условия такие :) Почитал твои последние посты в "cистема с изм...." - как всегда интересно. Хотя я таких писимистических взглядов на постановкку не разделяю. Хочу лишь сказать что к 100% формализации стремится не нужно - детализировать надо до тех пор пока это нужно (я думаю в этом и состоит задача хорошего постановщика - вовремя остановиться). Если интересно могу лит-ру на эту тему посоветовать. P.P.S где же Репликант? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 13:05 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
Согласен, детализированием увлекаться не надо. Однако на уровне модели той же БД предусмотреть возможность появления отклонения от ТЗ никогда не повредит. У меня например в модель зп изначально на уровне модели БД предусмотренны возможные отклонения, у которых высока вероятность возникновения в будующем, хотя как таковой их реализации в проекте нет. Я вот упорно не хочу становиться постановщиком, хотя жизнь постоянно это навязывает. Литературку я бы с удовольствием почитал, если не сложно, дайте ссылочки. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 13:16 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
Ну на "вы" так на "вы" :) Уровень БД - это уже не постановка Насчет книг. Могу посоветовать "Современные методы описания функциональных требований к системам"/Writing Effective Use Case Алестер Коберн/Alistair Cockburn Addison-Wesley 2001 ISBN 0-201-70225-8 Если надо могу ее отксерить ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 13:36 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
Угу - сенкс, я пока сам попробую ее поискать. Насчет "ВЫ" - привычка, выработанная интернетом :) Можно и на ты - все равно во многих форумах пересекаемся и общаемся :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 14:21 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
а отсканировать нельзя? =)... а то уж большо хочется почитать ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 21:00 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
OK - сегодня начну сканировать - как закончу - вышлю всем заинтересованным :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2003, 08:41 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
2 funikovyuri: \r Use Cases - это варианты использования - методология определения функциональных требований. \r \r Нет, варианты использования (ВИ) - это никакая не методология. RUP - это методология или процесс, к-рый если ему следовать позволяет получать ВИ и системные требования , а затем преобразовывать их в архитектуру. \r Кстати в RUP 2003 также досточно обобщенно описано КАК ИМЕННО их получать, т.е сам низкоуровневый и пошаговый процесс работы с источниками требований, например, пользователяи или документацией.\r ВИ - это описание (текст на естественном языке) способа использования (ЧТО делает) системы актером для достижения своих целей, если это системный ВИ (System Use Case). При этом следует различать именно ВИ, т.е. "описание ВИ" и "модель ВИ" - представление с помощью графической нотации отношений актеров и ВИ.\r ВИ также не являются функциональными требованиями. Более того понимание ВИ как функциональных требований вредно и опасно. Вы вообще RUP или "Writing Effective Use Cases" (WEUC) Коберна внимательно читали? "UC is a system requirement(s)" и "UC describes system requirement(s)" - это не одно и то же\r \r Use Case (RUP)\r A description of system behavior, in terms of sequences of actions.\r A use case should yield an observable result of value to an actor.\r A use case contains all alternate flows of events related to producing\r the "observable result of value".\r \r USE CASE (WEUC)\r A "use case" expresses a contract between the stakeholders of a system about\r its behavior. It describes the system’s behavior and interactions under\r various conditions as it responds to a request on behalf of the stakeholders,\r the primary actor, showing how the primary actor’s goal gets delivered\r or fails.\r The use case collects together the scenarios related to the primary actor’s goal.\r \r Я про них спрашивал по тому, что для зарплаты они мне кажуться мало эффективны( хотя это на вскидку - составлять пока не пробовал ) \r \r Наоборот, они как раз именно эффективны для такого описания использования ИС в процессе учета заработной платы (ЗП), т.е достижения бизнес-результата. При этом можно или даже нужно также использовать и системные требования (функциональные и нефункциональные)\r \r P.P.S где же Репликант? :) \r \r Вам еще повезло, что я случайно сюда заглянул. Забыли, что есть же профиль мембера, а там есть мыло. Раз публичное мыло дано значит на него не грех написать что-нибудь типа: "Привет, Репликант! Загляни, пожалуйста, в топик ХХХ на SQL.RU". В чём проблема? :о)\r \r 2 funikovyuri & ASCRUS: \r Насчет книг. Могу посоветовать "Современные методы описания функциональных требований к системам"/Writing Effective Use Case \r Алестер Коберн/Alistair Cockburn Addison-Wesley 2001 ISBN 0-201-70225-8 \r \r Если надо могу ее отксерить \r \r А зачем ксерить? "Writing Effective Use-Cases" ( * * P RE-PU B . D R AFT # 3 * *, date: 2000.02.21, 249 стр.) есть в PDF формате разделе файлов конференции Yahoo CASE-Tools - файл writingeffectiveucs.pdf . IMHO книгу Коберна можно использовать исключительно для понимая сути ВИ, метода их получения и описания, а также структурирования ВИ. Шаблоны описания ВИ, к-рые там у него приводятся не очень удобные, даже те к-рые Brief. Я также можно поспорить с Коберном по поводу оптимальности "запихивания" нефункциональных требований (частота использования ВИ, требования к производительности и надежности) или неясностей (open issues) в описание каждого ВИ поскольку это приводит к дублированию информации. Такие вещи как проблема обилия текста и его структурированность для удобства восприятия хотя бы или для использования в том же Rational RequisitePro также существенны. Некоторые пытаются приспособить Full-шаблоны Коберна, без понятия переводя их на русский язык и усердно заполняя "от и до". Если есть желание обсуждать "добычу" ВИ в RUP или другом OOAD-процессе без привязки к случаю ИС "Расчет зарплаты", то лучше в топике Обсуждение и Вопросы по ОБЪЕКТНО-ОРИЕНТИРОВАННЫМ МЕТОДАМ (ООАП / OOAD) и UML ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2003, 08:56 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
2Репликант: Нет, варианты использования (ВИ) - это никакая не методология. UC - метод сбора и моделирования функциональных требований "Writing Effective Use Cases" Зачем мне нужна была лекция про UC я не понял. При чем тут разделение именно ВИ, т.е. "описание ВИ" и "модель ВИ" - я что так очевидно их не различаю? Разве я спрашивал о различиях в их представлении разными поставщиками CASE? Наоборот, они как раз именно эффективны для такого описания использования ИС в процессе учета заработной платы (ЗП), А вот это уже просто незнание вопроса. Вы писали учет з/п? Представляете в чем его сложность? Там как раз проблема в том что это сложная задача именно с точки зрения написания алгоритмов расчета - в ней элементарных безнес процессов почти нет. Т.е. если я для з/п напишу UC - то у меня будет что-то типа "шаг 1 - посчитать з/п" и все. Да и основное действующее лицо там - только бухгалтер. И детализировать такой ВИ на мой взгляд бесполезно - там шагов будет по боле чем 10. Я как раз и просил поделиться практическим опытом определения требований к з/п ! Вам еще повезло, что я случайно сюда заглянул. Да уж повезло :) В чём проблема? :о) Впредь буду писать.... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2003, 09:37 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
2 funikovyuri: UC - метод сбора и моделирования функциональных требований "Writing Effective Use Cases" Я же привел определение ВИ из PDF-книги Коберна (WEUC). То, что утверждаете вы - это все равно, что сказать, например, что яйцо является методом еды. Есть разница между методом (действия по получению ВИ) и средством (понятие ВИ и его шаблон для описания)? Пожалуйста, запостите полностью фразу или главу, где Коберн по-вашему утверждает, что ВИ - это метод Зачем мне нужна была лекция про UC я не понял. При чем тут разделение именно ВИ, т.е. "описание ВИ" и "модель ВИ" - я что так очевидно их не различаю? Поскольку вы считаете ВИ - методом/методологией, то я на всякий случай и привел разъяснительное определение Разве я спрашивал о различиях в их представлении разными поставщиками CASE? Что касается представленией, то они могут не зависить от CASE-средства вообще, если это модель ВИ и в нотации UML. Также от CASE-средства не зависит и описание ВИ , т.к оно определяется, например, аналитиком, т.е тем, кто получает описания ВИ и работает с ними А вот это уже просто незнание вопроса. Вы писали учет з/п? Представляете в чем его сложность? Там как раз проблема в том что это сложная задача именно с точки зрения написания алгоритмов расчета - в ней элементарных безнес процессов почти нет. У вас странное понимание сути и назначения ВИ. Причем здесь бизнес-процессы (БП)? Может вы путаете с бизнес ВИ (Business UC)? Системные ВИ (System UC) могут быть использованы для описания использования одной системы другой, т.е это никак не связано с БП вообще. Пожалуйста, приведу пример "нестандартного" или нетипичного использования ВИ, т.е без автоматизации бизнеса и актеров. Я помогал моему другу (с.н.с в институте механики им.Штейнберга в Москве) и его коллеге-программисту создавать программу на VС++ для математического моделирования ударных волн в нелинейной жидкости. Там также был как нестранно только 1 первичный и неживой актер (это программа МATLAB) и внутренний (сама программа моделирования ). По сути программа имеет массивы входных данных и обсчитывает их по сложынм мат.формулам. И как-то прекрасно мы справились при помощи сильно урезанного RUP с ВИ: 1. С научным сотрудником описали все ВИ (тип полный (full) и "открытый" (white box)) т.е как обычно цель, триггер, пред-/постусловия, а также основной, альтернативный и исключительный потоки - по шагам все подробно ЧТО на входе/выходе, а также и КАК считается. * ВИ по типу цели актера были: пользовательские (user-goal) и функциональные (subfunction). * ВИ по типа ассоциации были: основной (base), включение (included) и расширение (extension). - Я запихнул описания в RequisitePro и построил модель ВИ в Rose. 2 . С коллегой-программистом выделили BCE-классы: "считающие" (control) и сущности (entity) для статических данных. Для ВИ, где были очень заморочные алгоритмы c состояниями также нарисовали диаграммы деятельности и состояний. - Т.е получили модель анализа. 3. Дальше начертили диаграммы классов и "сущностей" (данные для обсчетов брались из и хранились в общих глобальных массивах) - Т.е получили модель проектирования. 4. Сгенерирли классы в VC++ - все. Главное, что эти ВИ удовлетворили программиста, т.е в них содержалась необходимая информация не только об алгоритме обсчета, но еще о реакции программы на изменение ее данных. Плюс еще были наглядные модели ВИ и модели кооперации объектов Признаюсь, что сначала у меня также возникали позывы записать в виде простеньких функциональных требований с формулами, но взвесив "за" и "против" я понял, что лучше с помощью ВИ потому что они значительно удобнее в использовании благодаря своей как раз "алгоритмической" сути (чего нет у требований) и описывают достижение целостного результата Т.е. если я для з/п напишу UC - то у меня будет что-то типа "шаг 1 - посчитать з/п" и все. Да и основное действующее лицо там - только бухгалтер. Скорее не "шаг 1 - посчитать з/п", а "шаг 1 - Программа считает з/п." это если краткий ВИ (brief). Если это подробный функциональный ВИ, то это будет формула расчета этой з/п причем возможно будут шаги проверки условий с последующими переходами на соответствующие шаги альтернативной последовательности. Далее: это в моем примере не было пользовательского интерфейса, а у вас он есть - надо описывать работу актера ("бухгалтер") с ним .. И детализировать такой ВИ на мой взгляд бесполезно - там шагов будет по боле чем 10. Это типичная ошибка: зачем детализировать ВИ, если... а) все и так почти "ясно" (т.е просто лень писать) б) шагов будет больше, чем N (т.е опять лень писать) Рекомендую ознакомиться с книгой Розенберга и Скотта "Применение объектного моделирования с использованием UML и анализ прецедентов («ДМК Пресс», 2002. ISBN: 5-94074-050-2). Хотя она про процесс ICONIX и очень криво переведена, но там описаны типичные ошибки при описании и моделировании ВИ, а также есть практические примеры описания ВИ (прецедентов). См. Гл.3. «Моделирование прецедентов» (стр.50-53) - 10 самых распространенных ошибок при моделировании прецедентов: Пишут функциональные требования вместо словестного сценария использования. Слишком лаконично записывают прецеденты. Описывают только действия пользователя (актера), игнорируя реакцию системы. Опускают описание альтернативных последовательностей действий (потоков). Полностью абстрагируются от интерфейса пользователя. и т.д Я как раз и просил поделиться практическим опытом определения требований к з/п ! А я и не делился опытом. Я просто прокомментировал то, что вы неправильно понимаете суть ВИ, т.е что это метод :о) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2003, 23:53 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
2Репликант: что сказать - здорово. Посоветуй еще книг по теме! На выходных ответ буду писать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2003, 08:13 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
Привет, всем. В данный момент участвую в проекте, реализующий этот самый учет зп. Собственно, кадры (организационная структура предприятия(й), найм, модификация данных сотрудника, увольнение), тарификацию служащего, расчет з/п, отчеты, статистика и проч. в том же духе. ТЗ: - на основе "облегченного" варианта РУП (сценарии бизнес-процессов, диаграммы деятельности, бизнес-правила, текстовое описание и т.п.). Сделано в Розе, сгенерирована дока через шаблон Соды. По поводу ВИ "так, как их понимает Коберн" - попробовали описать один ВИ по шаблону из его книги - получилось слишком громоздко, по моему, проще сделать активити диаграмму с текстовым описанием и линками на бизнес-правила из общего глоссария. По поводу остального - практически все, что написал ASCRUS, правда ;-) (сообщения № 2 и 3), т.е. те же самые принципы расчетов, те же первоисточники (только вместо РФ у нас РМ - это я о кодексе ;-]). Охотно пообщаюсь по поводу проектов такого типа, особенно интересуют мнения тех, кто непосредственно участвовал в реализации подобной ИС: - как у Вас проходил сбор требований и ТЗ? - какие возникли "грабли" в процессе реализации ИС и как Вы с ними справились? - объектная модель ИС? - механизм реализации и хранения "изменяющихся правил расчета к-л суммы"? - хранение данных предыдущих периодов? (в той же БД - Таблица и Таблица_History; в той же БД в тех же таблицах но с флагом - Id старой ведомости; две БД - оперативная и архивная; связь между данными разных периодов - отпускной рассчитывается на основе зп пред. 3-х месяцев и т.п.) - построение отчетности ASCRUS писал:Иначе можно конкретно потом с отчетами сесть в лужу и каждый раз при печати таких отчетов дублировать работу расчетной части для получения промежуточных расчетных данных. Это один из самых болезненных вопросов, которые приходится решать в данный момент :-( - классификация сумм по различного рода классификаторам (бюджетным/небюджетным, что делать, если появится новая классификация/изменится предыдущая, в т.ч названия из класс-ра)? Сорри за слишком большой пост, наболело ;-) -- С уважением, Константин Берлинский, Молдова, Кишинев ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2003, 20:52 |
|
ИС "Учет заработной платы"
|
|||
---|---|---|---|
#18+
Как реализованно у меня в проекте: История по входящим и расчетным данным, способным изменяться задним числом реализована в виде 2 дат - даты ввода в действие (SaveDate) и даты расчетного месяца (CalcDate). То есть например на справочник ставок есть еще таблица значений ставок с структурой: Salary_id int, SaveDate date, CalcDate date, Value numeric(15, 2) Соответствующе например новое значение ставки на январь 2003 года, введенное в январе будет выглядеть как: Код: plaintext 1. 2.
Если например в феврале оказалось, что с 1 января ставка изменилась задним числом, то в феврале добавиться корректирующая запись: Код: plaintext 1. 2.
Следующий запрос вернет реальные значения истории ставок с точки зрения февраля: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Если информация имеет четкое определение начала и конца действия (например налоговые вычеты или постоянные начисления), то соотвествующе получается 4 даты: SaveDate, CalcDate, SaveCloseDate, CloseDate. Аналогично пишутся запросы, в которые попадают близжайшие к текущему расчетному месяцу SaveDate и SaveCloseDate и эти записи считаются актуальными. Для облегчения работы с таким форматом легче всего написать серию запросов по различным разрезам (вся информация с точки зрения указанной SaveDate, информация на расчетный месяц по SaveDate и CalcDate и т.д.). В ASA я для этой цели использовал параметризированные вьюверы (вьюверы, ссылающиеся на глобальные сессионные переменные, значения в которых необходимо устанавливать перед вызовом запроса, ссылающегося на вьювер). Также в ASA 9 можно использовать для этой цели ХП, с учетом того, что их теперь так же можно вставлять в запросы, но я считаю это не слишком хорошей практикой (навеяно опытом работы с Interbase). Для MSSQL идеально подходит использование UDF. Ну соотвествующе на триггерах таблиц висит контроль, запрещающий добавлять, изменять или удалять записи, у которых месяц ввода в действие (SaveDate) меньше текущего расчетного месяца. Также для расчета описана в виде таблиц обьектная расчетная модель, где каждое начисление, удержание, налог, входящие данные, промежуточные расчетные данные и системные алгоритмы (на основе которых базируются пользовательские начисления) - это обьекты. На каждый обьект может быть заведено неограниченное кол-во алгоритмов решений. На каждый алгоритм существует его реализация, указанная в виде имени ХП, которая храниться опять же во времени (SaveDate, CalcDate). Для расчетных и системных обьектов реализация указывает на имя ХП, отвественный за расчет по данному алгоритму. Для прочих обьектов реализация указывает на имя ХП, отвественной за возвращение данных по требованию (используется при детализации результатов расчета и позволяет расшифровать любое начисление, удержание или налог, показав из каких входящих данных был произведен расчет). Так же на расчетные обьекты во времени храняться зависимости на родительские обьекты и маски начислений (группы начислений, логически обьединенные в маску, состояние которой храниться историей с поддержкой задних чисел). Зависимости позволяют определить порядок вызова ХП алгоритмов расчетных обьектов, в детализации определить входящие данные обьекта и поддерживать в системе кэширования сброс зависимых данных (например при изменении значения ставки в кэшах будут очищены по всем договорам, на текущий момент ссылающимся на эту ставку начисление по окладу, ночные, сверхурочные, премии, подоходний и т.д. - то есть все те, кто по дереву зависимостей имеет родителем ставку). Про кэша писать не буду, раньше довольно много про них написал. Хочу только заметить, что в случае расчетов зп на большое кол-во сотрудников такую усложненную систему кэширования я считаю вполне оправданной, если же предполагается маленький обьем расчитываемой информации или же сами расчеты не столь наворочены, то овчинка явно выделки не стоит. Соотвествующе под вышеописанную структуру модели расчетов есть центральная ХП, которая всем и занимается - определяет список кого считать, какие месяца сторнировать и для кого, вызывает ХП инициализации входящих кэшей (то же централизованная ХП), в которых хранятся денормализованные части входящих данных со сложной структурой в БД, получение которых запросами могло бы серьезно замедлить расчет и которые используются во многих местах расчета (например тот же справочник ставок уже разложен в входящий кэш ставок договоров, где на каждый договор уже храниться информация в виде Contract_id, Salary_id, BeginDate, EndDate, Value, DayValue, HourValue - то есть уже видны периоды начала и конца действия значения ставки для договора и ее оклад разложен в виде дневного и часового тарифа для последующего его использования например при расчетах ночных, сверхурочных или праздничных рабочих дней). Что я получил от такой довольно таки сложный схемы реализации зп: 1. История алгоритмов расчетов - любые изменения самих алгоритмов храняться в виде истории, поэтому спокойно можно изменить например расчет больничных задним числом и автоматом пересчитать задним числом все больничные на изменяемый период даже с учетом того, что во входящей информации возможно не было изменений задними числами. Плюс поддержку правильного сторнирования в ситуациях, когда алгоритм изменился с текущего расчетного месяца, но необходимо еще произвести расчет задним числом месяцев, в которых должна участвовать старая версия алгоритма (например с июня изменился расчет больничного, однако необходимо еще пересчитать сотруднику больничный за март по старым правилам расчета больничных). 2. Хранение и централизация всей логики расчетов на сервере позволяет производить расчеты по требованию в любой момент времени - например при выставлении межрасчетными платежами премий, печати отчетов, организации прозрачности расчета для клиентского приложения, где пользователь проводя изменения всегда видит результаты расчетов с точки зрения актуальной информации в БД. Плюс поддержка обьектной расчетной модели, реализованная в БД в виде метаинформации позволяет получать полную информацию о состоянии обьектов, на основании которой можно производить детализацию расчетов, определять зависимости обьектов, получать ссылки на ХП алгоримов расчетных обьектов, действующих на указанный период и т.д. 3. Система кэширования позволяет ускорить расчеты, оптимизируя по принципу "Первый раз посчиталось, далее актуально, пока не изменились параметры родительских обьектов". Плюс данные в кэшах хранят много полезной и разложенной по полочкам информации, которая частенько используется при построении отчетных ведомостей (например в кэшах по договорам разложены по нарастающей начисления с начала года по различным используемым маскам начислений, действующие налоговые вычеты, сумма уже удержанного налога с физ.лиц, средняя зп за последние 3 месяца, различные флаги состояние договора и сотрудника - является ли резидентом, есть ли отклонения в работе от графика работ, закрывает ли ставка полный месяц и т.д. и т.п.). 4. Реализация поддержки пользовательских расчетных обьектов, ссылающихся на системные алгоритмы, позволила мне и пользователям однотипно создавать начисления и удержания, не требующие сложных расчетов (например премия окладная, надбавки, профвзносы и т.д.). Насчет получения ТЗ я уже тоже писал. Насчет граблей в реализации - особо не наблюдалось, единственное что было не приятно, так это отсутствие квалифицированных постановщиков на первых этапах сбора требований ТЗ для проектирования структуры входящих данных. Далее как был реализован движок расчетных обьектов проблема сама собой отпала, так как он позволял мне на довольно таки элементарном уровне с помощью обычных запросов описывать автономные алгоритмы и любые неточности в постановке по расчетной части или же изменения в законодательстве без проблем исправляются простой корректировкой запроса в нужной ХП. Очень надеюсь, что все вышеперечисленное здорово упростит сопровождение системы и если кэша и движок расчетов будут работать как часы, то для модернизации и сопровождения зп подойдет любой человек, знающий в средних обьемах SQL и очень неплохо Delphi (клиент написан на нем), потому как я после дописания сего проекта скорее всего переключусь на написание проекта автоматизации совсем другой отрасли - достала бухгалтерия, будь она не ладна :) P.S. Больше сюда ничего писать не буду, все что мог уже сказал и не раз :) Если возникнут какие то конкретные вопросы, пишите пожалуйста мне на мыло. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2003, 11:23 |
|
|
start [/forum/topic.php?fid=32&msg=32227798&tid=1546787]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
170ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 271ms |
0 / 0 |