Синхронизация данных между конфигурациями «1С:Бухгалтерия предприятия 3.0» (БП) и «1С:Зарплата и управление персоналом 3.1» (ЗУП) — это регулярная бизнес-задача. Зачастую руководство или служба безопасности накладывают жесткие ограничения на доступ к системе: рядовому бухгалтеру или расчетчику зарплаты категорически запрещено выдавать полные права (роль Администратор). При этом сам обмен данными должен запускаться вручную пользователем, а не по расписанию.
В такой ситуации специалисты часто сталкиваются со следующей проблемой: после настройки прав у пользователя пропадает кнопка или пункт меню «Синхронизация данных». В этой статье мы подробно разберем, как решить эту задачу, настроить интерфейс и права доступа как в самой 1С, так и на уровне операционной системы.
Для того чтобы запустить процесс интерактивной синхронизации, пользователю недостаточно просто иметь доступ к бухгалтерским документам. В Библиотеке стандартных подсистем (БСП), на базе которой построены БП 3.0 и ЗУП 3.1, предусмотрен специальный профиль групп доступа.
Выполним детальный анализ прав. Прежде всего, перейдем в раздел Администрирование — Настройки пользователей и прав — Профили групп доступа и создадим (или найдем готовый) профиль «Синхронизация данных с другими программами». Нам необходимо убедиться, что в него включены следующие критически важные роли:
Проанализируем ситуацию, когда профиль назначен, но команда запуска обмена все равно отсутствует в интерфейсе пользователя.
Разработчики типовых конфигураций 1С в целях безопасности скрывают элементы администрирования от обычных пользователей. По умолчанию команда СинхронизацияДанных в разделе «Администрирование» жестко привязана к роли ПолныеПрава на уровне схемы компоновки интерфейса.
Рассмотрим два способа обхода этого ограничения без изменения конфигурации на код:
Способ А. Ручная настройка панели навигации
Попросим пользователя войти под своей учетной записью (у которой уже настроен профиль синхронизации) и проделать следующие действия:
Способ Б. Использование механизма «Избранное» (прямая ссылка)
Если в списке доступных команд панели навигации нужный пункт так и не появился, мы можем воспользоваться механизмом получения прямой ссылки. Выполним следующие шаги:
Ctrl + F11.e1cib/app/Обработка.СинхронизацияДанныхИнтерактивная или ссылку на форму настроек.Shift + F11 (переход по ссылке), вставим скопированный текст и нажмем «Перейти».Когда мы разобрались с интерфейсом 1С, возникает техническое препятствие на уровне ОС. Если обмен выполняется через файловый каталог (например, сетевую папку или локальный диск), СУБД или операционная система могут заблокировать запись файлов обмена.
Выясним причину возможных ошибок записи, проанализировав архитектуру работы системы:
Message_БП_ЗУП.xml и запись Message_ЗУП_БП.xml) выполняются непосредственно из-под сеанса пользователя Windows. Соответственно, текущий пользователь операционной системы должен иметь полные права (Чтение, Запись, Изменение) на общую сетевую папку обмена.USR1CV8 или доменная служба). Убедитесь, что для этой учетной записи предоставлен доступ на чтение и запись к каталогу обмена.Синхронизация часто прерывается без видимых ошибок, или же данные просто не появляются в базе-приемнике. Проанализируем влияние дат запрета загрузки.
При обмене данными не-администраторы жестко подчиняются правилам дат запрета изменения данных. Если расчетный период закрыт, а в пакете из ЗУП приходят документы за прошлый месяц, система БП автоматически проигнорирует их загрузку.
Чтобы решить эту проблему, перейдем в Администрирование — Даты запрета изменения данных. Вкладка «Синхронизация данных» позволяет гибко настроить даты запрета для конкретных узлов информационных баз. Если пользователю необходимо загружать исторические данные, ему придется временно выдать роль РазрешениеИзмененияДанныхВЗапрещенномПериоде или сдвинуть дату запрета на время проведения синхронизации.
Если стандартный интерфейс полностью блокирует работу пользователя без прав администратора, мы можем разработать или подключить внешнюю обработку, которая будет запускать обмен в привилегированном режиме.
Рассмотрим пример кода, который можно поместить во внешнюю обработку для запуска обмена. Мы используем методы БСП для программной инициализации синхронизации:
Процедура ВыполнитьОбменДаннымиНаСервере(УзелИнформационнойБазы) Экспорт
// Проверим наличие прав на выполнение синхронизации у текущего пользователя
Если Не РольДоступна("ВыполнениеСинхронизацииДанных") Тогда
ВызватьИсключение "У вас недостаточно прав для выполнения обмена данными!";
КонецЕсли;
// Инициализируем параметры обмена через стандартные механизмы БСП
ПараметрыОбмена = ОбменДаннымиСервер.ПодготовитьПараметрыИнтерактивногоОбмена(УзелИнформационнойБазы);
// Запускаем транзакцию обмена в безопасном режиме
УстановитьПривилегированныйРежим(Истина);
Попытка
ОбменДаннымиСервер.ВыполнитьОбменДаннымиЗаданнымСпособом(ПараметрыОбмена);
ЗаписатьВЖурналРегистрации("Синхронизация.Успех", УровеньЖурналаРегистрации.Информация, , , "Обмен успешно завершен.");
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ЗаписатьВЖурналРегистрации("Синхронизация.Ошибка", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
ВызватьИсключение "Ошибка при выполнении синхронизации: " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке);
КонецПопытки;
КонецПроцедуры
Использование вызова УстановитьПривилегированныйРежим(Истина) позволяет временно обойти ограничения прав на запись сопутствующих справочников и регистров сведений в процессе загрузки объектов, если у пользователя-бухгалтера ограничены права на редактирование некоторых системных метаданных 1С.
Зарегистрируем эту обработку в разделе «Дополнительные отчеты и обработки», настроим права доступа к ней для ответственного бухгалтера, и задача безопасной ручной синхронизации будет полностью решена!