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

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

В практике администрирования 1С часто встречается загадочная ситуация: на одном и том же сервере, в одной и той же базе большинство сотрудников работают быстро, но у одного-двух конкретных пользователей запись или проведение документов занимает минуты вместо секунд. При этом замена компьютера или очистка локального кэша Windows не помогают. Давайте вместе разберем эту проблему, выясним скрытые причины и найдем эффективные способы оптимизации — есть готовый инструмент для анализа производительности и поиска причин замедлений 1С.

Анализируем ситуацию: локальный кэш или данные базы?

Прежде всего, нам необходимо локализовать проблему. Разберем по шагам диагностику, которую провел автор темы. Если мы заходим под "тормозящим" пользователем 1С с другого терминального сервера или под другой учетной записью Windows, а задержки сохраняются — это однозначно указывает на то, что проблема не в локальных файлах на диске C:\Users\..., а во внутренних данных самой информационной базы или серверных сеансовых данных, привязанных к уникальному идентификатору (UUID) пользователя 1С.

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

Способ 1. Очистка системных хранилищ настроек

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

Рассмотрим программный способ полной очистки. Для этого нам понадобится создать внешнюю обработку и запустить под проблемным пользователем следующий код (поможет набор инструментов для технической диагностики системы 1С):


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

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

Способ 2. Проверка очереди задач и уведомлений

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

Посмотрим на список задач под проблемным пользователем. Если их количество аномально велико, необходимо либо закрыть их, либо оптимизировать программный код в модуле объекта документа (обычно в событиях ПередЗаписью или ПриЗаписи), где может происходить обращение к задачам текущего пользователя.

Способ 3. Очистка серверного кэша сеансов (snaccfg)

Иногда проблема кроется на стороне сервера приложений 1С. В каталоге настроек кластера (обычно это C:\Program Files\1cv8\srvinfo) хранятся временные данные сеансов. Бывают случаи, когда файлы конфигурации сеанса для конкретного пользователя "битые".

Разберем алгоритм действий для системного администратора (поможет утилита для управления сеансами и кластером серверов):

  1. Остановите службу Agent 1C:Enterprise.
  2. Перейдите в каталог srvinfo\reg_1541 (номер может отличаться).
  3. Найдите папку вашей информационной базы (по ее UID).
  4. Внутри папки snaccfg удалите содержимое. Это временные данные сеансов, их удаление безопасно при остановленной службе.
  5. Запустите службу агента.

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

Способ 4. История выбора и полнотекстовый поиск

Проанализируем ситуацию с механизмом "Истории выбора". 1С запоминает последние выбранные элементы для каждого пользователя. Если в справочниках миллионы записей, а история выбора конкретного пользователя по каким-то причинам стала слишком объемной или индекс полнотекстового поиска (ППС) для этих данных поврежден, запись объекта будет тормозить, так как система пытается обновить этот индекс.

Попробуйте временно отключить полнотекстовый поиск через Управление полнотекстовым поиском в разделе администрирования. Если скорость работы пользователя восстановится — необходимо выполнить полную очистку и обновление индекса ППС.

Способ 5. Радикальное решение — пересоздание пользователя

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

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

Рассмотрим порядок действий:

  1. Создаем нового пользователя, полностью копируя права и настройки доступа старого.
  2. Проверяем скорость работы. Если тормоза исчезли — переносим необходимые данные (например, избранное) вручную.
  3. Старого пользователя помечаем на удаление или переименовываем в "Архив".

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

Резюме

Проблема "индивидуальных тормозов" в 1С почти всегда связана не с правами, а с метаданными пользователя (настройки, история, задачи), которые хранятся внутри базы данных. Начните с программной очистки ХранилищеСистемныхНастроек, и если это не даст результата в течение 5-10 минут, смело переходите к созданию нового профиля пользователя. Это сэкономит вам часы бесплодных замеров производительности в отладчике на работающем продакшене — для этого есть инструмент для отладки кода в режиме Предприятие.

← На главную