Удаленное администрирование пользователей распределенной информационной базы «1С: Розница»

Вашему вниманию предлагается текст технического проекта ИС «1С: Розница», он описывает создание механизмов администрирования пользователей распределенной информационной базы.

Волею судьбы я стал автором и разработчиком информационной системы автоматизации розничной торговли «1С: Розница». Система получила широкое распространение в России и странах ближнего зарубежья. Очень многие специалисты вовлечены в процесс интеграции «1С: Розница» в корпоративные системы розничных предприятий. В помощь этим уважаемым людям я решил выложить тексты технических проектов, автором которых являюсь. Эти тексты позволят понять «внутренность» ИС, причины и способы реализации той или иной функциональности. Для тех, кто не работает с «1С: Розница» (или с платформой «1С: Предприятие») — эти тексты могут дать представление о том, как разрабатываются и пишутся технические проекты.

Почему возникла такая необходимость?

Я общаюсь со многими внедренческими организациями или отдельными командами интеграторов — их можно, условно, разделить на 3 большие группы:

  1. Те, кто полагают, что «1С: Розница 8» достаточна проста и не имеет никакого функционала, кроме пробития чеков. В этом случае интеграторы начинают дописывать в ИС тот функционал, который уже реализован.
  2. Те, кто хорошо знаком с богатым функционалом ИС, но хочет понять причины и тонкости выбранных способов реализации для развития собственной системы. К этой группе относятся, в основном, внедренческие организации. Мне приходится часто отвечать на, подобного рода, вопросы.
  3. Те, кто превосходно знает начинку «1С: Розница 8». К этой группе относятся те интеграторы, с которыми я плотно контактирую по вопросам внедрения.

В основном для тех, кто относится к первой и второй группе выложен текст технического проекта.

Цель проекта

Предоставление возможности администрирования удаленных пользователей распределенной информационной базы из главного узла ИБ.

Требования по проекту

  1. Должна быть реализована возможность управления учетными записями пользователей ИБ, находящимися в удаленных узлах РИБ (распределенной информационной базы) через справочник «Пользователи». «Пользователи» и учетные записи ИБ «связываются» по имени.
  2. Справочник пользователей конфигурации должен мигрировать по всем узлам распределенной ИБ. Учетные записи пользователей ИБ должны обрабатываться только в тех узлах, к которым эти пользователи принадлежат.
  3. В том случае, если пользователь имеет возможность работать в нескольких Магазинах, то для каждого Магазина в узле(ах) должна быть реализована возможность хранить собственные настройки пользователя.
  4. Пользователи, не обладающие административными правами редактирования пользователей:
    • имеют возможность задавать настройки только для «своего» элемента в справочнике пользователей;
    • не могут редактировать перечень магазинов доступных для работы;
    • не могут редактировать настройки учетной записи ИБ своего пользователя.
  5. При запуске, система должна определить настройки пользователя, в зависимости от магазина в котором пользователь работает.
    • Магазин определяется на основании:
      • назначенных магазинов пользователю
      • магазинов текущего узла РИБ
      • основного магазина пользователя.
    • В случае, если Магазин определить невозможно, то пользователю предоставляется выбор магазина. Выбор ограничен магазинами узла.
    • Сменить текущий магазин пользователь может в любой момент работы.
    • Если пользователь не «зарегистрирован» для работы в узле, то система прекращает работу.
  6. Система не должна хранить пароль пользователя. Можно сделать так, чтобы при первом входе пользователя, если его пароль не установлен, а минимальная длина пароля не нулевая, система требовала у пользователя задать пароль.
  7. Администрирование пользователей (назначение ролей и т.п.) производится в режиме «Предприятие» администратором только в главном узле. Настройки учетных записей пользователей задаются для каждого узла в отдельности.

Описание концепции

Каждый пользователь в конфигурации «1С: Розница» может работать с одной или несколькими торговыми точками; каждый узел распределенной ИБ может содержать информацию о работе одной или нескольких торговых точек.

