Почему при синхронизации ERP и Документооборота у пользователей пропадает аутентификация 1С и как это исправить?

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

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

В этой статье мы подробно разберем, почему это происходит, где искать правила обмена и как изменить код в «Конвертации данных 2.0», чтобы сохранить настройки доступа.

Шаг 1. Поиск и выгрузка правил конвертации

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

  1. Перейдем в раздел НСИ и администрирование — Синхронизация данных.
  2. Выберем пункт Настройки синхронизации данных.
  3. Найдем строку обмена с «1С:Документооборот» и нажмем кнопку Настроить.
  4. В открывшемся окне выберем Параметры синхронизации данных — Загрузить правила конвертации объектов.
  5. Здесь можно воспользоваться кнопкой Сохранить правила в файл. Система выгрузит архив с XML-файлами, который мы будем анализировать в конфигурации «Конвертация данных 2.0» (КД2).

Шаг 2. Анализ проблемы в правилах обмена (КД 2.0)

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

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


Если ТипЗнч(ПараметрыОбъекта) = Тип("Соответствие") Тогда 
    Если ЗначениеЗаполнено(ПараметрыОбъекта["Имя"]) Тогда 
        ОписаниеПользователяИБ = Пользователи.НовоеОписаниеПользователяИБ(); 
        ОписаниеПользователяИБ.Вставить("Действие", "Записать"); 
        ОписаниеПользователяИБ.УникальныйИдентификатор = Объект.ИдентификаторПользователяИБ; 
        ОписаниеПользователяИБ.Имя = СокрЛП(ParametrsObekta["Имя"]); 
        // ... установка других реквизитов ...
        Объект.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ", ОписаниеПользователяИБ); 
    КонецЕсли; 
КонецЕсли;

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

Шаг 3. Передача пароля и проблемы «Безопасного хранилища»

Посмотрим на попытку передачи пароля из ERP в ДО. В обработчике «Перед выгрузкой» на стороне источника (ERP) иногда пытаются использовать следующий код:


ПарольПользователя = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Пользователь, "Пароль");
ВходящиеДанные.Вставить("Пароль", ПарольПользователя);

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

Шаг 4. Правильное решение проблемы

Чтобы избежать затирания данных, рекомендуется придерживаться следующих правил при корректировке конвертации:

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

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


// В обработчике "После загрузки" (ДО)
Если ЗначениеЗаполнено(ПараметрыОбъекта["Подразделение"]) Тогда 
    // Обновляем сведения в регистре, не трогая настройки аутентификации пользователя ИБ
    НаборЗаписей = РегистрыСведений.СведенияОПользователяхДокументооборот.СоздатьНаборЗаписей(); 
    НаборЗаписей.Отбор.Пользователь.Установить(Объект.Ссылка); 
    НаборЗаписей.Прочитать(); 
    Если НаборЗаписей.Количество() > 0 Тогда 
        Запись = НаборЗаписей[0]; 
        Запись.Подразделение = ПараметрыОбъекта["Подразделение"]; 
        НаборЗаписей.ОбменДанными.Загрузка = Истина; 
        НаборЗаписей.Записать(); 
    КонецЕсли; 
КонецЕсли;

Как внедрить исправленные правила?

После того как мы внесли правки в КД 2.0 и сохранили новый файл правил (обычно это ExchangeRules.xml), его нужно загрузить обратно в ERP:

  1. В том же окне настройки синхронизации выберем Загрузить из файла на компьютере.
  2. Важно: система часто требует загрузки именно архива (.zip), внутри которого должны находиться правила конвертации (ObjectConversionRules) и, при наличии, правила регистрации (RegistrationRules).
  3. После загрузки рекомендуется выполнить тестовую синхронизацию для одного пользователя, чтобы убедиться, что флаг Аутентификация 1С остается на месте.

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

← На главную