Почему вылетает Конфигуратор 1С при изменении или добавлении пользователя и как это исправить?

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

Приветствуем вас, коллеги! В процессе администрирования, поддержки и обновления устаревших информационных баз 1С, перенесенных с платформы 8.1 на современные релизы 8.3, специалисты часто сталкиваются с крайне неприятным симптомом. При попытке добавить нового пользователя, изменить существующего, назначить ему новые роли или просто поменять пароль в Конфигураторе, программа мгновенно закрывается («схлопывается») без вывода каких-либо предупреждений или сообщений об ошибках.

Этот сбой чаще всего проявляется в клиент-серверных базах (под управлением MS SQL Server или PostgreSQL), работающих на платформе 1С:Предприятие 8.3.15, 8.3.16 и выше в 64-разрядном режиме, если у конфигурации установлен режим совместимости Версия 8.1. Давайте подробно проанализируем причины этой проблемы и разберем по шагам надежные методы ее устранения.

Выясняем глубинную причину аварийного завершения Конфигуратора

Для того чтобы понять, почему происходит аварийное завершение процесса 1cv8.exe, заглянем во внутреннюю структуру хранения учетных записей 1С на уровне СУБД. Платформа 1С:Предприятие при работе на SQL Server хранит список пользователей и их персональных настроек параллельно в двух разных местах базы данных:

  1. Физическая таблица СУБД под названием v8users.
  2. Специальный упакованный бинарный файл users.usr, который хранится в виде строки в системной таблице настроек Params.

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

Из-за критического несовпадения структуры старых полей СУБД и новых требований платформы (особенно в 64-битной среде) возникает ошибка нарушения доступа к памяти (Access Violation, APPCRASH библиотек frntend.dll или backend.dll). Конфигуратор не может обработать это исключение и аварийно завершает свою работу.

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

Решение 1. Кардинальное пересоздание таблиц пользователей в СУБД (Рекомендуемый метод)

Этот метод позволяет полностью и навсегда устранить проблему несовместимости структуры данных без изменения режима совместимости конфигурации и без постоянных манипуляций с версиями платформ. Наша цель — заставить платформу 1С заново сформировать таблицы пользователей по современным стандартам.

Выполним процедуру по шагам:

  1. Экспорт учетных записей: Запустим базу данных в режиме «1С:Предприятие». Если на текущей версии платформы запуск невозможен или вылетает, используем для этого шага компьютер с временно установленной старой версией платформы (например, 8.3.12 или 8.3.13), где вылеты не происходят. С помощью стандартной обработки ВыгрузкаЗагрузкаПользователей.epf выгрузим всех пользователей, их роли, пароли и привязки во внешний файл формата XML.
  2. Создание резервной копии: Перед проведением любых прямых манипуляций с таблицами СУБД в обязательном порядке создадим полную резервную копию базы данных в SQL Server Management Studio (SSMS).
  3. Очистка устаревших таблиц: Подключимся к базе данных через SQL Server Management Studio, откроем окно нового запроса и выполним следующий SQL-скрипт, который удалит старую таблицу пользователей и сопутствующую запись параметров:

DROP TABLE v8users;
DELETE FROM Params WHERE FileName = 'users.usr';
  1. Регенерация таблиц платформой: Теперь запустим Конфигуратор базы данных на целевой платформе (например, 8.3.16). Поскольку физические таблицы и файлы пользователей полностью удалены, система безопасности 1С посчитает, что в базе нет ни одного пользователя, и позволит зайти без авторизации. В момент этого входа платформа автоматически обнаружит отсутствие таблиц и создаст абсолютно новые, корректные и совместимые с версией 8.3 таблицы v8users и строку в Params.
  2. Импорт учетных записей: Запустим режим «1С:Предприятие» под созданным чистым сеансом. С помощью той же внешней обработки ВыгрузкаЗагрузкаПользователей.epf выполним загрузку наших пользователей из ранее сохраненного XML-файла. Все права, пароли и привязки пользователей будут успешно восстановлены, но уже в новом, корректном формате.

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

Решение 2. Временный откат версии платформы для администрирования

Если у вас нет оперативного доступа к СУБД MS SQL Server или вы не обладаете достаточными правами для выполнения SQL-запросов, можно воспользоваться обходным решением, которое применил автор темы на форуме.

Проанализируем этот сценарий:

Установлено, что на платформе 1С:Предприятие версии 8.3.13 (и более ранних) механизм записи пользователей в режиме совместимости с 8.1 работает стабильно. Мы можем временно переключить обслуживание базы на эту платформу для редактирования пользователей:

  1. Установим на сервере или локальной машине платформу версии 8.3.13 параллельно с существующей новой версией (например, 8.3.16). Разные версии платформы могут бесконфликтно сосуществовать на одном компьютере.
  2. Запустим Конфигуратор базы данных, принудительно указав версию платформы 8.3.13 в настройках запуска конкретной информационной базы в окне запуска 1С.
  3. Внесем все необходимые изменения в список пользователей (добавим новые учетные записи, назначим новые роли или сменим пароли) и успешно сохраним базу данных.
  4. Закроем Конфигуратор и вернем настройки запуска информационной базы на актуальную рабочую версию платформы (8.3.16). База продолжит работать в штатном режиме для всех остальных пользователей.

Решение 3. Изменение режима совместимости конфигурации

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

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

Другие специфические причины вылета Конфигуратора при записи пользователя

Если вышеописанные методы не помогают, рассмотрим еще несколько редких технических багов платформы 1С 8.3, которые могут приводить к аналогичному симптому:

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

← На главную