Наша задача – обеспечить возможность администрирования учетных записей пользователей, находящихся в удаленных узлах распределенной ИБ. Предполагается, что пользователь с правами администратора в подчиненном узле может вносить изменения в настройки учетных записей и настройки пользователей только своего узла, администратор главного узла может настраивать учетные записи пользователей и их настройки относительно магазина всех узлов.

Разработка функционала настроек учетных записей пользователей

  1. Добавить возможность создавать, удалять пользователей ИБ, настраивать их параметры из справочника «Пользователи».
  2. Дать возможность администратору главного узла в справочнике пользователи настраивать учетные записи ИБ для нескольких узлов индивидуально.
  3. Дать возможность администратору подчиненного узла настраивать учетные записи пользователей ИБ только своего узла.
  4. Настройки учетных записей хранятся в регистре сведений. Измерение: «Узел Плана Обмена» (акутально только для главного узла), «Пользователь», Ресурс: «Настройки пользователей».
  5. Разработать алгоритм, по которому изменения параметров пользователей ИБ (а также их создание и удаление) будут применяться только в тех узлах ИБ, в которых данный пользователь может работать.

Разработка функционала настроек пользователей относительно магазина

  1. Добавить в конфигурацию параметр сеанса «Текущий магазин».
  2. Элементам справочника «Пользователи» добавить табличную часть «Доступные магазины», которая будет определять, в каких торговых точках может работать данный пользователь. Осуществить возможность выбора основного магазина пользователя для автоматического заполнения соответствующего параметра сеанса. Осуществить возможность ручного выбора текущего магазина из списка доступных.
  3. Добавить измерение «Магазин» в регистр сведений «Настройки пользователей», для того, чтобы настройки пользователей могли храниться в разрезе торговых точек. Предусмотреть возможность копирования настроек из одного магазина в другой.

Таким образом, мы получим механизм, обеспечивающий полную миграцию справочника «Пользователи» (необходимый, в частности, для корректного заполнения реквизита «Ответственный» во всех документах во всех узлах ИБ), а также создание, редактирование и удаление пользователей ИБ только в необходимых узлах.

Роли и сценарии работы пользователей

Роль «Администратор» (в главном узле)

Данный пользователь может просматривать и изменять любые реквизиты всех элементов справочника «Пользователи». Может добавлять новых пользователей в справочник, при этом в нужных узлах ИБ создаются соответствующие учетные записи пользователей ИБ.

Роль «Администратор» (в подчиненном узле)

Данный пользователь может просматривать и изменять любые реквизиты всех элементов справочника «Пользователи» своего узла. Может редактировать пользователей в справочнике «Пользователей» своего узла ИБ.

Роль «Пользователь»

Данный пользователь не может просматривать параметры пользователей ИБ (включая собственные). Не может изменять список торговых точек, в которых он может работать. Может изменять только свои личные настройки в разрезе доступных магазинов.

Реализуемая функциональность

  1. Администратор главного узла может работать с учетными записями пользователей ИБ, находящимися в удаленных узлах распределенной ИБ:
    • Создавать или удалять учетные записи;
    • Иpменять пароль;
    • Управлять возможностью пользователя изменять пароль;
    • Отображать в списке пользователей;
    • Изменять способ аутентификации;
    • Изменять основной язык и интерфейс;
    • Изменять список ролей пользователя.
  2. Учетная запись пользователя ИБ создается только в определенных узлах ИБ.
  3. Настройки пользователя задаются в разрезе магазина.

Структура данных, алгоритмы обработки данных

Описание объектов метаданных конфигурации
Метаданные Тип Описание
Регистр сведений «Настройки Учетных Записей Пользователей»   В данном регистре в главном узле РИБ хранятся настройки пользователей для каждого узла. При выгрузке данных в подчиненный узел, настройки учетной записи для подчиненного узла берутся из этого регистра.
— Измерение «Пользователь» СправочникСсылка.Пользователи  
— Измерение «УзелПланаОбмена» ПланОбменаСсылка.ПоМагазину  
— Ресурс «ХранилищеПараметровПользователя» ХранилищеЗначения Представляет структуру, соответствующую настройкам учетной записи пользователя ИБ:

  • Аутентификация cтандартная
  • Пароль установлен
  • Запрещено изменять пароль
  • Аутентификация ОС
  • Пользователь ОС
  • Показывать в списке выбора
  • Основной интерфейс
  • Язык
  • Список ролей
