Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Не могу сообразить как хранить переходящие остатки.
|
|||
|---|---|---|---|
|
#18+
Создал таблицу Остатки(Идентификатор места и времени, Тип скважины, Остаток скважин на начало месяца, взорвано скважин за месяц, взорвано руды за месяц, Идентификатор записи), есть еще таблица буровых работ(Идентификатор места и времени, Номер бурового станка ,Тип скважины, Пробурено скважин за месяц, Идентификатор записи). Остаток скважин на начало месяца = Остаток скважин предыдущего месяца +сумма пробурено скважин за месяц - взорвано скважин за месяц. Естественно что остаток вычисляется с учетом типа скважины и для конкретного места. По пробуренным скважинам берется сумма по станкам т.к. на одном месте в один и тот же месяц могут бурить два станка скважины одного типа. Вроди бы все нормально. Но ни как ни могу сообразить что делать если возникнет необходимость корректировать существующие данные. Например: надо будет изменить значение поля "Пробурено скважин за месяц" таблицы буровых работ за май, когда в обеих таблицах есть уже данные за июнь, август и сентябрь. Попробовал выполнять корректировку с помощью триггеров срабатывающих на изменения в полях участвующих в расчете. Но все как то очень плохо получается не выходит учесть все, что необходимо, чтоб при любых изменениях поддерживать не противоречивость данных, код в триггерах огромный. Еще не понятно следящее - если девствовать по схеме: при изменение данных в полях: Остаток скважин на начало месяца, взорвано скважин за месяц, Пробурено скважин за месяц пересчитать остатки на начало следующего месяца, если есть соответствующая запись за следующий месяц то скорректировать значение поля Остаток скважин на начало месяца если нет то ее надо добавить, далее триггер сработает уже то, что было скорректировано им же. Не понятно года это останавливать. Можно например при достижении месяца следующего за текущим(по календарю). Но все это как-то криво получается. А что делать, если в мае был не верно указан тип или место скважин, остатки ведь тоже перечитывать надо. В общем куча триггеров с огромными телами. Если все делать с помощью хранимой процедуры, то когда ее запускать и как при этом гарантировать не противоречивость данных? Все равно ведь многие сталкивались с похожей задачей, возможно даже есть стандартные решения. Подскажите идею, как хранить остатки. Помогите, пожалуйста, люди добрые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 13:23 |
|
||
|
Не могу сообразить как хранить переходящие остатки.
|
|||
|---|---|---|---|
|
#18+
Это стандартный учет движения объектов учета от одного субъекта к другому на каком либо основании Что есть объект учета? - скважина Что такое субъект? - место где хранится скважина, откуда приходит и куда уходит. Итого: Пробурили скважину, записали Что: Скважина Откуда: Изниоткуда Куда: В эксплуатацию Количество: 5 штук Дата: март Взорвали скважину, записали Что: Скважина Откуда: Из Эксплуатации Куда: В задницу Количество: 2 штуки Дата: Апрель Обычным селектом с группировками можно получить любое состояние. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 13:32 |
|
||
|
Не могу сообразить как хранить переходящие остатки.
|
|||
|---|---|---|---|
|
#18+
ru_efimПодскажите идею, как хранить остатки. Помогите, пожалуйста, люди добрые.Я чел не добрый, но тут явно стоит делать по здравому смыслу. Таблицу остатков оставить - триггера убрать - любой клик не отследить как правило, особенно на больних обьемах.ПОЛНЫЙ пересчет процедурой - раз в сутки напр.(или по требованию) за текущий месяц(отч. период) с последующим переносом на последующие. Если нет какой специфики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 13:41 |
|
||
|
Не могу сообразить как хранить переходящие остатки.
|
|||
|---|---|---|---|
|
#18+
Есть два метода: в первом случае ты записываешь состояние дел (по скважинам, складу или чего-там ещё) - в виде "прихода" от "Бога" на конкретную дату - по каждой конкретной позиции. Дальше учитываешь изменения которые происходят - те же приходы-расходы скважин, только даты другие и количества другие - опять же по каждой позиции. Состояние дел "на сейчас" (или когда нужно и пр.) видишь очень простым запросом. Т.е. сколько где пробурено за период - это вычисляемое поле во втором методе - если я не ошибаюсь в 1С так - есть регистры - хранящие остатки по каждой позиции - т.е. сколько где пробурено за период это хранится в регистре - без всяких запросов ты видишь - сколько чего есть. Это удобно если у тебя миллионы-миллионов транзакций сервер физически не может обрабатывать запросы которые образуются по 1-у методу. НО при этом варианте ТЫ пишешь процедуры которые сам проверяешь на здравый смысл - они чего-то прибавляют-убавляют. Для того чтобы можно было хоть как-то отслеживать почему "в нашей БД написано что мы должны 600тыс этому поставщику - а он сам говорит, что только 250тыс..." есть так называемые "проводки документов" - когда документ проведён - вот тогда процедурка изменения количеств в регистрах сработала... Понятно, что если у тебя несколько тысяч скважин и каждый месяц по каждой несколько изменений - и запросов к БД несколько сотен в день - т.е. нагрузка не большая первый вариант (мне кажется) лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 13:59 |
|
||
|
Не могу сообразить как хранить переходящие остатки.
|
|||
|---|---|---|---|
|
#18+
Все равно не понял, хотя всем огромное спасибо. Ну не сталкивался я с "остатками", если можно поподробней. Таблица буровых работ служит чтоб оценить обьем работ бур. станков т.е. кто и что и сколько набурил, описывать каждую скважину не надо. Таблица остатков - чего и сколько где осталось. Взрывные работы там потому что взорванные скважины тоже как и остатки хорактеризуются местом, временем и типом скважины. Объемы: Таблица буровых работ-около 100 записей в месяц, Остатки - около 50 в месяц. Корректировать данные за текущий месяц может возникнуть необходимость ну раз ну пять в месяц по одной ну фиг с ним 5 позициям. Корректировать данные за поза поза поза прошлый месяц в таблицах не точто каждый месяц, раз в год врядли прийдется. Но всетаки вероятность корректировки исключить нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 15:04 |
|
||
|
Не могу сообразить как хранить переходящие остатки.
|
|||
|---|---|---|---|
|
#18+
Остатки не нужно хранить, их нужно вычислять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 15:31 |
|
||
|
Не могу сообразить как хранить переходящие остатки.
|
|||
|---|---|---|---|
|
#18+
Old NickОстатки не нужно хранить, их нужно вычислятьОстатки хранят вынужденно - чтобы сократить время запросов. В данном случае согласен - вряд ли операций по скважинам миллионы или хотя бы десятки тысяч. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 13:14 |
|
||
|
Не могу сообразить как хранить переходящие остатки.
|
|||
|---|---|---|---|
|
#18+
Это мы с Вами понимаем, а ему пока не надо этим голову забивать. Пусть сначала сообразит, как нужно хранить остатки, а уж потом как сделать чтобы доступ к ним был быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 13:29 |
|
||
|
Не могу сообразить как хранить переходящие остатки.
|
|||
|---|---|---|---|
|
#18+
До нескольких миллионов можно и на лету остатки считать. У нас на Балтике естесственно есть триггер который при добавлении/удалении записей в складском движке обновляет подневные обороты и остатки -------------------- Не учи отца и баста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 13:31 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33301511&tid=1545633]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 399ms |

| 0 / 0 |
