Как повысить производительность подбора товаров и расчета скидок в 1С:Комплексная автоматизация

Системный администратор 1С v8.3 (Управляемые формы) 1С:Комплексная автоматизация Управленческий учет Торговля и дистрибуция
← На главную

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

Тест Гилева: что он показывает на самом деле

Рассмотрим один из самых популярных инструментов — Тест Гилева (TPC-1C). Это синтетический тест, который измеряет производительность связки «платформа 1С — СУБД — сервер» в однопоточном режиме. Это критически важный момент: тест показывает, насколько быстро процессор и дисковая подсистема могут обработать одну последовательную задачу.

Проанализируем результаты теста в условных единицах («попугаях»):

  1. Ниже 15: Очень низкий показатель. Работа в современных конфигурациях будет некомфортной.
  2. 15–25: Удовлетворительно. Подходит для небольших баз с малым количеством пользователей.
  3. 25–35: Хороший результат. Оптимально для большинства внедрений 1С.
  4. 35–50: Высокий результат. Достигается при высокой тактовой частоте процессора (от 4 ГГц).
  5. Выше 50: Идеально. Максимальная производительность для самых нагруженных систем.

Важное замечание: Высокий балл в тесте Гилева (например, 100500, как шутят на форумах) не гарантирует, что форма подбора будет открываться мгновенно. Тест не учитывает блокировки, неэффективные запросы в коде и проблемы многопользовательской работы. Если тест показывает 40 единиц, а подбор тормозит — причину нужно искать не в "железе", а в логике работы программы или настройках СУБД.

Диагностика медленной работы подбора товаров

Если пользователи жалуются на конкретную операцию, например, ПодборТоваров, первым делом необходимо выяснить, на что именно тратится время. Для этого разберем по шагам методику замера производительности.

Воспользуемся встроенным инструментом Замер производительности в Конфигураторе:

  1. Запустите сеанс пользователя в режиме отладки.
  2. В Конфигураторе выберите меню Отладка — Замер производительности.
  3. Выполните в пользовательском режиме ту самую операцию, которая тормозит (например, откройте форму подбора и дождитесь появления списка товаров).
  4. Вернитесь в Конфигуратор и остановите замер.

Проанализируем полученную таблицу. Обратите внимание на колонки "Число вызовов" и "Чистое время". Часто в 1С:КА 2.4 проблема кроется в динамическом расчете цен и остатков. Программа пытается в реальном времени рассчитать скидки для каждой строки, отображаемой в списке, что создает колоссальную нагрузку на сервер приложений и базу данных.

Настройка SQL Server для оптимальной работы

Выясним причину, по которой СУБД может "задумываться" при выполнении запросов. Если регламентные операции в SQL не выполняются, производительность будет неизбежно падать. Проанализируем основные настройки:

1. Обновление статистики (Update Statistics). Это самая частая причина деградации производительности. SQL Server строит план выполнения запроса на основе статистики о данных. Если она устарела, сервер выберет неоптимальный путь, и простейший подбор товара может выполняться минуты вместо секунд.

2. Настройка MAXDOP. Параметр Max Degree of Parallelism определяет, сколько ядер процессора может использовать один запрос. Для 1С рекомендуется устанавливать значение 1 (для старых версий) или небольшое число (2–4) для современных многоядерных систем. Значение 0 (использование всех ядер) часто приводит к взаимным блокировкам и "зависанию" всей системы из-за одного тяжелого отчета.

3. Сбор статистики ожиданий. Для глубокого анализа используйте скрипты (например, скрипты Пола Рэндала) для анализа Wait Statistics. Это поможет понять, во что упирается сервер: в чтение с дисков, в нехватку оперативной памяти или в ожидание блокировок от других пользователей.

Влияние прав доступа и RLS

Разберем ситуацию, когда "у админа всё летает, а у пользователей тормозит". В 1С это классический признак работы механизма RLS (Row Level Security) — ограничение прав на уровне записей.

Когда обычный пользователь открывает подбор, система автоматически добавляет к каждому запросу дополнительные условия, проверяя, имеет ли он право видеть конкретный склад, организацию или контрагента. Эти условия могут превратить простой запрос в огромный код на несколько страниц, который СУБД обрабатывает очень долго. У администратора 1С эти проверки игнорируются, поэтому работа идет быстрее.

Для решения этой проблемы рассмотрим следующие шаги:

Технические регламенты для системного администратора

Чтобы система работала стабильно, необходимо внедрить обязательный список регламентных работ. Рассмотрим их подробнее:

Регламентные задачи SQL


-- Пример команды для обновления статистики во всей базе
EXEC sp_updatestats;

Помимо обновления статистики, необходимо настроить:

  1. Реорганизация индексов: выполняется ежедневно в часы минимальной нагрузки. Помогает устранить фрагментацию без блокировки таблиц.
  2. Перестройка индексов (Rebuild): выполняется еженедельно. Полностью пересоздает индексы, что значительно ускоряет поиск данных.
  3. Очистка процедурного кэша: иногда SQL Server "запоминает" плохой план запроса. Очистка кэша заставляет его пересчитать планы заново.

Настройки электропитания

Проанализируем настройки самого сервера. Для 1С критически важен режим "Высокая производительность" (High Performance). Это касается как настроек схемы электропитания в Windows Server, так и настроек в BIOS сервера (отключение C-States, Intel SpeedStep и т.д.). Если процессор постоянно сбрасывает частоту для экономии энергии, 1С будет работать рывками, а тест Гилева покажет низкий результат.

Работа с кэшем и временными файлами

Часто причиной локальных "тормозов" у конкретных пользователей является разросшийся или поврежденный кэш 1С. Выясним, как это исправить:

  1. Очистите папку кэша в профиле пользователя (AppData\Local\1C и AppData\Roaming\1C).
  2. Убедитесь, что антивирус на сервере не проверяет файлы базы данных (.mdf, .ldf) и временные файлы сервера 1С.
  3. Проверьте наличие свободного места на дисках, где расположены временные файлы (tempdb) SQL-сервера.

Подводя итог, можно сказать: производительность подбора в КА 2.4 — это комплексная задача. Начните с замера производительности, чтобы найти "узкое место" в коде, проверьте настройки SQL и обязательно убедитесь, что сервер работает в режиме максимальной мощности. Только после устранения инфраструктурных проблем стоит переходить к оптимизации запросов и кода конфигурации.

← На главную