Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
Ежели есть кто-то, кто занимается такими задачами, был бы рад пообщаться - зашел в тупичок-с, ищу свежих идей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 23:26 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
Зашифровался ,земляк ! У меня программа лет семь крутится в двух конторах ( VFP+dbf) по населению и три года для расчетов с организациями С организациями- просто : нормы и расход реальный а вот с населением - мраки : нормы,льготы ,субсидиии,перерасчеты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2004, 00:26 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
Я занимаюсь всей коммуналкой, комплексно Спецально создали форум, заходите Hазвание форума: talk.ru.house Описание: ЖКХ расчеты, алгоритмы, и проблемы при создании ПО URL: Http://talk.mail.ru/forum/talk.ru.house ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2004, 11:56 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
Vladimir M Sklyar. Хорошее дело, форум. Только там всего сотня постов за год. Давайте лучше здесь. locky. В чем заморочка конкретно? Ну и тут глянь /topic/104621&pg=-1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2004, 12:26 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
psj69 а вот с населением - мраки : нормы,льготы ,субсидиии,перерасчеты Да, все именно так. Алгоритм действий примерно таков: 1. Выясняешь на основании каких документов они расчитывают оплату. 2. Внимательно изучаешь их. 3. Идешь к начальнику из этой водоснабжающей организации и выясняешь интересные моменты. Практика показывает, что они всегда находятся (неоднозначности в документах и постановлениях и т.д.). Где он это будет дальше выяснять, в принципе волновать не должно. Важно, чтобы он дал ответ как надо считать. 4. Связываешься с организацией, которая будет компенсировать водоснабжающей организации выпадающий доход. С удивлением узнаешь, что они по-другому рассчитывают начисления. Поэтому и суммы к возмещению у них получаются другие. 5. Идешь к начальнику из этой водоснабжающей организации. Пускай он связывается с организацией из п.4 и урегулирует этот вопрос. 6. После всего этого пишешь процедуру расчета. Момент касаемый реализации: Пока будут выполняться пункты 1-6 успеют принять пару новых постановлений, которые поменяют порядок учета. Отсюда мораль - процедура расчета должна быть легко модифицируемой, очевидно, отдельно от самой программы. Например, задаваться в виде описания на каком-то своем встроенном языке, в виде хранимой процедуры и т.д. по вкусу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2004, 12:26 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
Локшин Марк Правильный подход. Только процедуру лучше писать единую, но со множеством параметров. Кому как нравится. Кому на ХП, кому на сервере приложений. ================ Хотя... Есть и блестящая работа по меняющимся алгоритмам расчета. /topic/37397 ================ Поскольку наши чиновники помнят математику только в объеме 5 классов, то никаких сверх хитрых адгоритмов они придумать не могут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2004, 12:36 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
Cat2Vladimir M Sklyar. Хорошее дело, форум. Только там всего сотня постов за год. Давайте лучше здесь. Я даже не против. Просто там возникают сообщения когда есть проблемы. Да и достпуп к sql.ru у меня очень проблемный. NNTP глючит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2004, 12:54 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
Vladimir M Sklyar. А по-серьезному раскрутить пробовали? Тема-то действительно сложная и актуальная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2004, 13:00 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
Cat2Vladimir M Sklyar. А по-серьезному раскрутить пробовали? Тема-то действительно сложная и актуальная. Что раскрутить ? Чтобы лишний раз не захломлять здесь - вылези в аську (моя есть в профиле) Заодно о поговорим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2004, 13:06 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
Vladimir M Sklyar. Я аськой не пользуюсь - дорого. По мылу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2004, 13:35 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
как здорово что все мы здесь сегодня собрались.. (С) митяев (?) по существу в приведенных топиках - пасибо, был, читал, даже кое-где писал. по поводу - Http://talk.mail.ru/forum/talk.ru.house - обязательно посмотрю, спасибо, не знал о таком, хотя и искал нечто подобное. Теперь о проблеме. у меня есть система, занимающаяся расчетами с населением за услуги водоотведения. Начисления, перерасчеты, оплата, задолженность и т.д. в топике округление сумм я приводил скелетный вид метода начислений, который я применяю locky если допустить, что у нас есть перечень услуг с нормами расход услуги на единицу людей и ценой этой услуги, что все лицевые счета всегда пользуются следующими услугами, то алгоритм начислений выглядит вот так: Код: plaintext Аналогичным образом считается льгота, только в качестве услуги используется регистрация льгот, а в качестве опорной суммы - проведенные ранее начисления. Добавляя по вкусу разные дополнительные таблицы связи (не забывая при этом о периоде наличия связи) между ЛС и услугой, ЛС и графиком подачи воды, ЛС и показаниями счетчика - можно изменять начисленную сумму. Как видим, применен подход «От услуги», который достаточно хорошо описан в топике Система с изменяющимися алгоритмами расчета. . Подход «От ЛС» дает значительно более худшие результаты по скорости расчета. К тому же, в моем подходе есть масса дополнительных преимуществ, типа возможности достаточно просто модифицировать алгоритмы расчета, добавлять туда новые условия и т.д. А теперь о грустном. Как видно из алгоритма, на выходе получается табличка с промежуточными данными. Объем этой таблички порядка (К-во ЛС)*(К-во услуг на одном ЛС)*(К-во дней в месяце), что для 500000 ЛС с холодной и горячей водой составляет около 3*10^7 строк. По сути своей табличка – временная, но из-за организации пофазовой методики начисления создается как постоянная. Ессно, перед расчетом и после него табличку надо чистить. Это- порядочный кусок времени (14% от общего времени расчета). В топике выполнить truncate table я также привел несколько побочных проблем, а также то, как я считаю нужным их решать. Но закрадывается в голову сомнение: а правильно ли я думаю? Может, в консерватории что-то надо менять? Т.е. может быть мне нужно менять архитектуру расчетов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2004, 14:37 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
Чем обусловлен подневный расчет ? Человеку ведь предьявляеться сумма начисления за месяц в разрезе услуг или может есть какие-то хитрые требования ? (я тоже занялся переработкой своего ПО, может чего упустили) To: Cat2 Отписал Вам пару писем. На форуме Вы быстрее отвечаате ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2004, 14:44 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
Подневный расчет вызван следующей причиной: любая из характеристик объектов начислений (к-во проживающих, норма, тариф, категория льготы, к-во льготников) может изменится в любой день. к тому же, в любой день человек может быть покдлючен/отключен к индивидуальному/коллективному счетчику (или и к тому и к другому одновременно). На каждый день есть график с указанием, была или не была горячая/холодная вода. Далее, как видно из примера расчет провизводится для нескольких счетов одновременно, а в этом случае минимальный период неизменности всех параметров - 1 день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2004, 14:55 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
Я предполагал другие требования для формирования такого подхода к начислению (орг. вопросы, хитрая постановка задачи) В любом случае какая бы не была таблица с данными о начислениях (суммарная, по дням) ее все равно необходимо будет чистить перед началом процесса начисления. Была бы возможность отключить логирование данных для опр. таблиц - но увы, MSSQL пока этого вроде не позволяет (может в будущем и сделают). Для меня эта тема тоже открыта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2004, 16:25 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
Самое главное - не задавай в форуму вопрос, а нельзя ли отключить логгирование. Популярно объяснять, что с точки зрения теории - это не есть правильно, а значит не есть правильно и с точки зрения практики. А сам ты... в общем, учите матчасть и читайте BOL, маладой человек! :-)) когда то подымался мною вопрос "о ненужных возможностях", мы там чуток покусались. Причем с точки зрения Sybase, если не ошибаюсь, выключение логгирования - полезная весчь, с точки зрения Informix - тоже (только там есть нескоко ограничений, которые практически на нет сводят преимущества). Вооот... дык а подход то возникает из постановки задачи - учет параметров объекта начисления с точностью до 1-го дня. Не так, чтобы - льгота - на весь месяц, проживающие - тоже, а так чтобы "С-по"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2004, 16:34 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
locky А теперь о грустном. Как видно из алгоритма, на выходе получается табличка с промежуточными данными. Объем этой таблички порядка (К-во ЛС)*(К-во услуг на одном ЛС)*(К-во дней в месяце), что для 500000 ЛС с холодной и горячей водой составляет около 3*10^7 строк. По сути своей табличка – временная, но из-за организации пофазовой методики начисления создается как постоянная. Ессно, перед расчетом и после него табличку надо чистить. Это- порядочный кусок времени (14% от общего времени расчета). Зачем же эту таблицу постоянно чистить перед расчетом? В том же топике Система с изменяющимися алгоритмами расчета. . хорошо описанна технология кэширования, если по данному лицевому расчет уже произведен, то он при расчете уже не участвует. При изменение данных по лицевому (изменени льгот, даты подключения, кол-ва прописанных), удаляются в таблице расчетов только записи по этому лицевому. Полностью таблица очищается только при закрытие месяца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2004, 12:19 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
>Зачем же эту таблицу постоянно чистить перед расчетом? Уж больно велик получается размер кэш-таблицы - для 7 лет около 672Gb. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2004, 12:42 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
VadimSПолностью таблица очищается только при закрытие месяца. locky>Зачем же эту таблицу постоянно чистить перед расчетом? Уж больно велик получается размер кэш-таблицы - для 7 лет около 672Gb. Я так понял, что расчет производится только за текущий месяц+ сторнирование при необходимости за предыдущие (но сумма кидается в текущий). Вот после закрытия расчетного месяца и очищается расчетная таблица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2004, 14:13 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
Боюсь, что подход с кэшированием, предложенный ASCRUS подходит для задач во первых, с относительно небольшим объемом кэшированных данных, во вторых для задач, в которых в течении текущей работы конечный результат формируется более чем на 70%. К примеру в той же зарплате каждый табельный номер практически гарантированно будет обработан в отчетном месяце. В моем случае изменения происходят по 2-5% ЛС в месяц - их я могу положить в кэш. но по всем остальным надо будет затем определить - есть они в кэше или нет, и если их там нет - посчитать. вот это момент "определить есть или нет" - достаточно тяжел. в 95% выгоднее просто посчитать. Кста, а вообще кто-нибудь еще применяет подобных подход - расчет не ЛС счета по всем услугам а расчет услуги по всем ЛС? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2004, 15:15 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
TO locky. У нас тоже расчет за коммунальные услуги. Пока еще крутится задача на фоксе по DOS. В ней реализовон расчет по лицевым счетам. Моя задача перевести все это на sqlServer. Естественно нужно переписать все алгоритмы расчета. В методику расчетов пока еще только въезжаю. Но делаю расчет по услугам. Получается примерно как у тебя, с точностью до дня. А определяю посчитан - или нет лицевой за текущий месяц так: Есть кэш - состояние лицевого счета за текущий месяц. В нем поле - признак посчитан или нет. При расчете ставится признак - посчитан. При изменени данных по лицевому счету через триггеры удаляю записи в расчетном кэше и в кэше-списке лицевых снимаю признак расчета. Перед вызовом процедуры расчета, заполняется временная таблица- кого хотят считать: один лицевой, либо какой то жэу, либо всех. Эта таблица сравнивается с кешем-списком лицевых и далее считаются только тех, кто еще не посчитан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2004, 16:41 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
кстати, только-только обратил внимание: и в моем варианте с "временным" кэшем, и в варианте ASCRUS с "постоянным" кэшем есть одна и та же операция: очистка части кэша :-( Вот её-то и хочеться избежать. Наверное, для меня наилучшим выходом всё-же будет разведение расчетов по разным промежуточным таблицам с truncate'ом их в конце расчета. это ко всему прочему повысить конкурентность системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2004, 17:31 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
locky кстати, только-только обратил внимание: и в моем варианте с "временным" кэшем, и в варианте ASCRUS с "постоянным" кэшем есть одна и та же операция: очистка части кэша :-( Вот её-то и хочеться избежать. Т.е. у вас проблема только в том, что долго удаляются строки из таблицы? Эта операция занимает основную часть времени при расчете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2004, 17:57 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
>Т.е. у вас проблема только в том, что долго удаляются строки из таблицы? Эта операция занимает основную часть времени при расчете? Ну, не основную часть времени, а, как я уже писал, 14% от времени расчетов. просто столкнулся с тем что достаточно сложно соптимизировать Код: plaintext 1. Вот и закралось в голову сомнение: может проблема не в этом, а в подходе к расчетам в целом? Может, не следствие надо лечить, а причину? И если причину, то как её лечить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2004, 18:14 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
По поводу кэшей: В зп действительно удобно все посчитать, положить, чистить по триггерам только изменившиеся и заново их считать. По коммуналке такое не прокатит по причине больших обьемов. Однако расчеты там идут тоже постоянно, поэтому тут выгоднее получается использовать промежуточные расчетные данные. Можно рассмотреть следующие варианты: 1. Организовать кэш готовности расчетов лицевых счетов. В нем выставляются флаги для тех лицевых счетов, которые были рассчитаны и при изменении входящей информации они сбрасываются. Естественно флаги хранятся для каждого лицевого счета за каждый расчетный месяц. В итоге изменение задним числом приводит к сбросу флагов предыдущих месяцев и уже служит основанием для сторнирования этих месяцев. Думаю обьяснять преимущества не нужно - нет смысла пересчитывать все по предыдущему месяцу из за одного изменившегося задним числом лицевого счета. 2. Организовать расчет и хранение промежуточных данных расчета. Например если рассмотреть коммуналку, то все льготы, субсидии и т.д. в конце концов выливаются в некие коэффициенты, на основе которых и идет расчет. В итоге расчет делиться на 2 этапа: расчет коэффициентов и окончательный расчет. В итоге тоже изменение ставки не затрагивает изменение коэффициентов лицевых счетов и остается только взять уже готовые коэффициенты и пересчитать их по новой ставке или норме потребления. 3. Для тех услуг, которые имеют постоянный обьем потребления можно организовать хранение только точек отклонения. Например пока не изменилась ставка на отопление и условия лицевого счета, то ежемесячно ему выставляется одна и та же сумма. Гораздо выгоднее получается один раз зафиксировать эту сумму по отоплению на ее последнюю дату расчета и пока не произошло изменений условий входящих данных ссылаться на нее, чем каждый раз в БД писать ее на каждый месяц. В итоге имеем уменьшение обьема данных в БД (причем по идее не маленькое), ускорение работы при выполнение запросов и пропуск расчетов по таким услугам для тех лицевых счетов, у которых ничего не поменялось. Идеи эти конечно сыроваты, я в свое время консультировал одну контору, которая делала ПО под ЖКХ на MSSQL2000, они ими воспользовались, довели до ума, наложили естественно свое видение структуры БД и вроде как сейчас у них расчет 50-100 тысяч лицевых счетов вполне нормальное явление, без лишнего геммора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 14:09 |
|
||
|
начисления за услуги водоснабжения/водоотведения
|
|||
|---|---|---|---|
|
#18+
< ASCRUS А можно немного подробнее о 3-е пункте. Т.е. изначально сделали расчет по всем лицевым. Затем в следующем месяце делаем расчет только у тех, у кого поменялись параметры? А у остальных берем последнее начисление? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 17:09 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=32619909&tid=1546231]: |
0ms |
get settings: |
10ms |
get forum list: |
22ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
92ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
91ms |
get tp. blocked users: |
2ms |
| others: | 251ms |
| total: | 497ms |

| 0 / 0 |
