Как запустить синхронизацию данных между 1С:Бухгалтерия 3.0 и 1С:ЗУП 3.1 без предоставления пользователю прав Администратора

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

Синхронизация данных между конфигурациями «1С:Бухгалтерия предприятия 3.0» (БП) и «1С:Зарплата и управление персоналом 3.1» (ЗУП) — это регулярная бизнес-задача. Зачастую руководство или служба безопасности накладывают жесткие ограничения на доступ к системе: рядовому бухгалтеру или расчетчику зарплаты категорически запрещено выдавать полные права (роль Администратор). При этом сам обмен данными должен запускаться вручную пользователем, а не по расписанию.

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

Шаг 1. Анализ и настройка типовых ролей и профилей в 1С

Для того чтобы запустить процесс интерактивной синхронизации, пользователю недостаточно просто иметь доступ к бухгалтерским документам. В Библиотеке стандартных подсистем (БСП), на базе которой построены БП 3.0 и ЗУП 3.1, предусмотрен специальный профиль групп доступа.

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

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

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

Шаг 2. Решение проблемы видимости команды в интерфейсе БСП

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

Рассмотрим два способа обхода этого ограничения без изменения конфигурации на код:

Способ А. Ручная настройка панели навигации

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

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

Способ Б. Использование механизма «Избранное» (прямая ссылка)

Если в списке доступных команд панели навигации нужный пункт так и не появился, мы можем воспользоваться механизмом получения прямой ссылки. Выполним следующие шаги:

  1. Зайдем в базу под учетной записью с правами Администратора.
  2. Перейдем в меню синхронизации данных.
  3. В верхнем правом углу нажмем кнопку получения ссылки (выглядит как два звена цепи) или воспользуемся сочетанием клавиш Ctrl + F11.
  4. Скопируем внутреннюю ссылку вида e1cib/app/Обработка.СинхронизацияДанныхИнтерактивная или ссылку на форму настроек.
  5. Зайдем под пользователем-бухгалтером, нажмем Shift + F11 (переход по ссылке), вставим скопированный текст и нажмем «Перейти».
  6. После открытия формы пользователю обязательно нужно нажать на «звездочку» в заголовке окна, чтобы добавить эту обработку в свое «Избранное». Теперь он сможет запускать обмен в один клик из панели избранного на рабочем столе.

Шаг 3. Настройка прав доступа на уровне операционной системы

Когда мы разобрались с интерфейсом 1С, возникает техническое препятствие на уровне ОС. Если обмен выполняется через файловый каталог (например, сетевую папку или локальный диск), СУБД или операционная система могут заблокировать запись файлов обмена.

Выясним причину возможных ошибок записи, проанализировав архитектуру работы системы:

  1. Файловый вариант базы данных. В этом случае все файловые операции (чтение сообщения обмена Message_БП_ЗУП.xml и запись Message_ЗУП_БП.xml) выполняются непосредственно из-под сеанса пользователя Windows. Соответственно, текущий пользователь операционной системы должен иметь полные права (Чтение, Запись, Изменение) на общую сетевую папку обмена.
  2. Клиент-серверный вариант (SQL). Это наиболее частый источник ошибок «Доступ к файлу запрещен». При клиент-серверном режиме работы код обмена выполняется на стороне сервера «1С:Предприятия». Это означает, что права на запись в сетевой каталог должен иметь не пользователь Windows, работающий за компьютером, а учетная запись, от имени которой запущен сервер приложений 1С (в стандартной установке это локальный пользователь USR1CV8 или доменная служба). Убедитесь, что для этой учетной записи предоставлен доступ на чтение и запись к каталогу обмена.

Шаг 4. Учет даты запрета изменения данных

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

При обмене данными не-администраторы жестко подчиняются правилам дат запрета изменения данных. Если расчетный период закрыт, а в пакете из ЗУП приходят документы за прошлый месяц, система БП автоматически проигнорирует их загрузку.

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

Шаг 5. Программный вызов и автоматизация через внешние обработки

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

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


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

Использование вызова УстановитьПривилегированныйРежим(Истина) позволяет временно обойти ограничения прав на запись сопутствующих справочников и регистров сведений в процессе загрузки объектов, если у пользователя-бухгалтера ограничены права на редактирование некоторых системных метаданных 1С.

Зарегистрируем эту обработку в разделе «Дополнительные отчеты и обработки», настроим права доступа к ней для ответственного бухгалтера, и задача безопасной ручной синхронизации будет полностью решена!

← На главную