powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Задача "видимости" работ
25 сообщений из 35, страница 1 из 2
Задача "видимости" работ
    #39727758
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недавно столкнулся вот с такой интересной задачей

Т.З.
Есть отдел связи с клиентами. Занимаются заключением и сопровождением договоров. В отделе несколько групп (возьмём по минимуму - 2) Каждая группа занимается своим направлением. В каждой группе несколько человек (опять возьмём по минимуму - 2 человека: начальник и подчинённый)
Начальник должен видеть все договора. Руководитель группы - все договора своей группы (свои и подчинённых). Рядовой сотрудник должен видеть только свои договора.
Кроме того сотрудники имеют свойства увольняться, уходить в отпуск, переходить из отдела в отдел, трудоустраиваться. Значит надо предусмотреть изменение "видимости" договоров. Переназначать их от одного сотрудника - другому.
Довольно интересная задача. И может быть использована в других задачах, где требуется разграничение доступа не только по видам работ, но и по самим работам.

Может у кого есть идеи , как решить эту задачу?

Мои скромные рассуждения.
Создать таблицу "Видимости" из двух полей код работы и код сотрудника. И заполнять её автоматически при создании работы. Значит надо иметь ещё и таблицу подчинённости сотрудников. При передаче работы от одного сотрудника другому надо убирать старый список видимости и составлять новый.

Вот такие идеи.


-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39727765
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы добавил в табличку описания сотрудников поле, где через разделитель = запятую, перечислял бы
значения первичного ключа тех сотрудников, чьи договора он должен видеть.
(Либо под эти цели описал бы специальную табличку.)
Удобно в запросах пользовать в IN(...).
Достаточно гибко, чтобы учитывать исключения из правил.
Для удобства заполнения значения этого поля можно пользовать TreeView с чекетами.
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39727768
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И кто будет заполнять это поле? Моё предложение с табличкой видимости служит как раз для этого. Можно легко добавлять и удалять сотрудников.
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39727770
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандартная ситуация - Отдельный справочник - "подмены".
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39727773
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss, а в системе уже есть штатное расписание? При изменении в штатном(переход из отдела в отдел, увольнение) - есть какое-либо событие?
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39727781
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossИ кто будет заполнять это поле?...
Тот, кто имеет полномочия добавлять/изменять сотрудников.
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39727806
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss,

Табличка с назначенным сотрудником и датой начала для документа.
При необходимости - брать последнюю запись по назначенному.
При этом сохраняется история перетекания документа.
А иерархию подчиненности сотрудников решается вашим старым способом
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39727860
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинJoss, а в системе уже есть штатное расписание? При изменении в штатном(переход из отдела в отдел, увольнение) - есть какое-либо событие?Штатного расписания нет Задача не задумывалась как всеобъемлющей.

Сначала появилось предложение разработать программу "Написание многопользовательской базы данных клиентов и товара. Требования: Выбор платформы согласовывается дополнительно." Ну я начал поиск чего-то подходящего. Наткнулся на это Программа CRM (Система управления взаимоотношениями с клиентами) обсуждения доработка ну и ещё на кое-что. Заказчик исчез, а задумки и наработки остались. Вот и воплощаю потихоньку. Вдруг выльется во что-то удобоваримое.
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39728572
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss, тогда, стоит начать со штатного расписания.

Дерево: Служба, отдел, сотрудники.
У каждого структурного подразделения есть руководитель , который автоматически является руководителем для всех, кто ниже по дереву.


Потом добавить роли . Что-нибудь вроде: Читатель , Писатель , Редактор , Менеджер .

Читатель - читает все
Писатель - создает, читает только свое
Редактор - читает все, редактирует все
Менеджер - создает, читает все, редактирует все, удаляет все