Регистр сведений «Настройки Пользователей»   Настройки пользователя хранятся относительно магазина.
— Измерение «Пользователь» СправочникСсылка.Пользователи  
— Измерение «Магазин» СправочникСсылка.Магазины  
— Ресурс «Значение» ПВХ «Настройки пользователей»  
Параметр сеанса «Текущий магазин» СправочникСсылка.Магазины Хранит магазин, в котором работает пользователь, по этому магазину отбираются настройки по умолчанию.
Справочник «Пользователи»   Добавляется табличная часть «Доступные магазины», в которой хранится список магазинов, с которыми пользователь имеет право работать.
— Табличная часть «Доступные магазины» Табличная часть  
— — Реквизит «Магазин» СправочникСсылка.Магазины  

Регистр сведений настроек учетных записей пользователей содержит реквизит «ХранилищеПараметровПользователя» (тип: ХранилищеЗначения), в котором хранится структура, определяющая параметры пользователя ИБ. При работе процедуры «ПриЗаписи» модуля регистра выполняется поиск соответствующего пользователя ИБ (при отсутствии такового происходит создание нового пользователя ИБ) и установка его параметров.

Алгоритмы обработки настроек пользователей

  • Настройки пользователей задаются относительно магазинов.
  • Список магазинов – Табличная часть «Доступные магазины»
  • Сами настройки – регистр сведений «Настройки пользователей» с отбором по измерению «Магазин».

Миграция данных по узлам РИБ:

Регистр сведений «Настройки пользователей» мигрирует по узлам РИБ в разрезе магазинов (измерение «Магазин» регистра сведений определяет узел миграции настроек пользователей).

Применение настроек пользователя

Алгоритмы применения настроек пользователя при аутентификации изображены на диаграмме видов деятельности «Аутентификация пользователя в системе».

Алгоритмы обработки настройки учетных записей пользователей

  • Пользователь ИБ и элемент справочника «связываются» по имени пользователя (стандартное поведение всех конфигураций).
  • Реквизиты данной закладки «достаются» из регистра сведений «Настройки учетных записей пользователей» (кроме реквизитов пользователя текущего узла, т.к. они достаются из пользователей ИБ).
  • При изменении реквизитов данной закладки — все изменения записываются в регистр сведений «Настройки учетных записей пользователей».
  • Список узлов информационной базы на данной закладке (на картинке не изображен) доступен только администратору главного узла информационной базы.
Запись регистра сведений «Настройки учетных записей пользователей»

Регистр сведений «Настройки учетных записей пользователей», при записи, анализирует, является ли текущий узел главным узлом базы данных. Если да, то записывает настройки пользователя в регистр для всех перечисленных узлов (и, в случае если данный пользователь имеет настройки для главного узла базы данных, принимает данные настройки для учетной записи пользователя главного узла). Если текущий узел – подчиненный узел базы данных, то система записывает настройки данного пользователя в регистр сведений «Настройки учетных записей пользователей», безотносительно узла информационной базы (и принимает изменения для пользователя информационной базы).

Обмен данными и регистрация изменений по регистру «Настройки учетных записей пользователей»
  1. Изменения регистра сведений «Настройки учетных записей пользователей» автоматически регистрируются для обмена РИБ.
  2. При регистрации изменений набора записей регистра «Учетные записи пользователей» в подчиненном узле, регистрация производится для главного узла РИБ, который установлен в отборе по измерению «Узел плана обмена».
  3. При приеме из подчиненного узла главный узел записывает набор записей регистра «Настройки учетных записей пользователей» с установленным отбором по узлу отправителю (прописывает в измерение «Узел отправитель»).
  4. При регистрации изменений набора записей в главном узле, регистрация производится для узла, который установлен в отборе по измерению «Узел плана обмена» регистра «Учетные записи пользователей.
  5. При приеме данных в подчиненном узле, «приехавший» набор записей записывается безотносительно узла РИБ.
