|
|
|
| Сразу скажу делаться будет не на ACCESS. (пишу в основном что бы услышать интересные идеи и возможно самому изложенный на "бумаге" вопрос поможет поиску решения.)
Описание.
Есть документ.
В документе кроме прочих полей есть поля:
Сис. админ.
Нач. отд.
Нач. фин.
бух.
Снаб.
|
ну и еще несколько из этой же серии.
В этих полях прописываются фио людей исполняющих ДЛЯ ЭТОГО документа указанные роли (бухгалтера, нач отдела и т.д.)
например
Сис. админ. - Иванов
Нач. отд. - Петров
Нач. фин. - Петров
бух. - Сидорова
Снаб. - Иванов
|
Документ движется по этапам (вперед - назад и перескакивает в зависимости от схемы прохождения).
На каждом этапе документ может править только один из вышеуказанного списка тот чья должность является исполняющей данный этап (ну и еще администратор системы)
Он вносит нужную информацию и отправляет на другой этап.
Например.
Этап - "утвердение финансировани"
Исполнитель - "Нач.фин."
для нашего примера это будет Петров (для другого документа может быть кто-то другой, тот чьи фио записаны в поле "Нач.фин."
|
при похождении по этапам народ получает всякие извещения и напоминания (обычно тот на чьем этапе находится документ)
Все хорошо, но вот Петров ушел в отпуск на 2 недели. Нужно дать права на редактирование документа лицу его замещающему, причем ни под логином Петрова, а под своим.
В принципе решается легко. Пишем документ определяющий замены.
дата с
дата по
кого
на кого
|
Потом побегаем по документам и меняем одно фио на другое в зависимости от дат.
Например
с 1.12.2011
по 10.12.2011
Петрова меняем на Барабулькина.
документ получает след. вид
Сис. админ. - Иванов
Нач. отд. - Барабулькин
Нач. фин. - Барабулькин
бух. - Сидорова
Снаб. - Иванов
|
Теперь Барабулькин может править все документы относящиеся к этапам которые выполнял Петров и он же будет получать все извещения и ему будут звонить в случае проблем (ведь в документе его ФИО).
когда наступит 20.12.2011 произойдет обратная замена.
Все хорошо если подменяющий при обычной работе не участвует о работе с документом.
Но представим себе ситуацию что Петрова подменяет Сидорова!
При использовании вышеуказанного алгоритма подмена произойдет без проблем.
Сис. админ. - Иванов
Нач. отд. - Сидорова
Нач. фин. - Сидорова
бух. - Сидорова
Снаб. - Иванов
|
А вот при возврате Петрова из отпуска начнется каша
Сис. админ. - Иванов
Нач. отд. - Петров
Нач. фин. - Петров
бух. - Петров ( а должна остаться Сидорова!!!!)
Снаб. - Иванов
|
Вот собственно и вопрос:
КАК сделать обратную подмену только тех полей которые изменились при прямой подмене?
Пока есть только одна идея
Идея 1
В документе сохраняется список полей которые были изменены при обработке подмены. Тогда только эти поля будут обновлены при возврате к исходному состоянию
может кто что подскажет? | |
|
| |
|
|
|
| видимо танцевать надо от должности и фамилии
а не только от фамилии
заменяет Барабулькин Нач. отд. Петрова - меняем Петрова на Барабулькина
возвернулся в зад -меняем в зад | |
|
| |
|
|
|
| Табла "Текущий исполнитель"
Поля
IDДолжность
IdFIO
dataBegin
dataEnd
Т.о. На каждую дату мы будем знать кто сейчас кто. | |
|
| |
|
|
|
| Не пойдет по той же причине что и совеот snipe,
Петров для одного документа будет фин.
а для другого может быть снаб. или сис.админ
|
т.е. один и тот же человек в разных документах выполняет разные роли (должности).
т.е. это сработает только если еще и код документа сохранять в этой таблице | |
|
| |
|
|
|
| Всё легко решается, если у таблицы "документы"
есть подчинённая таблица - "работавшие с документом" где есть поля
должн.
ФИО
Дата
внесённые Изменения
-----------------------
Эту таблу можно обозвать "история"
ИХМА.
тада по истории можно отфильтровать - нужные данные по нужному документу - для конкретной задачи(отчёта). например по максимальной дате (времени) .
Там будет одна фамилия на каждую должность.
Фамилия последнего правившего документ. | |
|
| |
|
|
|
| мне не нужно "работавшие" это делается на уровне системы.
Мне нужно сейчас раздать права на документ | |
|
| |
|
|
|
| snipe,
так не получится
Петров для одного документа будет фин.
а для другого может быть снаб. или сис.админ | |
|
| |
|
|
|
| Мне нужно сейчас раздать права на документ
==========================================
Читаю ещё раз ситуёвину.............. | |
|
| |
|
|
|
| Толи задача описано невнятно, то ли я невменяем.
Но история правок документа - должна быть однозначно.
Что бы каша - была слоями в разрезе дат.
Так как одно и то же лицо - может выполнять все операции попеременно - нельзя дать оценку того кто работал с документом в целом.
Слои накладываются друг на друга и в одном и том же поле будут присутствовать - разные фамилии в разный отрезок времени.
И только просмотрев всю хронологию изменений (которая хранится в истории правок документа) можно что то понять. Можно составить какой то отчёт , в том числе и в процентном выражении затрат каждого лица на правку данного документа. | |
|
| |
|
|
|
|
бух. - Петров ( а должна остаться Сидорова!!!!)
|
В последнем слое - будет в этом поле Петров, а Сидорова, = она в предыдущем слое.
нельзя перевести эту задачу в плоскость - она тасазать трёхмерная.
может массивы нам помогут.
Но опять в зависимости от ( точки во времени ) актуальности -будет меняться состав работающих с документом людей и их прав-должностей. | |
|
| |
|
|
|
| К моей табле еще оду
"История правок документа"
Кто залез - исправил - записать.
Id
Iddoc
data
idfio
а уж она связана с "Текущий исполнитель" | |
|
| |
|
|
|
| У него нет таблов у него документ типа вордовского.
И всё в этом документе.
А потому нужна база данных для хранения истории изменения(правок) документа и программа для обработки этой базы. ЭХМА. | |
|
| |
|
|
|
| Так мы ж это. Идеи. А как реализовать - дело автора. | |
|
| |
|
|
|
| АГА | |
|
| |
|
|
|
| еще раз.
Мне не нужно историю. Она и так есть. Кто, когда, что - это все регистрируется на уровне системы, а не на уровне логики.
Как в виндах (кто зашел, что запускал, что делал)
мне нужно разрешить править документ пользователю на определенное время.
Причем эти права прописываются в документе.
за исполнением прав опять же следит система.
Я просто в документе заполняю именами пользователей служебные поля 2-х типов
Readers и аuthors
Первые могут видеть, вторые изменять.
А система уже сама разграничивает права.
т.е. я даже если очень захочу, не смогу дать возможность увидеть документ пользователю если его нет в поле типа "Readers".
Для него документа в базе просто НЕТ. Его система не покажет пользователю.
ТОже самое с Authors.
На все это еще накладываются права на БД, но это уже совсем не имеет отношения к задаче | |
|
| |
|
|
|
| задача выглядит как для трехзвенки | |
|
| |
|
|
|
|
| ребята, всем спасибо.
Дело в том, что база не реляционная, ваши решения в реляционной плоскости. они в принципе не совсем подходят. | |
|
| |
|
|
|
| очень похоже на простой обычный документооборот. Не знаю подойдет ли на подобное основа 1С. Но по начальному вопросу получается, что есть некая таблица допусков, которая обновляется запросом на обновление по указанным должностям. (ID соответствующих строк) И действия с документом согласно учетных записей по этой таблице.
(Чего это я выдал?) | |
|
| |
|
|
|
| Я туплю....... | |
|
| |
|
|
|
| в чем затыка ДФ подсказал правильное решение
есть начальная таба
Сис. админ. - Иванов
Нач. отд. - Петров
Нач. фин. - Петров
бух. - Сидорова
Снаб. - Иванов
|
и табла разрешений, которая "заменяет" первую
Сис. админ. - Иванов
Нач. отд. - Сидорова
Нач. фин. - Сидорова
бух. - Сидорова
Снаб. - Иванов
|
при замене которая волнует
нужно сверять имя НАЧАЛЬНОГО афтара который хранится в документе и имя того кто меняет в данный момент, т.е. при замене Сидорова на Петрова (вернулся из отпуска он) происходит следующее.
1. Нач. отд. - Петров (из афтара) <>= Нач. отд. - Сидорова (из табл разрешений) - НЕ СОВПАДАЕТ, т.е. Сидорова меняем на Петрова
2. Нач. фин. - Петров (из афтара) <>= Нач. фин. - Сидорова (из табл разрешений) - НЕ СОВПАДАЕТ, т.е. Сидорова меняем на Петрова
3. бух. - Сидорова (из афтара) <>= бух. - Сидорова (из табл разрешений) - СОВПАДАЕТ, т.е. Сидорова НЕ МЕНЯЕМ на Петрова
и табла принимает прежний вид. | |
|
| |
|
|
|
| эта-же сработает если Сидорова заменяла не только Петрова но и Баранова.
n-я замена Адимн. - Баранова (из афтара) <>= Админ. - Сидорова (из табл разрешений) - НЕ Совпадает и Адимн. - Баранова не совпадает с Петрова, т.е. Сидорова НЕ МЕНЯЕМ на Петрова | |
|
| |
|
|
|
| У меня так может поможет
например
есть роли
1 user может читать - u
2 super user может редактировать - su
3 Admin удалить ... и т.п. - sa
в табле
ФИО Должность permissions
Петор Нач ... sa
и т.п. | |
|
| |
|
|
|
| кто-то ушол в отпуск
другому sa | |
|
| |