Далее, в каждом направлении на роли назначают сотрудников. Я бы все-таки ввел понятие Контракт в штатное расписание. Контракт - это ФИО+Должность в отделе. А права выдавал бы именно контракту : если контракт закрыт(сотрудник уволен или перешел в другой отдел) - все, прав нет.

Что в итоге?
Таблицы:
1. Структура компании (тут только структурные подразделения). Иерархическая таблица, где папка - служба, листики - отделы в службе(или в зависимости от глубины структуры компании).
2. Сотрудники - фио, паспортные данные
3. Должности
4. Штатное расписание - таблица, в которой утверждены должности, которые могут быть в конкретном структурном подразделении
5. Контракты - (штатное расписание+фио, по сути связь структурного подразделения, должности и фио)
6. Пользователи системы - логин и все такое(таблица связана с сотрудниками)
7. Роли
8. Права (читать, писать и все такое - отдельная таблица прав на договора)
9. Роли+Права - каждой роли следует назначить необходимые права
10. Направление+Роль+Контракт - в каждом направлении на нужную роль выбрать контракт(или ФИО)
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39728596
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинДерево: Служба, отдел, сотрудники.

Сотрудники в этом дереве - лишние.
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39728607
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss,
1. присвоение каждому сотруднику профиля, причем при переходе на другую должность профиль изменяется (профиль имеет зависимость от должности , подразделения)
2. уровень доступа (если уровень доступа: 1 - только свои документы, 2- документы отдела и пр.)
3. документы имеют также и код профиля создавшего его сотрудника (либо таблица соответствий между профилем и кодом документа)
например сотрудник работает менеджером по продажам в отделе капстроительства ему присвоен профиль: 8796-cap-bye уровень доступа 1
здесь 8796- просто код сотрудника
cap - код отдела капстроительства
bye- должность менеджера по продажам
в этом случае, при переводе на должность менеджера по закупкам скажем код профиля будет иметь вид 8796-cap-sell -сотрудник теряет доступ к документам созданным на должности продажника, однако когда он вернется на старую должность и ему снова будет присвоен код профиля 8796-cap-bye - он снова получит доступ к документам созданным в должности продажника, но потеряет доступ к документам созданным в роли закупщика.
естественно таблица историй присвоений профиля и пр. должны быть
очевидно, когда он станет начальником отдела продаж капстроительства (ему будет присвоен уровень доступа 2), он будет иметь доступ к документам cap-bye и т.д.
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39728643
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вчера пришло письмо от заказчика с кратким ТЗ на двух листах. Похоже они хотят получить полноценную CRM с блоком работы с заказчиками и складом: с учётом поступлений на склад, отгрузкой товара заказчикам, резервированием товаров, отслеживанием оплаты заказов, маржа, стоимость и т.п.

Я в шоке. Не то, что бы я такое написать не смогу, но сколько это займёт времени? Про нервы я молчу. Перелопатил в и-нете кучу статей по CRM и понял, что надо отказываться. За разумный срок я это не напишу, а по скольку это для меня будет идти как подработка, то тем более.
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39728644
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss, поставь им битрикс бесплатный на 12 юзаков - пусть пробуют ;)
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39728645
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинJoss, поставь им битрикс бесплатный на 12 юзаков - пусть пробуют ;)

Хотя там про склад и тому подобное - ничего нет, только CRM.
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39728646
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossВчера пришло письмо от заказчика с кратким ТЗ на двух листах. Похоже они хотят получить полноценную CRM с блоком работы с заказчиками и складом: с учётом поступлений на склад, отгрузкой товара заказчикам, резервированием товаров, отслеживанием оплаты заказов, маржа, стоимость и т.п.

Я в шоке. Не то, что бы я такое написать не смогу, но сколько это займёт времени? Про нервы я молчу. Перелопатил в и-нете кучу статей по CRM и понял, что надо отказываться. За разумный срок я это не напишу, а по скольку это для меня будет идти как подработка, то тем более.

