Приветствуем вас, коллеги! В процессе администрирования, поддержки и обновления устаревших информационных баз 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 хранит список пользователей и их персональных настроек параллельно в двух разных местах базы данных:
v8users.users.usr, который хранится в виде строки в системной таблице настроек Params.Когда информационная база мигрирует с платформы 8.1 на 8.3 напрямую, формат хранения данных в этих таблицах остается старым. Как только мы открываем карточку пользователя, вносим изменения и нажимаем кнопку «ОК», современная платформа 8.3 пытается перезаписать данные, используя новые, более безопасные алгоритмы хэширования паролей и пересчета прав доступа.
Из-за критического несовпадения структуры старых полей СУБД и новых требований платформы (особенно в 64-битной среде) возникает ошибка нарушения доступа к памяти (Access Violation, APPCRASH библиотек frntend.dll или backend.dll). Конфигуратор не может обработать это исключение и аварийно завершает свою работу.
Давайте рассмотрим три основных способа решения этой проблемы, начиная от самого надежного и кардинального метода и заканчивая обходными путями.
Этот метод позволяет полностью и навсегда устранить проблему несовместимости структуры данных без изменения режима совместимости конфигурации и без постоянных манипуляций с версиями платформ. Наша цель — заставить платформу 1С заново сформировать таблицы пользователей по современным стандартам.
Выполним процедуру по шагам:
ВыгрузкаЗагрузкаПользователей.epf выгрузим всех пользователей, их роли, пароли и привязки во внешний файл формата XML.
DROP TABLE v8users;
DELETE FROM Params WHERE FileName = 'users.usr';
v8users и строку в Params.ВыгрузкаЗагрузкаПользователей.epf выполним загрузку наших пользователей из ранее сохраненного XML-файла. Все права, пароли и привязки пользователей будут успешно восстановлены, но уже в новом, корректном формате.После этого изменения в карточках пользователей будут сохраняться стабильно и без вылетов.
Если у вас нет оперативного доступа к СУБД MS SQL Server или вы не обладаете достаточными правами для выполнения SQL-запросов, можно воспользоваться обходным решением, которое применил автор темы на форуме.
Проанализируем этот сценарий:
Установлено, что на платформе 1С:Предприятие версии 8.3.13 (и более ранних) механизм записи пользователей в режиме совместимости с 8.1 работает стабильно. Мы можем временно переключить обслуживание базы на эту платформу для редактирования пользователей:
8.3.13 параллельно с существующей новой версией (например, 8.3.16). Разные версии платформы могут бесконфликтно сосуществовать на одном компьютере.Как отметили участники обсуждения на форуме, изменение режима совместимости конфигурации со значения Версия 8.1 на более высокие (например, Версия 8.3.12) решает проблему с записью пользователей, но вызывает другие серьезные трудности. При изменении режима совместимости запускается процесс реструктуризации всей базы данных.
Поскольку конфигурация является сильно измененной (переписанной), реструктуризация выдаст огромное количество предупреждений и может привести к потере данных, нарушению уникальности индексов или неработоспособности старого программного кода, написанного под стандарты 8.1. Поэтому использовать этот метод без глубокого предварительного тестирования и адаптации кода крайне не рекомендуется.
Если вышеописанные методы не помогают, рассмотрим еще несколько редких технических багов платформы 1С 8.3, которые могут приводить к аналогичному симптому:
DOMAIN\VeryLongNameOfActiveDirectoryUser...) превышает 128 символов, нажатие кнопки «ОК» в карточке пользователя вызывает мгновенный вылет Конфигуратора. Решением является сокращение имени учетной записи в AD или отказ от авторизации ОС для данного пользователя.v8users может содержать некорректно заполненные даты (например, пустые даты без смещения, которые SQL Server воспринимает как ошибочные). При попытке перезаписать строку драйвер СУБД возвращает ошибку, блокирующую поток, что приводит к краху Конфигуратора. Проблема решается запуском тестирования и исправления (ТиИ) с установленным флагом «Проверка логической целостности» и выбором варианта «Очищать» или «Создавать объекты» при наличии ошибок.%TEMP% создаются временные файлы с префиксом v8_. Если установленный на сервере антивирус (например, Kaspersky Endpoint Security) блокирует создание этих файлов в рамках проактивной защиты, Конфигуратор может упасть с ошибкой доступа к памяти. Рекомендуется временно отключить антивирус или добавить исполняемые файлы 1С в список исключений.Используя предложенные инструкции, мы сможем быстро локализовать и устранить сбой в работе Конфигуратора, обеспечив стабильную работу пользователей в информационной базе.