Сталкивались ли вы с ситуацией, когда вся компания работает в 1С без нареканий, но у одного конкретного сотрудника программа начинает сильно тормозить? Проведение документов занимает по 5-10 минут, отчеты формируются вечность, а списки открываются с огромной задержкой. При этом, как ни странно, после очистки настроек пользователя всё начинает "летать", но через несколько дней проблема возвращается. Давайте вместе разберемся в причинах такого поведения системы и рассмотрим пошаговый алгоритм диагностики и решения этой неприятной задачи.
Проблема, когда производительность падает только у одного пользователя, почти всегда указывает на то, что дело не в общей нагрузке на сервер или проблемах с конфигурацией, а в чем-то, что связано непосредственно с сеансом, данными или настройками этого пользователя.
Это первое, с чего стоит начать, так как эти действия часто решают проблему без глубокого технического анализа. Причина проста: в процессе работы пользователь накапливает множество персональных настроек (отборы, сортировки, группировки в списках и отчетах), которые могут приводить к неоптимальной работе запросов к базе данных.
%APPDATA%\1C\1Cv8 и %LOCALAPPDATA%\1C\1Cv8. Просто удалите папки с длинными буквенно-цифровыми именами (ID информационных баз). При следующем запуске 1С создаст их заново.Иногда требуется удалить не все настройки, а только какую-то конкретную, которая вызывает проблему. Например, настройку определенного списка документов. Это можно сделать программно.
Программная очистка системных настроек:
Для выборочного удаления можно использовать метод ХранилищеСистемныхНастроек.Удалить(). Это более тонкий инструмент, который позволяет удалить настройки для конкретного объекта, не затрагивая все остальные. Например, для удаления настроек определенного отчета или формы.
// Пример удаления настроек для конкретного пользователя и объекта
// КлючОбъекта - это, например, полное имя отчета или формы
// КлючНастройки - имя конкретной настройки (например, "Основная")
// Пользователь - ссылка на пользователя из справочника "Пользователи"
ХранилищеСистемныхНастроек.Удалить(КлючОбъекта, КлючНастройки, Пользователь);
Если чистка кэша и настроек помогает лишь временно, значит, проблема глубже. Следующий этап — проверить все, что связано с учетными записями и правами.
%TEMP%, %APPDATA%, %LOCALAPPDATA%). Отсутствие прав может приводить к ошибкам сохранения настроек и, как следствие, к замедлению работы.Если предыдущие шаги не дали результата, пора переходить к "тяжелой артиллерии". Наблюдение, что в консоли сервера 1С у пользователя при проведении документа постоянно растет счетчик "Захвачено СУБД", прямо указывает на проблемы на уровне базы данных — либо очень долгий запрос, либо конфликт блокировок.
Технологический журнал (ТЖ) — это основной инструмент для такой диагностики. Он позволяет записывать все события, происходящие на сервере 1С. Для нашей задачи нужно настроить сбор следующих событий:
LOCK — покажет все конфликты блокировок на уровне 1С. Вы увидите, какие сеансы и какие данные блокируют работу нашего пользователя.DBMSSQL — запишет все запросы к SQL Server. Можно установить порог по длительности (например, более 5000 мс), чтобы отлавливать только "тормозящие" запросы.Анализ логов ТЖ — задача нетривиальная, но она дает исчерпывающую картину того, что происходит "под капотом" системы. Вы сможете точно определить, какой именно запрос или какая блокировка вызывает задержку.
Параллельно с ТЖ можно использовать инструменты самого MS SQL Server.
UPDATE STATISTICS) для всей базы или для конкретных "проблемных" таблиц может решить проблему.SET ARITHABORT ON. Иногда из-за настроек сервера или драйверов он может быть выключен, что приводит к сильной деградации производительности.Как показывает практика, иногда причина кроется не в программном обеспечении, а в "железе". В ситуации, описанной в теме на форуме, одним из ключевых элементов решения стала именно аппаратная проблема.
Если проблема возникает только у одного пользователя, работающего удаленно (например, из другого офиса), или даже на терминальном сервере, стоит проверить всю цепочку:
Даже если все остальные пользователи в том же кабинете работают нормально, не исключайте локальную проблему с конкретным сетевым подключением.
В исходной проблеме окончательное решение было комплексным: обновление платформы 1С до актуальной версии, переход на более новую версию MS SQL Server (с 2005 на 2014) и исправление проблемы с сетевым портом. Это подчеркивает важный принцип: поддерживайте программное обеспечение в актуальном состоянии. В новых версиях платформы и СУБД исправляются ошибки и оптимизируется производительность.
Подведем итог. Если вы столкнулись с "тормозами" у одного пользователя, действуйте по следующему плану:
Следуя этому алгоритму, вы сможете систематически проанализировать ситуацию и с высокой вероятностью найти и устранить причину низкой производительности.