А смысл отказываться ? Обеспечь себя работой на год, возьми подрядчиков, в чем проблема? Объясни заказчику, что готовых решений на рынке под акс нету, но я только вам готов сделать это за год за такие то деньги..дальше - он сам уже решит ;)))
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39728754
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНачальник должен видеть все договора. Руководитель группы - все договора своей группы (свои и подчинённых). Рядовой сотрудник должен видеть только свои договора.
Кроме того сотрудники имеют свойства увольняться, уходить в отпуск, переходить из отдела в отдел, трудоустраиваться. Значит надо предусмотреть изменение "видимости" договоров. Переназначать их от одного сотрудника - другому.

Если важно, чтобы пользователь не ушёл в другой отдел вместе с договорами (например из кул-отдела, обрабатывающего КТшные договора, перевёлся в быдло-отдел, который на мелочёвке), то очевидный способ построить набор Организационных ролей (аналог отделов/групп в оргструктуре ... или саму оргструктуру в виде наглядного дерева), и привязывать права доступа "документ-группа".
Тогда хоть всех в отделе уволь, документопоток не остановится - вновь поступающие договора "диспетчер" может назначать на группу, даже если она полностью вакантна.

А внутри группы уже в документе назначать отдельными NULL-полями ссылки - сотрудник на кого назначено (куратор договора), сотрудник смотрящий в отделе (менегер отдела) и т.п.

Тогда простой расчёт прав видимости по группе (select все договора моей группы), а поверх отобранного допусловиями полюдно "select из отобранного where куратор = я". Тогда если сотрудник переведётся в другой отдел, ему просто автоматом закроются договора прежнего места работы.

Специальный "отчёт "диспетчера" позволит вылавливать такие случаи, когда человек перевёлся, но на нём остались висеть недоделанные прежние договора - которые надо перевесить на другого сотрудника в старом отделе. Как и договора, которые не разгребли (забыли). Ессно диспетчер должен будет видеть всё (если не наворачивать более сложную логику с фоновым заданием).

Если БД выкинуть на MSSQL, то всю такую логику можно упихать в "динамические" вьюхи с использованием CURRENT_USER(), тогда разграничение прав к документам получится весьма непробиваемым (даже если пользователь окажется продвинутым access-vba и сможет влезть в код клиентской части).
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39728909
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинJossВчера пришло письмо от заказчика с кратким ТЗ на двух листах. Похоже они хотят получить полноценную CRM с блоком работы с заказчиками и складом: с учётом поступлений на склад, отгрузкой товара заказчикам, резервированием товаров, отслеживанием оплаты заказов, маржа, стоимость и т.п.

Я в шоке. Не то, что бы я такое написать не смогу, но сколько это займёт времени? Про нервы я молчу. Перелопатил в и-нете кучу статей по CRM и понял, что надо отказываться. За разумный срок я это не напишу, а по скольку это для меня будет идти как подработка, то тем более.

А смысл отказываться ? Обеспечь себя работой на год, возьми подрядчиков, в чем проблема? Объясни заказчику, что готовых решений на рынке под акс нету, но я только вам готов сделать это за год за такие то деньги..дальше - он сам уже решит ;)))
Заказчику рлевать на чем будет сделано. Для него важны сроки и стоимость. А прикиньте, солько надо писать с нуля один только склад. Если даже нормального ТЗ у них нет.

Араткое техзадание приложено.
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39729159
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss, если нужно быстро, то например эта (присылали рассылку - вебинары и пр.) -взять денег за внедреж, если самому то связка Акс+Аутлук может взлететь - но сроки какие? склад запилить недолго, работа со складом, рассрочки, категории клиентов - это все несложно, очевидно отладка с учетом юзабилити всегда занимает кучу времени. CRM тоже можно сделать поначалу в Аксе. (ну я только его и знаю более - менее)
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39729168
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss, заказчик тз нормальное родить сам не может. Тем более - такой сложности.
Да в любом случае ему проще поставить 1с и подстроить свои процессы под это чудо.
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39729192
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинДа в любом случае ему проще поставить 1с и подстроить свои процессы под это чудо.
+
Но есть один нюанс - нужно сразу брать на работу толкового 1С ника
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39729244
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сути получается самая обычная система вычисления эффективных прав - есть два объекта, и требуется вычислить право одного на другой (в данном случае - просто установить факт наличия либо отсутствия права).

