Как настроить синхронизацию данных в РИБ под правами кассира в 1С:Управление торговлей 11.4?

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

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

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

Выясняем причину: почему кассир не может запустить обмен

Проанализируем ситуацию с точки зрения архитектуры 1С. Для выполнения синхронизации данных системе требуется доступ к чтению и записи таблиц регистрации изменений, а также к планам обмена. В типовом профиле Кассир эти права отсутствуют. Более того, при интерактивном запуске обмена система проверяет наличие прав на использование внешних ресурсов и доступ к файловой системе или COM-соединению, что также закрыто для обычного пользователя.

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

Решение №1: Настройка регламентного задания под учетной записью администратора

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

Рассмотрим по шагам, как это реализовать:

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

Теперь, даже если в программе работает кассир, фоновый процесс будет запускаться системой под правами администратора. Кассир этого даже не заметит, а данные будут актуализироваться автоматически.

Решение №2: Расширение прав доступа кассира (ручной запуск)

Если специфика работы требует, чтобы кассир мог сам инициировать обмен (например, перед закрытием смены), нам необходимо создать специальный Профиль групп доступа. Обычного добавления ролей в типовой профиль кассира лучше избегать, чтобы сохранить конфигурацию на поддержке и не нарушить типовую логику.

Проанализируем, какие роли критически важны для синхронизации:

После создания такого профиля и назначения его пользователю-кассиру, у него появится техническая возможность запускать синхронизацию, однако он все равно может столкнуться с интерфейсными ограничениями (отсутствие кнопок).

Решение №3: Создание кнопки «Синхронизировать» через расширение

Посмотрим на ситуацию со стороны пользователя. Кассиру неудобно искать пункты меню в разделе администрирования. Ему нужна кнопка в его рабочем интерфейсе или в РМК (Рабочем месте кассира). Чтобы это реализовать и при этом не давать кассиру лишних прав, мы можем использовать механизм Привилегированного режима в расширении.

Рассмотрим пример кода, который можно разместить в модуле команды или обработчике нажатия кнопки:


&НаСервере
Процедура ВыполнитьСинхронизациюПривилегированно()
    // Устанавливаем привилегированный режим, чтобы обойти проверку прав кассира
    УстановитьПривилегированныйРежим(Истина);
    
    // Получаем узел информационной базы, с которым настроен обмен
    УзелОбмена = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоНаименованию("Центральная база");
    
    Если Не УзелОбмена.Пустая() Тогда
        // Запуск стандартной процедуры обмена
        ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзла(УзелОбмена);
        Сообщить("Синхронизация успешно запущена в фоновом режиме.");
    Иначе
        Сообщить("Настройки обмена не найдены!");
    КонецЕсли;
КонецПроцедуры

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

Нюанс с «Интерактивным обменом» и конфликтами

Важно проанализировать еще один момент: конфликты данных. Если и в центре, и в периферийной базе был изменен один и тот же документ, при обмене возникнет конфликт. У кассира нет прав на форму Конфликты при синхронизации данных.

Чтобы обмен не «зависал» на ожидании решения пользователя, необходимо в центральной базе зайти в настройки синхронизации и установить правило Автоматическое разрешение конфликтов. Обычно выбирается приоритет центральной базы. Это гарантирует, что обмен пройдет до конца в автоматическом режиме без участия кассира.

Альтернативный метод: Использование ярлыка запуска

Выясним, есть ли способ обойтись без программирования и изменения настроек прав. Существует практика создания на рабочем столе кассира отдельного ярлыка для 1С. В параметрах запуска прописывается технический пользователь с полными правами и запуск конкретной обработки.

Пример строки запуска в ярлыке:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\1C_Bases\Retail" /N"RobotSync" /P"Password123" /Execute"C:\Scripts\RunSync.epf"

Где RunSync.epf — внешняя обработка, которая при открытии сразу запускает обмен и закрывает приложение. Кассир просто нажимает на ярлык, открывается окно 1С на несколько секунд и закрывается. Это «костыльный», но рабочий метод для случаев, когда администратору запрещено вносить изменения в конфигурацию или расширения.

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

← На главную