Ситуации, когда в информационной базе 1С начинают происходить необъяснимые события — пропадают пользователи информационной базы (ИБ) или самопроизвольно меняются их параметры (например, доменное имя для авторизации), — часто называют «мистикой» или «барабашкой». Однако за такими явлениями всегда стоят конкретные технические причины, связанные с особенностями работы платформы 1С:Предприятие 8.3, механизмами кэширования и администрирования баз данных. В данной статье мы подробно разберем, почему возникают такие проблемы и как их эффективно диагностировать и устранять.
Рассмотрим ситуацию, когда у пользователя с доменной авторизацией внезапно восстанавливается старое доменное имя, которое было актуально несколько недель назад. Это явный признак того, что система обратилась к устаревшим данным. Выясним причины, по которым это может происходить:
1CV8Reg.lst). Если в кластере несколько рабочих серверов, и один из них долгое время находился в офлайне или имел проблемы с доступом к общему реестру, при его включении может произойти конфликт версий, в результате которого «старые» данные перезапишут «новые».Config, но кэш сеансов может остаться старым, что приводит к непредсказуемому поведению системы, включая «исчезновение» объектов метаданных или пользователей.Проанализируем шаги, которые необходимо предпринять для поиска источника проблемы. Если Журнал регистрации 1С не фиксирует изменений (то есть в нем нет записей об удалении или модификации пользователя), значит, изменения происходят в обход стандартных механизмов платформы.
1. Включение аудита на стороне SQL-сервера
Если есть подозрение, что кто-то «лазит руками» в базу данных или изменения вносятся сторонним софтом, необходимо настроить аудит на уровне СУБД. Рассмотрим, как это сделать для MS SQL Server. Нам нужно отследить любые манипуляции с системной таблицей v8users.
Для начала создадим аудит сервера, а затем спецификацию аудита базы данных, которая будет фиксировать обращения к таблице пользователей. Это позволит увидеть имя хоста, приложение и учетную запись, под которой вносились правки.
2. Проверка внешних подключений и обменов
Часто причиной «мистики» становятся забытые регламентные задания или внешние обработки. Разберем по шагам, что нужно проверить:
COMConnector под административной учетной записью, она может программно изменять список пользователей.Посмотрим на конкретные действия, которые помогут стабилизировать работу системы.
Для устранения проблем с «фантомными» данными необходимо полностью очистить кэш сервера приложений. Проанализируем этот процесс:
srvinfo (путь по умолчанию: C:\Program Files\1cv8\srvinfo).reg_1541) и внутри нее удалите содержимое папки snccntxt — именно здесь хранятся контексты сеансов, которые могут содержать битые ссылки на пользователей.temp в профиле пользователя, под которым запускается служба 1С.Иногда полезно выполнить программную сверку того, что видит платформа, с тем, что записано в справочнике. Проанализируем простую обработку, которая поможет выявить расхождения:
// Получаем всех пользователей информационной базы
ПользователиИБ = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого ТекущийПользователь Из ПользователиИБ Цикл
// Ищем соответствующую запись в справочнике Пользователи
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Пользователи.Ссылка КАК Ссылка,
| Пользователи.Наименование КАК ФИО
|ИЗ
| Справочник.Пользователи КАК Пользователи
|ГДЕ
| Пользователи.ИдентификаторПользователяИБ = &Идентификатор";
Запрос.УстановитьПараметр("Идентификатор", ТекущийПользователь.УникальныйИдентификатор);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Сообщить("Внимание: Пользователь ИБ '" + ТекущийПользователь.Имя + "' не найден в справочнике!");
КонецЕсли;
КонецЦикла;
Если пользователи пропадают бесследно, а записи в системных таблицах выглядят странно, стоит выполнить проверку физической целостности базы. Рассмотрим команду для SQL Management Studio:
DBCC CHECKDB ('ИмяВашейБазы') WITH NO_INFOMSGS, ALL_ERRORMSGS;
Если проверка выявит ошибки в индексах таблицы v8users, это может объяснять, почему 1С «не видит» пользователя, хотя он физически присутствует в данных. В таком случае поможет переиндексация или использование средств восстановления SQL.
Выясним, как предотвратить повторение подобных инцидентов в будущем:
sa на SQL-сервере и административных пользователей в самой 1С.Подводя итог, можно сказать, что «мистика» с пользователями — это всегда следствие сбоя в механизмах хранения или передачи данных. Системный подход к очистке кэша, настройка аудита и отказ от рискованных методов обновления позволяют полностью устранить эти неприятные явления.