В практике администрирования 1С часто встречается загадочная ситуация: на одном и том же сервере, в одной и той же базе большинство сотрудников работают быстро, но у одного-двух конкретных пользователей запись или проведение документов занимает минуты вместо секунд. При этом замена компьютера или очистка локального кэша Windows не помогают. Давайте вместе разберем эту проблему, выясним скрытые причины и найдем эффективные способы оптимизации — есть готовый инструмент для анализа производительности и поиска причин замедлений 1С.
Прежде всего, нам необходимо локализовать проблему. Разберем по шагам диагностику, которую провел автор темы. Если мы заходим под "тормозящим" пользователем 1С с другого терминального сервера или под другой учетной записью Windows, а задержки сохраняются — это однозначно указывает на то, что проблема не в локальных файлах на диске C:\Users\..., а во внутренних данных самой информационной базы или серверных сеансовых данных, привязанных к уникальному идентификатору (UUID) пользователя 1С.
Проанализируем, почему проблема может не воспроизводиться на тестовой копии. Часто при создании копии базы или при ее загрузке в другой кластер серверов некоторые сеансовые данные и индексы полнотекстового поиска пересоздаются с нуля. Это дает нам важную подсказку: корень зла кроется в накопленных "хвостах" настроек или специфических данных в таблицах СУБД (поможет очистка битых ссылок и поврежденных записей), которые обрастают связями в процессе многолетней работы пользователя.
Платформа 1С:Предприятие 8.3 хранит пользовательские настройки (положение окон, настройки отчетов, историю выбора) в специальных системных таблицах. Со временем эти данные могут разрастаться или повреждаться. Стандартная кнопка "Установить стандартные настройки" в интерфейсе очищает лишь визуальную часть, но не удаляет записи из глубоких системных хранилищ.
Рассмотрим программный способ полной очистки. Для этого нам понадобится создать внешнюю обработку и запустить под проблемным пользователем следующий код (поможет набор инструментов для технической диагностики системы 1С):
Процедура ОчиститьВсеНастройкиПользователя()
ТекущийПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
// Удаляем системные настройки (формы, окна и т.д.)
ХранилищеСистемныхНастроек.Удалить(Неопределено, Неопределено, ТекущийПользовательИБ.Имя);
// Удаляем общие настройки
ХранилищеОбщихНастроек.Удалить(Неопределено, Неопределено, ТекущийПользовательИБ.Имя);
// Удаляем настройки данных форм
ХранилищеНастроекДанныхФорм.Удалить(Неопределено, Неопределено, ТекущийПользовательИБ.Имя);
// Удаляем настройки пользовательского интерфейса
ХранилищеПользовательскихНастроекОтчетов.Удалить(Неопределено, Неопределено, ТекущийПользовательИБ.Имя);
Сообщить("Все настройки для пользователя " + ТекущийПользовательИБ.Имя + " успешно удалены.");
КонецПроцедуры
После выполнения этого кода пользователь получит абсолютно "чистый" интерфейс, что часто мгновенно решает проблему задержек при открытии и записи объектов.
Выясним еще одну неочевидную причину — влияние бизнес-процессов. Если в конфигурации активно используются Задачи или БизнесПроцессы, система при каждом значимом действии (запись документа) может выполнять проверку актуальных задач пользователя. Если у сотрудника накопилось несколько тысяч незакрытых задач, стандартные механизмы пересчета итогов или обновления динамических списков будут вызывать серьезные тормоза.
Посмотрим на список задач под проблемным пользователем. Если их количество аномально велико, необходимо либо закрыть их, либо оптимизировать программный код в модуле объекта документа (обычно в событиях ПередЗаписью или ПриЗаписи), где может происходить обращение к задачам текущего пользователя.
Иногда проблема кроется на стороне сервера приложений 1С. В каталоге настроек кластера (обычно это C:\Program Files\1cv8\srvinfo) хранятся временные данные сеансов. Бывают случаи, когда файлы конфигурации сеанса для конкретного пользователя "битые".
Разберем алгоритм действий для системного администратора (поможет утилита для управления сеансами и кластером серверов):
srvinfo\reg_1541 (номер может отличаться).snaccfg удалите содержимое. Это временные данные сеансов, их удаление безопасно при остановленной службе.Это принудительно заставит сервер пересоздать данные для всех новых подключений, исключая влияние устаревших сеансовых данных.
Проанализируем ситуацию с механизмом "Истории выбора". 1С запоминает последние выбранные элементы для каждого пользователя. Если в справочниках миллионы записей, а история выбора конкретного пользователя по каким-то причинам стала слишком объемной или индекс полнотекстового поиска (ППС) для этих данных поврежден, запись объекта будет тормозить, так как система пытается обновить этот индекс.
Попробуйте временно отключить полнотекстовый поиск через Управление полнотекстовым поиском в разделе администрирования. Если скорость работы пользователя восстановится — необходимо выполнить полную очистку и обновление индекса ППС.
Если ни один из вышеперечисленных методов не помог, воспользуемся проверенным "ядерным" вариантом, который сработал у автора темы. Суть заключается в создании нового пользователя 1С. Важно понимать: просто изменить имя существующего пользователя недостаточно. Нужно именно создать новый элемент в справочнике Пользователи (если используется БСП) и новую учетную запись в списке Пользователи информационной базы (в Конфигураторе).
Почему это помогает? При создании нового пользователя система генерирует новый уникальный идентификатор (GUID). Все старые записи в скрытых системных таблицах, настройках и кэшах, привязанные к старому GUID, перестают влиять на работу.
Рассмотрим порядок действий:
Важный момент для программиста: если в коде конфигурации есть привязки к конкретным ссылкам на пользователей (что является плохим тоном, но встречается), их необходимо обновить, заменив старую ссылку на новую.
Проблема "индивидуальных тормозов" в 1С почти всегда связана не с правами, а с метаданными пользователя (настройки, история, задачи), которые хранятся внутри базы данных. Начните с программной очистки ХранилищеСистемныхНастроек, и если это не даст результата в течение 5-10 минут, смело переходите к созданию нового профиля пользователя. Это сэкономит вам часы бесплодных замеров производительности в отладчике на работающем продакшене — для этого есть инструмент для отладки кода в режиме Предприятие.