Система 1С - #1 > ПОЛЬЗОВАТЕЛИ.АВТОРИЗАЦИЯ
Собственно начинаем.
Во первых важно понять что это за система и что она будет делать. Сразу скажу это будет не бухучет/торговля/кадры в привычном понимании и назначении продукта 1С. Многие спросят меня: "Ну и зачем нам 1С в таком случае?". Глобально не зачем, если вы умеете в более фундаментальные языки программирования. Но если вы хотите автоматизировать что-то дешево, быстро и сердито то это как раз про 1С. Это может быть касса, парковки, библиотека или какая-то система которая консолидирует данные и проводит аналитику. То бишь любая система не по прямому своему назначению в идеологии фирмы 1С и ее конфигураций и отраслевых решений. Моя система должна научить не тривиальным вещам:
Само собой авторизация и работа с пользователями и ролями. Управление сеансами.
Работа с электронной почтой. Получение/чтение/отправка (этим на самом деле никого не удивишь, но в данном кейсе мы будем отправлять пользователям их "аутентификационные" данные на почту при запросе на выдачу доступов). Также будем делать унифицированный фидбек на почту разработчика (ответственного) в случае исключений. Это удобно, если ты хочешь получить больше информации от пользователя и сразу, а не лезть в ЖР (Журнал регистрации) для поиска нужного сообщения, тем более если твой лог нон-стоп пишет + много пользователей. Хотелось бы еще попробовать реализовать интеграцию с Jira, но не в этот раз (это очень большая тема).
Работа с внешними данными: xls, csv, txt и прочее. Правильная и грамотная конвертация данных туда и обратно. Этот пункт важен в понимании архитектуры клиент-сервер. Тут же и работа с файловой системой.
Универсализация фоновых и регламентных заданий. Как это работает? Как сделать интерфейс асинхронным? Как сделать интерфейс юзабилити с помощью фоновых заданий.
Работа с API. Как общаться, получать данные и проходить авторизацию.
Думаю этого пока достаточно.
Из вышесказанного следует, что наша система не использует БСП (Библиотека стандартных подсистем, про нее я коснусь более подробно далее). Она нами пишется с нуля и мы вникаем в каждый этап, а не используем то что предлагают другие.
ПОЛЬЗОВАТЕЛИ. АВТОРИЗАЦИЯ
Во первых хочу для начала объяснить с чем мы имеем дело:
Из коробки при разворачивании системы 1С и публикации (так это называется) базы платформа создает файл/ы (в случае файловой реализации), или таблицы (в случае серверной). Это означает что объекты и метаданные предопределены и есть статические глобальные методы и способы взаимодействия разработчика и объектов метаданных. Звучит страшно, но до первого написания кода, поверьте мне.
Т.е. при разворачивании ИБ (информационная база) разработчик может работать с метаданными в коде и реализовывать логику и интерфейс. Конкретно здесь нас интересует предопределенный тип МенеджерПользователейИнформационнойБазы. Его мы и будем использовать в данном разделе и все будет крутиться вокруг этого типа.
Платформа 1С предлагаем нам два способа работы с пользователями и их настройками:
Способ непосредственно из конфигуратора (IDE в понимании других языков, образно). Т.е. мы открыли конфигуратор нашей ИБ и там в интерфейсе можем работать с пользователями. Не рекомендую данный способ от слова совсем. Он ограничен и по факту не нужен, хоть и есть. Иногда полезен, когда именно расскажу далее. Выглядит это примерно так:
Интерфейс конфигуратора где есть настройка пользователей
2. Способ когда мы пишем логику общения с объектом ПользователиИнформационнойБазы который доступен в глобальном контексте приложения (примечание 1). Мы описываем логику и делаем свой пользовательский интерфейс для настройки пользователей, так и настройки конкретного пользователя. С этим мы и будем работать.
Примерно схематично я нарисовал как это (в моем понимании) выглядит визуально
А вот способ которого мы будем придерживаться и примерно это и будет реализовываться
Пока выглядит очень стремно, но в процессе написания кода все станет понятно. Я не раз буду говорить про разницу между метаданными и интерфейсом.
Думаю пока достаточно.
Глобальный контекст - это то к чему мы можем получить доступ из программного кода. Это объекты метаданных, предопределенных статических методов. Причем они по разному доступны в зависимости где выполняется код, на клиенте или на сервере. Уровень доступа определяет платформа. Все это мы поймем когда будем писать код, а пока ниже картинка как это выглядит
Доступ к объектам/методам глобального контекста
Всем мир!