|
Как лучше спроектировать регистры | ☑ | ||
---|---|---|---|---|
0
alazir
31.08.15
✎
21:58
|
Есть прикладная задача для обучающего центра. Пользователь покупает абонементы, которые могут иметь ограничение по числу и типу занятий (или не иметь) и по сроку (или также не иметь). Т.е. можно 8 занятий танцами в течение месяца, можно сколько угодно плавания в течение месяца, можно любого спорта на выбор - 20 занятий и т.д.
Документ "отчет занятия" содержит инфу о том, кто из занимающихся в центре посетил указанное занятие. Документ "продажа абонемента" указывает, когда пользователь оплатил абонемент. Соответственно, именно эти отчеты и будут управлять всеми регистрами. При этом каждый абонемент может также изменять статус (например, "заканчивается" - если осталась неделя или 1 занятие и закончился "если дата просрочена или ноль занятий"). Я вижу несколько вариантов решения, но хотел посоветоваться: какой лучше. Можно сделать регистр сведений с датами и регистр накопления с остатком занятий. Тогда статус абонемента можно просчитывать на лету и сообщать оператору, когда абонемент заканчивается. Сложность здесь в том, что логика статуса абонемента должна отображаться в целом ряде окон для автоформатирования (подсветки в списках). Можно, ввести дополнительный регистр сведений со статусами, но тогда непонятно как сделать его управляемым при изменении даты. Может, есть и еще какое-нибудь более элегантное решение? Заранее благодарен за совет! |
|||
1
Мимохожий Однако
31.08.15
✎
22:02
|
Расскажи свои варианты. Глядишь, и подскажут их плюсы и минусы
|
|||
2
alazir
31.08.15
✎
22:06
|
Так я ж вроде и рассказал.
Вариант 1. 2 регистра: 1 (сведения) = даты, 2 (наколение) = остаток занятий. Расчет статуса проводится на лету Вариант 2. 3 регистра: те же, что и в 1 + регистр "Статусов". Соответственно при проводке "Отчета занятия" проверяется, как изменилась дата и остаток и вычисляется значение статуса. Вариант 3. Любой более элегантный |
|||
3
rsv
31.08.15
✎
22:11
|
(0) абонемент уникален получается и отсюда две таблицы . Таблица абонементов и таблица продаж абонементов. Вроде все.
|
|||
4
rsv
31.08.15
✎
22:12
|
И главное .... не усложняйте
|
|||
5
alazir
31.08.15
✎
22:17
|
rsv, Спасибо, но к сожалению не понял Вас (((
Петров может купить более одного абонемента (например, на плавание на месяц и на борьбу на 8 занятий). Это все будет зафиксировано документами "продажа абонемента". Теперь через какое-то время Петров приходит в группу борцов. Администратор центра должен знать: 1) Имеет ли вообще Петров право прийти на занятие (не окончился ли абонемент) 2) Не нужно ли Петрову напомнить, что абонемент заканчивается и в следующий раз надо захватить деньги. Как это сделать в 2 таблицах? |
|||
6
alazir
31.08.15
✎
22:19
|
...т.е. система должна проверить: а) окончание срока абонемента (если он имеет срок); б) окончание лимита занятий (если таковой имеется).
При этом подсветка "проблемного Петрова" должна появляться и в момент, когда он приходит, и в момент, когда, например, администратор делает плановый обзвон участников (например, сообщить о новой акции) |
|||
7
alazir
31.08.15
✎
22:20
|
...и проблемных статуса минимум 2: "завершается - надо напомнить" и "завершился - на занятие не допускать"
|
|||
8
rsv
31.08.15
✎
22:22
|
(5) Фишка в том что продажи и характеристики абонементов разные вещи . Ну ... разведете полями в таблице абонементов возможные состояния оного.
|
|||
9
alazir
31.08.15
✎
22:23
|
После занятия Администратор создает документ "отчет занятия", где указывает, что прошло занятие по борьбе, где были Иванов, Петров и Сидоров. Все остались довольны
|
|||
10
alazir
31.08.15
✎
22:25
|
rsv, Так и есть. Есть справочник абонементы. В нем указано "борьба на 8 занятий". Дальше, есть регистр сведений, где указано: Иванов 8.09 купил этот абонемент (регистр управляется документом "продажа абонемента". Он ведь может покупать этот абонемент сколько угодно раз
|
|||
11
alazir
31.08.15
✎
22:26
|
Так что, 2 таблицы есть. Вопрос только в том, как лучше контролировать "проблемность" абонемента
|
|||
12
itlikbez
31.08.15
✎
22:30
|
(0) В данном случае, регистры не нужны. У вас два документа: продажа и посещение. Больше не предвидится. Вот и оставайтесь с этими двумя документами. Зачем вам регистр?
|
|||
13
фобка
31.08.15
✎
22:30
|
Справочник. Регистр ненужен
|
|||
14
magicSan
01.09.15
✎
06:34
|
Всё что стремится к нулую делай регистр остатков. Регистр сведений не нужен.
|
|||
15
Jofa
01.09.15
✎
06:52
|
РС состояние абонемента
РН Количество посещённых занятий |
|||
16
torgm
01.09.15
✎
07:09
|
(0) какая наивная постановка задачи. А если человек заболеет , безлимитка пересчитается или нет?
А если клиент постоянный посещать продолжать хочет, а деньги на оплату забыл. Как правило существует начисление занятий по абонементу и оплата отдельно... Есть перерасчеты пропопущеных занятий по вине центра. Есть еще некоторое количество ньюансов, которые будут приятным сюрпризом. |
|||
17
alazir
01.09.15
✎
07:22
|
magicSan, спасибо! А как тогда лучше учесть Безлимит в регистре накопления?
|
|||
18
alazir
01.09.15
✎
07:28
|
torgm, ну почему наивная? Я просто несколько упрощенный пример показал, чтобы зря текст не писать.
Вся дополнительная логика в этих регистрах не отображается, а используется в момент проводки соответствующих документов. Например, Вы правильно задаете вопросы про смещение срока безлимитки, но это легко проверяется в момент проводки отчета занятия (кстати, по правилам центра для возврата занятий клиент должен предупредить, что его не будет в группе, и это фиксируется в данном документе). Что касается отрицательного остатка на абонементе, то пока логика программы предполагает возможность продать абонемент в долг, поскольку при начислении отрицательного баланса занятий, будет потом очень тяжело увязать комплексные (на несколько видов сразу) абонементы. А так администратор спрашивает, на что принесете деньги - и проводит абонемент в долг. В любом случае (с) усложнять - не строить ) Расширять потом систему придется, но надо бы хорошо сделать базовую основу |
|||
19
alazir
01.09.15
✎
07:33
|
magicSan, и еще вопрос. Какой документ будет делать записи об остатке дней до даты истечения абонемента?
|
|||
20
alazir
01.09.15
✎
07:40
|
itlikbez, спасибо большое!
Если я Вас правильно понял, что для того, чтобы подсветить по-разному действующие и просроченные абонементы мне в соотв. форму нужно будет встроить: 1) Запрос определяющий, не просрочен ли каждый абонемент (к документам "Продажа" и справочнику "Абонементы") 2) Запрос, определяющий, сколько занятий на каждом абонементе (это ИМХО сложнее, т.к. не исключено, что человек неделю ходил по безлимиту на плавание, а потом купил 8 занятий). В принципе Вы этот подход предлагаете? |
|||
21
alazir
01.09.15
✎
07:43
|
фотка, спасибо за ответ!
Вы имеете в виду справочник, в котором будет указываться, кто и когда купил конкретный абонемент? Если так, то первая проблема будет с тем, что запись в справочник создается Документом (в д. сл. Продажа). Перепроводка этих документов (а она может понадобиться, например, -из-за каких-то требований бухг. логики) создаст полный ад и путаницу. Плюс, все-таки не могу понять, где будет храниться инфа, сколько же занятий осталось |
|||
22
alazir
01.09.15
✎
07:44
|
простите, фоБка (вот она автозамена)
|
|||
23
Матиус
01.09.15
✎
09:16
|
(0) >> Можно сделать ... регистр накопления с остатком занятий.
Он в ноль будет когда нибудь выходить? |
|||
24
itlikbez
01.09.15
✎
09:17
|
(20) Примерно так. Только двумя запросами вы не обойдетесь.
Не пытайтесь в декларативный язык (язык запросов) запихнуть всю бизнес-логику. |
|||
25
alazir
01.09.15
✎
19:53
|
itlikbez, а как реализовать эту сложную бизнес-логику, не прибегая к дополнительным регистрам?
Вот у меня есть список посетителей, которые записаны в группу борьбы (в упр. форме отчета занятия). Хочу, чтобы зеленым выделило тех, у кого есть действующие абонементы, желтым, у кого заканчивающиеся, красным - у кого закончились. Какой код (и кстати где) мне разместить? Программно заполнять свойство автоформат формы? А, если мне еще в ряде форм то же самое надо - то везде программно его заполнять? Я когда-то делал подобный код, но, по-моему, это не самый элегантный вариант. |
|||
26
alazir
01.09.15
✎
19:54
|
Матиус, конечно будет. Вот Вы бы, купив абонемент использовали бы все занятия? Думаю, да.
|
|||
27
itlikbez
02.09.15
✎
11:21
|
(25) Делаешь функцию СтатусыАбонементов(массивАбонементов) и размещаешь ее в общем модуле.
|
|||
28
itlikbez
02.09.15
✎
11:23
|
(25) От дополнительных регистров ваша сложная бизнес-логика простой не станет.
|
|||
29
alazir
02.09.15
✎
21:33
|
itlikbez, Ну вот для примера.
Мне нужно сделать автоформат в форме "Отчет занятия", в котором красным будут показаны те, у кого осталось 1 занятие или 7 дней до окончания абонемента. Как построить второе условие в запросе мне понятно. Как сделать первое? Группировкой во вложенном запросе? |
|||
30
DrShad
02.09.15
✎
21:41
|
Условным оформлением
|
|||
31
alazir
03.09.15
✎
07:12
|
DrShad, условное оформление задавать средствами формы или программно?
|
|||
32
Матиус
03.09.15
✎
12:46
|
(26) Я, конечно, старался бы использовать все занятия. Но иногда я болею, иногда уезжаю на Бали, изредка мне просто лень. Остатки не использованных дней прошлых лет так и будут болтаться в БД до скончания времен?
|
|||
33
Лефмихалыч
03.09.15
✎
13:26
|
(0)
1. Срок действия абонемента надо отделить от состава занятий. ТО есть состав занятий - это оборотный регистр, в котором план-факт по количеству, а измерения - абонемент и виды занятий. Срок действия - отдельный РС, хранящий период действия для абонемента. 2. Взаиморасчеты и оплата - две отдельные темы, я бы их не смешивал. Признак того, что абонемент оплачен, я бы в отдельном РС дублировал, чтобы быстрее получать (иначе придется в обороты без периода лазить). 3. Продажу от оплаты я бы тоже отделил. Потому, что сегодня так, а завтра они рассрочку введут и вся твоя автомтаизация по звезде пойдет. Отдельный документ "выдает" абонемент и фикирует дебиторку с планом занятий. Отдельный - оплату фиксирует. Пока нет рассрочек, можно прикрутить какую-нить плюшку, чтобы много времени не тратить на ввод двух документов. Документ оплаты гасит дебиторку, наворчивает взаиморасчеты, устанавливает факт оплаченности по абонементу. 4. Статус "заканчивается" и "осталась одна неделя" - это регламентными заданиями каждую ночь (или минуту или секунду - пофиг). По идее тут даже лучше стартовать на кого-то бизнес процесс по отработке этого события (кто-то ж должен позвонить и попытаться пролонгировать, да?) Иначе смысла в этом сосотянии нет - ну 1 днеь и один день, всем пох. |
|||
34
Лефмихалыч
03.09.15
✎
13:40
|
+(33) единственная заморочка в том, что реально действовать абонемент начинает с момента (первой) оплаты, а период действия появляется в момент оформления (выдачи). Но и это вопрос решаемый легко и непринужденно. Просто в РС, где период действия, будет две записи - одна при оформлении за план, а вторая при оплате за факт.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |