Цитата:
Сообщение от
mazzy
Прелесть состоит в том, что эти 100 таблиц будут иметь свои типизированные поля, свои валидейты, свои индексы, свои relation'ы, свои права. Каждую таблицу можно будет отнести к определенному проекту и функционалу.
В общем, вы получите проверку на уровне компилятора, а не во время runtime.
Это имело бы значения если бы эти таблицы использовались в DAX. Но их основное назначение хранить параметры для стороннего приложения и легкий доступ к ним в этом приложение. Типизированные поля это хорошо, но для исполнения в RS необходимо передавать параметры в виде сопоставимом с RS. То бишь дату например я передаю используя date2StrUsr(). Иначе параметр может просто не попасть в отчет, или даже привести к ошибке исполнения. Если будет 100 таблиц то везде требуется не забыть преобразовать данные при сохранении параметра. Заполнение параметров осуществляется из диалоговых форм Runbase к которым пользователи уже привыкли. Если они и введут неправильный параметр (например ранг в запросе) в итоге получат неправильный отчет, но то же самое они получали в аксапте, так что пока разницы не чувствую.
Поэтому все параметры преобразуются в строку и хранятся в одной таблице. А добавление параметра осуществляется через единый метод в наследнике Runbase.
Цитата:
Сообщение от
mazzy
Но зато ваша экономия приведет к огромному динамическому программированию, к "универсальным" валидейтам, к неподъемному программированию прав
Подробнее см.
Значение display метода по его названию
Насчет упрощения подписок - отчасти вы правы, но как вы права собираетесь раздавать? Или у вас все пользователи могут менять любые параметры?
Пришлось повозиться пару дней чтобы организовать таблицу для гибкой привязки параметров в аксапте с параметрами непосредственно в отчетах RS. Можно и без этого было обойтись, но неудобно переносить с одного сервера на другой и сервера перенастраивать при новых путях для отчетов на RS или изменении порядка параметров в отчете со стороны аксапты или RS. На этом динамическое программирование закончилось).
А насчет прав доступа выкручиваюсь таким образом). Разграничение доступа к таблице настройки параметров вручную осуществляется через форму. Те кому не положено не допускаются к ней обычными средствами. А заполнение прочих подписок выполняется через наследники Runbase. То есть если у пользователя есть права на формирование отчета он может добавить запись в подписку для данного класса. Если возникла ошибка при создании записи подписки достаточно в диалоге изменить значения полей с уникальным именем подписки и его пересохранить. А дальше все будет зависеть от безопасности на RS.