Применение настроек для пользователей узлов РИБ
  1. Изменение настроек производится в форме элемента справочника «Пользователи» в главном узле. Фактически осуществляется при записи набора записей регистра сведений «Настройки учетных записей пользователей», с установленным отбором по главному узлу и текущему пользователю.
  2. Изменение настроек производится в конфигураторе в главном узле: Синхронизация данных регистра и данных о пользователях ИБ происходит перед отправкой сообщения обмена, анализируется расхождение состава набора записей регистра сведений «Настройки учетных записей пользователей» с установленным отбором по главному узлу и элементу справочника «Пользователи». Если расхождение имеет место быть, то регистр сведений переписывается по установленному отбору новыми настройками (принятыми в конфигураторе).
  3. Изменение настроек производится в форме элемента справочника «Пользователи» в подчиненном узле: Фактически осуществляется при записи набора записей регистра сведений «Настройки учетных записей пользователей», с установленным отбором безотносительно узла и текущему пользователю.
  4. Изменение настроек производится в конфигураторе в подчиненном узле: Синхронизация данных регистра и данных о пользователях ИБ происходит перед отправкой сообщения обмена, анализируется расхождение состава набора записей регистра сведений «Настройки учетных записей пользователей» с установленным отбором по элементу справочника «Пользователи». Если расхождение имеет место быть, то регистр сведений переписывается по установленному отбору новыми настройками (принятыми в конфигураторе).

На диаграмме видов деятельности «Удаленное администрирование учетных записей пользователей» представлен весь процесс работы с учетными записями.

Взаимодействие с другими подсистемами, механизмами

Данный механизм взаимодействует с механизмом установки настроек пользователей, в данном случае расширяет его. Данный механизм взаимодействует с механизмом обмена данными РИБ, в части наложения ограничений на миграцию регистра сведений «Настройки Пользователей» по измерению «Магазин», и добавлению обработки предопределенных событий при загрузке данных обмена.

Ограничения, следующие из проектных решений

  • Настройки пользователя задаются только в разрезе магазинов, поэтому нет возможности корректно использовать настройки, общие для всех магазинов.
  • Пользователю разрешается работать в системе, только в том случае если, администратор разрешил ему работу в узле с данным магазином.
  • Пароль пользователя нельзя назначить централизованно, это связано с обеспечением безопасности системы, но есть возможность централизованно удалить пароль, тогда пользователю придется назначить пароль при входе в систему.
  • Обновление регистра сведений «Настройки учетных записей пользователей» актуальными настройками пользователей ИБ перед обменом данными занимает определенные ресурсы. Доля занимаемых ресурсов зависит от: — количества измененных объектов; — количества измененных объектов ИБ. Нагрузочное тестирование показало приемлемую производительность при обновлении регистра.

Переход с предыдущих релизов и обновление информационной базы

Обновление информационной базы производится:

  • Бывшие настройки пользователей безотносительно магазина (т.к. не было измерения в регистре) устанавливаются для всех магазинов.
  • Заполняется регистр сведений «Настройки Учетных Записей» в каждом узле из настроек УЗ пользователей ИБ.

Порядок тестирования

  • Создание в тестовых базах пользователей
  • Выполнение обмена данными
  • Проверка изменения пользователей в дочерних узлах
  • Редактирование учетных записей пользователей в дочерних узлах
  • Проверка корректного «приема» в «главный узел»
  • Проверка корректности установки настроек пользователей для магазинов

Детализированное описание выполняемых действий

Необходимо создать 3 «пустых» базы:

  1. ИБ главного узла — ГУ
  2. ИБ периферийного узла — П1
  3. ИБ периферийного узла — П2

В ГУ, в режиме конфигуратора, создается пользователь «Администратор» с административными правами.

  • Роли «Менеджер склада» добавляются административные права (для возможности изменения настроек собственного пользователя).

Выполняется запуск ГУ в режиме предприятия, пользователь: «Администратор».

  • В справочнике «Магазины» администратор создает 3 магазина («М1», «М2», «М3»).
  • В плане обмена «По Магазину» администратор узлу П1 назначает магазины М1 и М2, узлу П2 магазин М3.
  • В справочнике «Пользователи» администратор создает 3 (троих) пользователей ИС (Пл1, Пл2, Пл3).
    • Пл1 разрешается работа в магазинах М1 и М2 (магазин М1 устанавливается в качестве основного магазина)
    • Пл2 разрешается работа в магазине М2
    • Пл3 – в магазине М1
    • Создаются пользовательские настройки «по умолчанию» всем пользователям для всех магазинов.
  • В справочнике «Пользователи», на вкладке «Пользователь ИБ»:
    • Пл1 разрешается работа в узле П1 (роль «Администратор», язык «русский», пароль не заполнен)
    • Пл2 разрешается работа в узле П2 (роль «Менеджер склада», язык «русский», пароль не заполнен)
    • Пл3 разрешается работа в узле П1 (роль «Менеджер склада», язык «русский», пароль не заполнен)
  • Выполняется обмен данными с узлами П1 и П2 информационной системы.
  • Выполняется запуск П1, выполняется прием изменений из ГУ, закрывается ИБ.
  • Выполняется запуск П2, выполняется прием изменений из ГУ, закрывается ИБ.
  • Выполняется запуск П1 под пользователем Пл1 (вход осуществляется без пароля), система просит установить пароль пользователя, Пл1 устанавливает пароль.
    • Пл1 открывает список справочника «Пользователи», должен увидеть 2 пользователей «Пл1» и «Пл3», Пл1 имеет доступ к настройкам пользователя ИБ для Пл1 и Пл3.
    • Пл1 имеет возможность редактировать настройки «по умолчанию» для пользователей Пл1 и Пл3 для всех доступных пользователям магазинов.
  • Выполняется запуск П1 под пользователем Пл3 (вход осуществляется без пароля), система просит установить пароль пользователя, Пл3 устанавливает пароль.
    • Пл3 открывает список справочника «Пользователи», должен увидеть 2 пользователей «Пл1» и «Пл3», Пл3 имеет доступ к настройкам только пользователя ИБ Пл3.
    • Пл3 имеет возможность редактировать настройки «по умолчанию» для пользователя Пл3 для всех доступных пользователю магазинов.

Далее идет менее детализированное описание выполняемых действий

  • Пользователь Пл2 заходит в узел П2. Изменять настройки «по умолчанию» и настройки пользователя ИБ ему разрешено только для своего пользователя.
  • Пользователь изменяет свои настройки пользователя ИБ, выполняет обмен с ГУ – в ГУ настройки пользователя Пл2 для узла П2 актуализируются.
  • В ГУ удаляют возможность работы Пл2 в П2, выполняют обмен – пользователь Пл2 для узла П2 не зарегистрирован в ИБ.
  • Пл1 заходит в конфигуратор П1, удаляет пользователя Пл3, в режиме предприятие — у Пл3 настройки ИБ для Пл3 не отображаются, администратор (Пл1) может вновь создать Пл3 в режиме Предприятия, но он этого не делает, а выполняет обмен с ГУ – в ГУ настройки для Пл3 актуализируются (он становится не зарегистрированным для узла Пл1).

Александр Волков, 2007

15 Comments

  1. maxx

    Хорошое добротное описание. Спасибо!

    Розница — это один из немногих продуктов 1С, которые мне нравятся (внедрять).

    Александр, помню Вы вроде бы ушли в проект, которые выпускал POS с Розницей установленной. Проект этот ещё живёт, как там дела?

    Reply
  2. aavolkoff

    Спасибо, Максим.

    Это текст одного из первых технических проектов по Рознице. Я планирую все проекты по РТ (автором, которых являюсь) выложить в свободный доступ.

    Проект POS-терминалов с предустановленной РТ живет своей жизнью, но, к нему, сейчас, я имею очень опосредованное отношение.

    Reply
  3. Новенький_2209

    Спасибо. Возьму за образец, как технический проект.

    Reply
  4. Graf71

    Спасибо за очень хороший материал по администрированию пользователей в 1С Розница. Очень часто внедряя какое либо решение фирмы 1С хочется разобраться почему именно так было решено сделать что-либо. А из этой статьи очень многие вопросы котрые у меня были разрешились. Еще раз СПАСИБО автору.

    Reply
  5. marat_n

    Присоединюсь ,отличная и полезная статья. Спасибо.

    Reply
  6. anchovy

    Спасибо, действительно познавательно как документация к 1С Розница.

    В статье написано, что вы создаете механизм по передаче пользователей ИБ в узлы магазина, а он в рознице уже есть.

    Чем работа вашего механизма отличается от типового в 1С Розница?

    Reply
  7. Гость

    В статье также написано, что это и есть текст проекта создания механизма, который есть в рознице.

    Reply
  8. anchovy

    Тогда, пользуясь случаем, хочу задать вопрос автору.

    Используется план обмена «По кассе», план обмена «По магазину» не используется.

    А в вашем алгоритме в узлы плана обмена «По магазину» пользователи ИБ передаются, а узлы «По кассе» пользователи ИБ не передаются. И данная логика применяется только к пользователям с административными правами. Как быть в такой ситуации, когда пользователи на кассе нужны?

    Может быть это как то настраивается? Сам подобных настроек не нашел, пришлось допиливать (видимо я принадлежу к первой группе разработчиков ))) ).

    Reply
  9. maxis33

    Спасибо! Побольше бы таких описания про типовые конфигурации!

    Reply
  10. martian

    Вопрос по 1С Розница 1.0.18, может в курсе…

    В центральном узле РИБ созданы пользователи ИБ для центра и для каждого из узлов.

    При создании новой переферийной базы я, проставляя им права, заношу в пользователей ИБ этого узла. Присваиваю пароль.

    Затем настраиваю обмен между узлами.

    После обмена пароль у пользователей в переферийной ИБ пустые.

    Назначаю снова пароли.

    Снова обмен в обе стороны — снова пустые пароли.

    Как будто центральная база все время затирает пароли пользователей ИБ для переферийной базы…

    Как побороть?

    Reply
  11. aavolkoff

    (10)

    В тексте проекта сказано про ограничения:

    Пароль пользователя нельзя назначить централизованно, это связано с обеспечением безопасности системы, но есть возможность централизованно удалить пароль, тогда пользователю придется назначить пароль при входе в систему.

    Также в тексте проекта описана процедура тестирования, которая рассматривает случай установки пароля.

    В ходе работы над проектом было принято решение, что пользователь, при первом входе в систему, должен установить свой пароль самостоятельно. По обмену данными пароль не передается, передается лишь признак необходимости его удаления из системы для того, чтобы пользователь ввёл новый пароль.

    Reply
  12. ray_kh89

    Вопрос по 1С Розница 1.0.8.1, может в курсе…

    В центральном узле РИБ созданы пользователи ИБ для центра и для каждого из узлов.

    При создании новой переферийной базы я, проставляя им права, заношу в пользователей ИБ этого узла.

    НЕ ПРИСВАИВАЮ ПАРОЛЬ

    Затем настраиваю обмен между узлами.

    После обмена пароль у пользователей в переферийной ИБ пустые.

    При первом заходи в 1с, у него не спрашивает пароль, а просто заходит в 1с без пароля.

    Как сделать что бы при первом заходи в 1с пользователь мог сам себе задать свой пароль ?

    Reply
  13. anchovy

    (12)

    В 1С нет возможности передавать пароли между узлами. Это ограничение сказалось в частности на качестве решения, описанного в данной статье. Пользователь ИБ в любом случае не мигрирует, а создается программно при загрузке данных в подчиненный узел РИБ. При этом пароль его неизвестен. Выход только один, при каждом запуске программы в режиме предприятия проверять установлен ли у пользователя пароль или нет. Могу порекомендовать посмотреть как работает данный механизм в конфигурации УТ11.4. Пользователи настраиваются в режиме предприятия. Обратите внимание на галочку «Потребовать установку пароля при входе».

    Reply
  14. ray_kh89

    (13)

    Спасибо большое все работает! надо было галку поставить «Потребовать установку пароля при входе»

    Reply
  15. Светлый ум

    Взял на вооружение +1

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *