Как в 1С:Розница 2.0 разрешить кассиру выполнять синхронизацию РИБ без прав администратора?

Программист 1С v8.3 (Управляемые формы) 1С:Розница Управленческий учет Торговля и дистрибуция
← На главную

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

Анализ проблемы: почему не помогает обычный профиль доступа

Многие технические специалисты начинают с создания нового профиля групп доступа, отмечая в нем все роли, связанные с обменом данными, такие как ВыполнениеСинхронизацииДанных или ЧтениеУзловИнформационныхБаз. Проблема заключается в том, что интерфейсная часть (командный интерфейс) раздела администрирования в типовых конфигурациях на базе БСП скрыта на уровне программного кода или настроек метаданных для всех, кроме администраторов. Даже имея права на сами объекты, пользователь просто не видит кнопку вызова формы обмена. Рассмотрим наиболее эффективные способы обхода этого ограничения.

Способ №1: Использование механизма Избранного и прямой ссылки

Этот метод является наиболее безопасным и не требует внесения изменений в конфигурацию. Мы воспользуемся возможностью платформы 1С:Предприятие 8.3 открывать формы по навигационным ссылкам. Проанализируем последовательность действий:

  1. Подготовка роли. Убедимся, что у пользователя (например, Кассира) в профиле групп доступа включена роль Выполнение синхронизации данных. Без этой роли система выдаст ошибку нарушения прав при попытке запуска процесса.
  2. Получение ссылки. Зайдем в программу под учетной записью администратора. Перейдем в раздел настроек синхронизации данных. Нажмем кнопку Сервис и настройки (пиктограмма в виде шестеренки или стрелки вниз в заголовке окна), выберем пункт Получить ссылку.... Ссылка будет выглядеть примерно так: e1cib/app/ОбщаяФорма.СинхронизацияДанных.
  3. Передача ссылки пользователю. Копируем эту ссылку. Теперь нам нужно сделать так, чтобы она появилась в интерфейсе кассира.
  4. Настройка у кассира. Зайдем в базу под пользователем-кассиром. В окне поиска (находится в верхней части экрана) вставим скопированную ссылку и нажмем Enter.
  5. Закрепление в интерфейсе. Откроется форма синхронизации. Чтобы пользователю не пришлось каждый раз вводить ссылку, нажмем на значок звездочки в заголовке окна формы. Теперь команда обмена навсегда сохранится в разделе Избранное (меню под значком звезды рядом с именем пользователя).

Способ №2: Временное делегирование прав для настройки

Если нет возможности передавать ссылки, можно воспользоваться "административным маневром". Этот способ часто используется системными администраторами при массовой настройке рабочих мест.

  1. Временно включим пользователя в группу доступа Администраторы.
  2. Зайдем в систему под именем этого пользователя.
  3. Перейдем в раздел администрирования, откроем форму настроек синхронизации данных и добавим ее в Избранное.
  4. Выйдем из программы и под учетной записью администратора исключим пользователя из группы Администраторы, оставив только необходимые права для работы (например, профиль Кассира и профиль с ролью на выполнение синхронизации).
  5. При следующем входе у кассира останется рабочая ссылка в Избранном, которая позволит запускать обмен, несмотря на отсутствие доступа к общему разделу администрирования.

Способ №3: Настройка сценариев обмена данными

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

Разберем этот метод подробнее:

Администратор может заранее создать сценарий обмена, в котором прописаны конкретные узлы и настройки. После этого создается группа доступа с профилем, содержащим права на Обмен данными. Основная сложность — вывести форму запуска сценария. Как и в первом способе, мы можем использовать прямую ссылку на форму сценария, добавив ее в Избранное кассиру. Это позволит пользователю одной кнопкой инициировать сложный процесс выгрузки и загрузки без возможности случайно изменить настройки самой синхронизации.

Важные технические нюансы при настройке прав

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

  1. Доступ к Журналу регистрации. Процесс обмена активно записывает данные о результатах (ошибки, количество выгруженных объектов) в журнал регистрации. Если у пользователя нет роли Просмотр журнала регистрации, система может заблокировать выполнение фонового задания обмена или выдать ошибку доступа.
  2. Ограничение на уровне записей (RLS). Если в вашей базе настроен RLS по магазинам, убедитесь, что кассир имеет права на чтение всех объектов, которые должны уйти в обмен. В противном случае может возникнуть ситуация "частичного обмена", когда данные, к которым у кассира нет доступа, просто не попадут в пакет выгрузки.
  3. Состояния обмена. Полезно добавить пользователю права на чтение регистра сведений Состояния обмена данными. Это позволит ему видеть на рабочем столе информацию о том, когда прошел последний успешный обмен, не заходя в глубокие настройки.

Автоматизация вместо ручного запуска

Рассмотрим альтернативный подход. Зачем заставлять кассира нажимать кнопки, если можно автоматизировать процесс? В 1С:Розница 2.0 рекомендуется настраивать Регламентные задания. Если база работает в клиент-серверном варианте, обмен будет идти сам по расписанию под учетной записью сервера. Если же база файловая, можно настроить автоматический запуск обмена при старте или завершении работы программы. Это полностью снимет вопрос прав доступа к интерфейсу синхронизации.

Для реализации автоматического обмена при выходе можно использовать следующий подход в коде (если вы готовы к небольшому конфигурированию):


// В модуле управляемого приложения
Процедура ПередЗавершениемРаботыСистемы(Отказ)
    // Код для инициации фонового обмена данными
    // с использованием стандартных процедур БСП
    ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляВсехНастроек(Истина);
КонецПроцедуры

Выводы

Мы рассмотрели несколько путей решения проблемы доступа к синхронизации. Самым простым и эффективным для "типовой" эксплуатации без программирования является комбинация специального профиля доступа и прямой ссылки в Избранном. Это сохраняет целостность системы безопасности и предоставляет пользователю удобный инструмент для выполнения его обязанностей. Помните, что безопасность информационной системы строится на принципе минимально необходимых полномочий, и данные методы полностью соответствуют этому принципу.

← На главную