ClientBase 1.9.5, лицензия
Условия задачи:
Есть несколько офисов в разных городах и регионах. Каждый офис должен иметь доступ только к той информации которая касается его. Т.е. офис в Самаре должен видеть только то что наработали они и не иметь доступа к тому, что было наработано, скажем, в Новосибирске. Впрочем, может быть головной офис региона, который должен иметь доступ ко всем записям офисов своего региона. Плюс, решение должно предусматривать наличие возможности просмотра всех записей для специального, не административного аккаунта. А также должно предусматривать возможность ещё одного слоя доступа - стран.
В базе, разумеется, есть справочники городов, регионов и стран.
Получается, что каждому клиенту, договору и т.п. должна выдаваться "прописка", причём варианты "прописки" должны коррелироваться с правами доступа(т.е. менеджер может иметь доступ в два города, выбор должен быть только из этих двух городов).
Логично было бы сделать подобный доступ группами, что позволило бы группировать группы доступа городов в группы доступа регионов. Однако там я не нашёл как настроить доступ по условию.
Ну и собственно вопрос. Как всё это описанное реализовать? Возможно ли это реализовать самостоятельно или необходимо обращаться к вам за доработкой?
2
В теме одно сообщение
#1
Отправлено 27 Апрель 2012 - 15:17
#2
Отправлено 24 Май 2012 - 05:24
Я реализовал это следующим образом:
Создал таблицу "Сотрудник-Филиал" с полями (ID-сотрудника и ID-Филиала)
В таблице и в которой надо разграничить доступ добавил поле "Филиал".
И после этого можно создать фильтр:
Все записи (доступные этому пользователю): `Филиал` in (select f1688 from cb_data141 a join cb_data46 b on a.f1687=b.id where b.f1489='{current}')
Клиенты в стадии проинформирован (доступные этому пользователю)`Филиал` in (select f1688 from cb_data141 a join cb_data46 b on a.f1687=b.id where b.f1489='{current}') and `Стадия`='Проинформирован'
и т.д.
cb_data141 - Таблица "Сотрудник-Филиал"
cb_data46 - Таблица "Сотрудники"
f1688 - Поле ID-Филиала
f1489 - ID пользователя
Наличие таблицы "Сотрудник-Филиал" дает возможность назначить одному пользователю/сотруднику назначать несколько Филиалов (Директор, Гл. бухгалтер и т.д.).
Создал таблицу "Сотрудник-Филиал" с полями (ID-сотрудника и ID-Филиала)
В таблице и в которой надо разграничить доступ добавил поле "Филиал".
И после этого можно создать фильтр:
Все записи (доступные этому пользователю): `Филиал` in (select f1688 from cb_data141 a join cb_data46 b on a.f1687=b.id where b.f1489='{current}')
Клиенты в стадии проинформирован (доступные этому пользователю)`Филиал` in (select f1688 from cb_data141 a join cb_data46 b on a.f1687=b.id where b.f1489='{current}') and `Стадия`='Проинформирован'
и т.д.
cb_data141 - Таблица "Сотрудник-Филиал"
cb_data46 - Таблица "Сотрудники"
f1688 - Поле ID-Филиала
f1489 - ID пользователя
Наличие таблицы "Сотрудник-Филиал" дает возможность назначить одному пользователю/сотруднику назначать несколько Филиалов (Директор, Гл. бухгалтер и т.д.).
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных