Как ограничивал видимость клиентов менеджерам в 1С:УТ 11.5, но всё равно дал им искать по всей базе
В общем, недавно прилетел мне довольно интересный (и на первый взгляд противоречивый) заказ на 1С:Управление торговлей 11.5.
Задача: сделать так, чтобы каждый менеджер видел только "своих" клиентов и связанные с ними документы. Всё по классике: разграничение прав доступа, ничего нового...
Но! Тут же прилетает требование номер два: менеджеры занимаются холодными звонками и должны иметь возможность проверить — а нет ли такого клиента уже в базе, и если есть, то за кем он закреплен.
И тут начинается магия 1С.
Типовой механизм прав в 1С работает так, что пользователь вообще не видит чужих клиентов: ни в справочнике, ни в отчетах, ни в документах — даже если где-то есть ссылка на контрагента, она "битая" и не открывается.
То есть хочешь разграничение? Получай: ищи по базе сколько хочешь, всё равно ничего не найдешь кроме своих :)
Что делать?
С одной стороны — надо ограничить доступ, с другой — дать возможность искать по всей базе, но чтобы в ответ не вываливалась лишняя информация.
Как выкрутилися
Сделал отдельный регистр сведений — туда пишется только нужная информация о каждом клиенте (наименование, ИНН, КПП, ФИО ответственного). Все поля — строки, чтобы не споткнуться о ограничения прав на уровне ссылок.
Настроил подписки на события:
При создании/изменении контрагента — запись/обновление в регистре.
При удалении (пометка на удаление) — запись из регистра тоже удаляется.
Автоматизировал обновление: когда меняется партнер — автоматически обновляется связанный контрагент, чтобы в регистре всегда были актуальные данные.
Пилил простую обработку для поиска: вводишь часть названия или ИНН — находишь клиента, и сразу видно: есть такой, или нет, и кто сейчас его "куратор".
Итог
В результате — все довольны:
Менеджеры не видят ничего лишнего, только своих клиентов и документы.
Но если что — могут быстро пробить по базе, есть ли такой клиент, и если есть — кто с ним уже работает.
Для тех, кто любит 1С: да, с типовыми правами такое не сделать, пришлось "изобретать велосипед", но вышло удобно и безопасно.
P.S.
Если интересно, могу выложить детали реализации или куски кода — спрашивайте в комментах!
И вообще, если есть свои лайфхаки по разграничению доступа в 1С, делитесь, с радостью почитаю :)