Нужна таблица, которая связывает два объекта наличием права, и таблица объектов. Объектом может быть пользователь, ресурс (конечные объекты) или объект безопасности (промежуточные объекты), а типом права - назначение права или эквивалентность права.

Вычисление ресурсов, на которые имеет право пользователь, ведётся просто - берётся пользователь помещается во временную таблицу, получается список объектов, на которые имеет право хотя бы один объект временной таблицы, этот список добавляется во временную таблицу с отсеиванием дублей, процесс повторяется до тех пор, пока на очередной итерации все объекты не будут отсеяны как дубликаты. Остаётся отфильтровать ресурсы. В общем, чем-то аналогично рекурсивному CTE. И соответственно не следует забывать об обслуживании, формально система допускает петли, которые не влияют на результат расчёта эффективных прав, но могут способствовать протечкам.

PS. В принципе, такой расчёт может быть ресурсоёмким (зависит от общего количества объектов), а потому очень неплохо кэшировать результаты расчёта. И отслеживать изменение объектов параллельными процессами - если хотя бы один изменился, то кэшированный результат считается невалидным и при следующем запросе считается заново.

PPS. Лучше всего такая система была реализована в eDirectory.
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39729408
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я собираюсь это делать.

Соображения конкретно под эту задачу.
Есть таблица работников: Код, ФИО, должность, кому подчиняется
Есть таблица работ(заказов или что-то там ещё), название, прочие данные, поле с кодом ответственного работника.

Создаю таблицу видимости работы, два поля: код работы и код сотрудника (полей может быть больше, но это два основных.
Ну и конечно ключевое)
При внесении кода сотрудника в поле "ответственный сотрудник" в таблице работ, он автоматически добавляется в таблицу видимости - код работы, код сотрудника., затем вычисляется код начальника и так же добавляется в таблицу видимости, код работы, код начальника, затем следующий вышестоящий сотрудник. и так до тех пор, пока дело не дойдёт до высшего руководителя. Потом ответственный сотрудник может изменить список допущенных. Добавить или удалить.

У меня первоначально выводится список названий работ с ответственными. А вот при попытке влезть внутрь работы и что-то там изменить должна открываться форма для редактирования. И вот перед открытием этой формы и происходит проверка, входит ли сотрудник, который пытается это сделать, в список допущенных

При смене ответственного сотрудника, сначала очищается список видимости для этой работы, а потом создаётся заново. Под ту задачу, которую я описал в первом посте - это по-моему оптимальное решение
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39729411
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss... Есть таблица работников: Код, ФИО, должность, кому подчиняется ...
Совместителей как будете описывать?
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39729442
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PredeclaredJoss... Есть таблица работников: Код, ФИО, должность, кому подчиняется ...
Совместителей как будете описывать? А пока никак. Я не пишу глобальную программу для всего предприятия. Пока только один отдел. В ТЗ слов о совместителях не было. И ходят слухи что у нас совместительство запретят.
...
Рейтинг: 0 / 0
Задача "видимости" работ
    #39729460
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PredeclaredСовместителей как будете описывать?

Да в принципе можно также, вместо поля ответственного - таблица ответственных (по аналогии с таблицей видимости), или вообще обойтись одной таблицей видимости работы, добавив в неё тупо поле Роль . Если добавляется запись с ролью "Исполнитель", то добавляем еще и "Начальников" исполнителя в таблицу видимости. Так гораздо гибче будет со всех сторон...
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Задача "видимости" работ
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]