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

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

При переходе с версии 1С:Бухгалтерии предприятия 2.0 (БП 2.0) на 1С:Бухгалтерию предприятия 3.0 (БП 3.0) (удобнее через инструмент перехода БП 2.0 на 3.0) многие пользователи сталкиваются с затруднениями, связанными с учетными записями. Наиболее распространенные проблемы включают в себя отсутствие флажка «Вход в программу разрешен», сообщения об ошибках «Имя для входа уже занято», а также «Пользователь... не существует в справочнике пользователи». Эти трудности возникают из-за различий в механизмах управления пользователями между двумя версиями платформы.

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

Понимание причин возникновения проблем с пользователями

Прежде чем перейти к решениям, мы выясним причины, по которым возникают эти сложности. В БП 2.0 пользователи обычно создавались в конфигураторе. При переходе на БП 3.0 система пытается сопоставить этих пользователей с новым механизмом. Если есть дубликаты полных имен пользователей, или если пользователи были созданы только в конфигураторе без соответствующего элемента в справочнике «Пользователи» (в БП 2.0 это было опционально), возникают проблемы сопоставления.

Решение 1: Сопоставление пользователей через режим 1С:Предприятие

Наиболее простым и рекомендуемым способом решения проблем с сопоставлением пользователей является использование встроенного механизма в БП 3.0.

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

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

Решение 2: Удаление пользователя в конфигураторе и создание в режиме предприятия

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

  1. Откроем базу в режиме «Конфигуратор» под учетной записью администратора.
  2. Перейдем в меню «Администрирование» -> «Пользователи».
  3. Найдем пользователя, с которым возникли проблемы, и удалим его из списка пользователей информационной базы. Будьте внимательны и убедитесь, что удаляете нужного пользователя.
  4. После удаления пользователя из конфигуратора закроем конфигуратор и откроем базу в режиме «1С:Предприятие» под учетной записью администратора.
  5. Перейдем в раздел «Администрирование» -> «Настройки пользователей и прав» -> «Пользователи» (поможет инструмент аудита доступа и управления ролями).
  6. Создадим нового пользователя (или отредактируем существующий элемент справочника «Пользователи», который теперь не связан с пользователем ИБ).
  7. При создании нового пользователя или редактировании существующего элемента, система автоматически создаст или обновит соответствующего пользователя в информационной базе (конфигураторе).
  8. Установим пароль для пользователя, назначим необходимые права (поможет обработка настройки прав и подбора ролей) и убедимся, что установлены флажки «Вход в программу разрешен» и «Показывать в списке выбора».
  9. Запишем изменения.

Этот подход гарантирует корректную привязку пользователя ИБ к элементу справочника «Пользователи», так как создание происходит в соответствии с логикой БП 3.0.

Решение 3: Использование программного сопоставления (обработки)

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

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

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


// Получаем всех пользователей информационной базы
МП = ПользователиИнформационнойБазы.ПолучитьПользователей();

// Создаем соответствие для быстрого поиска пользователей ИБ по полному имени
СП = Новый Соответствие;
Для Каждого П ИЗ МП Цикл
    СП.Вставить(П.ПолноеИмя, П);
КонецЦикла;

// Выбираем всех пользователей из справочника "Пользователи" в режиме 1С:Предприятие
ВыборкаПользователейСправочника = Справочники.Пользователи.Выбрать();

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

Сообщить("Процесс сопоставления пользователей завершен.");

Мы проанализируем этот код:

  1. Сначала мы получаем список всех пользователей, зарегистрированных в информационной базе (конфигураторе), используя метод ПользователиИнформационнойБазы.ПолучитьПользователей().
  2. Затем мы создаем соответствие СП, где ключом является полное имя пользователя ИБ, а значением — сам объект пользователя ИБ. Это позволяет нам быстро находить пользователя ИБ по его полному имени.
  3. Далее мы обходим все элементы справочника «Пользователи» в режиме 1С:Предприятие.
  4. Для каждого элемента справочника мы пытаемся найти соответствующего пользователя ИБ, используя его Наименование (предполагая, что наименование в справочнике соответствует полному имени пользователя в ИБ).
  5. Если пользователь ИБ не найден, мы можем пометить соответствующий элемент справочника как недействительный, чтобы он не мешал работе.
  6. Если пользователь ИБ найден, мы устанавливаем его УникальныйИдентификатор в поле ИдентификаторПользователяИБ элемента справочника. Это и есть ключевой шаг для установления связи.
  7. Строка ОбъектСправочникаПользователи.ОбменДанными.Загрузка = Истина; очень важна, так как она отключает некоторые проверки при записи, что позволяет произвести изменения даже с ограниченными правами или в ситуациях, когда обычная запись блокируется.
  8. Наконец, мы записываем измененный объект справочника.

Дополнительно, для более точного сопоставления, если имена пользователей в ИБ и в справочнике не всегда совпадают, мы можем использовать следующий подход, как было предложено в одном из сообщений:


// В режиме отладки или в обработке
// Получаем объект справочника "Пользователи" для текущего пользователя
ОбъектПользовательСправочника = Справочники.Пользователи.НайтиПоНаименованию("ИмяПользователяВСправочнике").ПолучитьОбъект();

// Находим пользователя ИБ по имени, как оно написано в конфигураторе
// Например, если имя пользователя в конфигураторе "Администратор", а в справочнике "Иванов И.И."
// то мы можем найти по "Администратор"
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени("Имя пользователя как написано в конфигураторе");

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

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

Рекомендации и важные моменты

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

  1. Уникальные полные имена: Убедимся, что полные имена пользователей уникальны и совпадают как в справочнике «Пользователи», так и в пользователях ИБ (конфигураторе). Если в справочнике пользователей ИБ нет соответствующего пользователя, его необходимо создать. Ситуация, описанная в сообщении 9, когда в БП 2.0 было несколько пользователей с одинаковым полным именем, но разными логинами, является одной из основных причин сбоев при переходе. В БП 3.0 система требует уникальности полного имени.
  2. Проверка прав администратора при обновлении: Перед обновлением конфигурации рекомендуется убедиться, что пользователь, под которым осуществляется переход, имеет полные права, а также установлен флажок «Администратор системы (для перехода на ред. 3.0)» в разделе «Администрирование» - «Пользователи» на закладке «Прочее».
  3. Настройка даты запрета изменений: После обновления БП 2.0 на 3.0 рекомендуется установить дату, по которой был закрыт период в предыдущей базе, в разделе администрирования в настройках пользователей «Даты запрета изменений». Это предотвратит случайные изменения данных за прошлые периоды.
  4. Продолжение нумерации документов: Обратим внимание, что после обновления нумерация документов может начаться снова с первого номера. Потребуется скорректировать нумерацию вручную или с помощью обработки, чтобы продолжить ее с последнего номера в БП 2.0.
  5. Синхронизация с другими конфигурациями: Если используется синхронизация с другими конфигурациями (например, 1С:Розница 8, Управление небольшой фирмой 2.0, Управление торговлей 11 и 10.3), потребуется конвертация данных с использованием обработки «Конвертация обменов с БП 2.0.epf», которая входит в дистрибутив обновления.

Мы видим, что проблемы с пользователями после обновления на БП 3.0 являются достаточно частыми, но имеют четкие пути решения. Важно тщательно проверять состояние пользователей и использовать рекомендованные методы сопоставления или, при необходимости, программные подходы для восстановления корректной работы.

← На главную