Вопросы производительности в системах на платформе 1С:Предприятие становятся критическими по мере роста объема данных, увеличения количества пользователей и усложнения бизнес-логики. Проблемы быстродействия проявляются в виде длительного ожидания при открытии форм, медленном проведении документов, зависаниях при формировании отчетов. Решение этих проблем требует системного подхода, охватывающего все уровни архитектуры от инфраструктурных решений до оптимизации кода и запросов.
Перенос в облако
Перенос информационной базы 1С в облачную инфраструктуру это важное решение, советуют https://www.asyst-pro.ru/, влияющее на все аспекты производительности. Облачные провайдеры предлагают эластичные вычислительные мощности, которые можно масштабировать в зависимости от текущей нагрузки. Это особенно актуально для систем с неравномерной нагрузкой например, при закрытии отчетных периодов или массовых расчетах.
Современные облачные платформы предоставляют высокопроизводительные дисковые системы с низкой задержкой (IOPS), что критически важно для баз данных 1С.
Использование SSD-дисков с поддержкой NVMe и систем хранения данных с высокой пропускной способностью позволяет существенно сократить время выполнения дисковых операций. Облачные решения также предлагают встроенные механизмы резервного копирования и высокой доступности, что повышает надежность системы.
Важным преимуществом облачной модели является возможность быстрой миграции на более производительные конфигурации без капитальных затрат на приобретение оборудования. При этом необходимо правильно спроектировать сетевую инфраструктуру для минимизации задержек между клиентскими приложениями и серверами.
Использование выделенных каналов связи или VPN-подключений с качеством обслуживания (QoS) обеспечивает стабильную работу распределенных пользователей.
Индексы базы данных
Оптимизация индексов в базе данных является одним из наиболее эффективных способов повышения производительности запросов. Индексы представляют собой структуры данных, которые позволяют СУБД быстро находить нужные строки без полного сканирования таблиц. В контексте 1С это особенно важно, поскольку платформа генерирует сложные SQL-запросы при работе с регистрами, документами и справочниками.
Анализ планов выполнения запросов показывает, какие индексы используются, а где происходит сканирование таблиц. Для таблиц регистров накопления, имеющих большой объем данных, критически важно создавать индексы по полям периода, измерениям и ресурсам, участвующим в условиях отбора. Индексы должны покрывать наиболее частые комбинации полей в секциях WHERE и ORDER BY.
Создание избыточного количества индексов может снизить производительность операций записи, поскольку каждый индекс требует обновления при изменении данных. Необходим баланс между скоростью чтения и скоростью записи.
Регулярный анализ использования индексов с помощью средств мониторинга СУБД позволяет выявлять неиспользуемые или дублирующиеся индексы для их удаления. В PostgreSQL и MS SQL существуют специализированные расширения для автоматического анализа и рекомендаций по созданию индексов на основе статистики выполнения запросов.
Блокировки транзакций
Блокировки в 1С возникают при конкурентном доступе к одним и тем же данным. Длительные транзакции, удерживающие блокировки, приводят к ожиданию других пользователей и снижению общей производительности системы. Проблема усугубляется при использовании неоптимальных уровней изоляции транзакций или при выполнении ресурсоемких операций внутри транзакции.
Классическая ситуация проведение документа в монопольном режиме при работе с регистрами остатков. В этом случае на время проведения блокируются все записи регистра, что исключает возможность параллельного проведения других документов. Для снижения влияния блокировок следует минимизировать время выполнения транзакций, вынося за их пределы все вычисления, не требующие атомарности.
Анализ конфликтов блокировок проводится с использованием технологического журнала и средств мониторинга СУБД. События TLOCK, TTIMEOUT и TDEADLOCK в технологическом журнале позволяют идентифицировать проблемные участки кода и сеансы, вызывающие блокировки. Рекомендуется использовать управляемые блокировки для явного контроля доступа к данным и применять механизм "Оптимистические блокировки" там, где это допустимо бизнес-логикой.
Монопольный режим
Монопольный режим в 1С обеспечивает эксклюзивный доступ к информационной базе для выполнения операций, требующих полной изоляции от других пользователей. Обновление конфигурации, перестроение индексов, массовая обработка данных типичные сценарии использования монопольного режима. В этом режиме снимаются все ограничения на выполнение операций, но полностью блокируется работа других пользователей.
Длительное нахождение базы в монопольном режиме неприемлемо для производственных систем с круглосуточной работой. Решением становится планирование таких операций на периоды минимальной нагрузки с предварительным уведомлением пользователей. Альтернативный подход использование фоновых заданий с обработкой данных частями, что позволяет избежать полной блокировки системы.
Следует различать монопольный режим базы данных и блокировки на уровне СУБД. Монопольный режим 1С не отключает механизмы блокировок СУБД, поэтому даже в монопольном режиме возможны конфликты с другими сессиями, если они используют внешние подключения. Для выполнения особо критичных операций рекомендуется использовать отдельный экземпляр базы данных, созданный из резервной копии.
Управляемые формы
Управляемые формы представляют собой современный подход к построению пользовательского интерфейса в 1С, основанный на декларативном описании элементов и событийной модели.
- Переход на управляемые формы дает значительный выигрыш в производительности по сравнению с обычными формами за счет оптимизации передачи данных между клиентом и сервером. Данные передаются только при необходимости, а не целиком при открытии формы.
- Ключевой принцип работы управляемых форм разделение контекста выполнения на клиентский и серверный. Весь код, работающий с данными, должен выполняться на сервере, в то время как клиентская часть отвечает за отображение и обработку действий пользователя.
- Использование серверных вызовов с параметрами и возвращаемыми значениями минимизирует объем передаваемых данных и сокращает время ожидания пользователя.
- Важной особенностью управляемых форм является механизм динамического обновления данных с использованием реквизитов формы и элементов-таблиц. Рекомендуется использовать пакетное обновление данных с отключением обновления интерфейса на время выполнения операций.
Правильное использование обработчиков событий формы (ПриСозданииНаСервере, ПриЗаписиНаСервере) позволяет локализовать бизнес-логику на сервере, снижая нагрузку на клиентские машины.
Тяжелые запросы

Тяжелые запросы в 1С это запросы, выполняющиеся длительное время и потребляющие значительные ресурсы СУБД и сервера приложений. Причинами могут быть отсутствие индексов, неоптимальная структура запроса, избыточные соединения таблиц, большие объемы выборки без ограничений. Такие запросы часто становятся причиной жалоб пользователей на "зависания" системы.
Выявление тяжелых запросов осуществляется с помощью технологического журнала, в котором фиксируются все события DBMSSQL с указанием длительности выполнения и текста запроса. Анализ контекста выполнения показывает, какой участок кода 1С порождает проблемный запрос. Для сложных запросов рекомендуется использовать механизм временных таблиц и пакетных запросов, позволяющий разбить сложную логику на этапы с промежуточной материализацией данных.
Оптимизация тяжелых запросов часто сводится к пересмотру условий отбора. Использование индексированных полей в секциях WHERE и JOIN, исключение неэффективных функций в условиях, оптимизация сортировок и группировок дают значительный прирост производительности. При работе с большими регистрами важно использовать параметры запросов, позволяющие ограничивать выборку по периодам и другим ключевым измерениям.
СУБД
- Выбор и настройка СУБД является фундаментом производительности всей системы 1С. Платформа поддерживает различные СУБД: MS SQL Server, PostgreSQL, Oracle, IBM DB2. Каждая из них имеет свои особенности оптимизации, требующие специальных знаний и подходов. MS SQL Server традиционно используется в большинстве проектов и хорошо зарекомендовал себя в крупных системах.
- Параметры конфигурации СУБД существенно влияют на производительность. Настройка памяти, параллелизма, параметров ввода-вывода должна соответствовать нагрузке и объему данных.
- Для MS SQL Server важны настройка максимального объема памяти, количества параллельных потоков, порога параллелизма, параметров автодоращивания файлов данных. Использование сжатия данных для больших таблиц и индексов позволяет сократить дисковое пространство и ускорить ввод-вывод.
Регулярное обслуживание баз данных включает обновление статистики, перестроение индексов, очистку журналов транзакций. В PostgreSQL важны настройка параметров shared_buffers, effective_cache_size, work_mem, maintenance_work_mem. Использование расширений для мониторинга и анализа производительности, таких как pg_stat_statements для PostgreSQL или Query Store для MS SQL, позволяет получать детальную информацию о выполняемых запросах и их планах.
Серверные контексты
Серверные контексты в 1С определяют среду выполнения серверного кода. Каждое подключение к информационной базе создает свой серверный контекст, в котором выполняются вызовы методов модулей, запросы к базе данных. Понимание особенностей работы серверных контекстов критично для оптимизации производительности многопользовательских систем.
При работе с серверными контекстами важно учитывать, что каждый контекст имеет собственное кэширование данных, метаданных и планов запросов. Создание избыточного количества контекстов приводит к высокому потреблению памяти и увеличению времени на инициализацию. Рекомендуется использовать пул соединений для переиспользования контекстов и сокращения накладных расходов.
Серверные вызовы в управляемых формах должны быть спроектированы с учетом минимизации количества обращений к серверу. Группировка серверных вызовов в один пакет с передачей всех необходимых параметров позволяет сократить сетевой трафик и время выполнения. Использование механизма серверных контекстов для выполнения фоновых заданий позволяет распределять нагрузку на сервере и не блокировать работу пользователей.
Кластер серверов
Кластеризация серверов 1С обеспечивает масштабирование системы и высокую доступность. Кластер состоит из рабочих процессов (rphost), менеджера кластера (rmngr) и агента сервера (ragent). Правильная конфигурация кластера позволяет распределять нагрузку между серверами, обеспечивать отказоустойчивость и балансировку запросов.
Настройка кластера включает определение количества рабочих процессов на сервер, распределение информационных баз по процессам, настройку параметров сессий и таймаутов. Важно правильно оценить нагрузку и подобрать аппаратные ресурсы для каждого сервера кластера. Использование механизма "Горячий резерв" обеспечивает автоматическое переключение на резервный сервер в случае сбоя основного.
Мониторинг состояния кластера осуществляется с помощью консоли администрирования серверов 1С. Отслеживание загрузки рабочих процессов, количества активных сессий, времени выполнения операций позволяет своевременно выявлять перегрузки и перераспределять нагрузку. Рекомендуется регулярно анализировать логи работы кластера для выявления аномалий и узких мест.
Технологический журнал
Технологический журнал это мощнейший инструмент диагностики и анализа производительности системы 1С. Этот механизм фиксирует все ключевые события, происходящие на различных уровнях платформы от выполнения SQL-запросов до ошибок и блокировок. Настройка технологического журнала осуществляется через XML-файл logcfg.xml, расположенный в каталоге конфигурации платформы.
Гибкость настройки позволяет собирать только необходимые события с определенными фильтрами. Например, для поиска медленных запросов достаточно настроить сбор событий DBMSSQL с фильтром по длительности более 5 секунд. Это значительно сокращает объем собираемых логов и упрощает анализ.

Важно правильно определить каталог для хранения логов и время хранения, так как технологический журнал может генерировать гигабайты данных.
Основные события технологического журнала включают DBMSSQL (запросы к MS SQL), DBPOSTGRS (запросы к PostgreSQL), EXCP (исключения), CALL (серверные вызовы), TLOCK (блокировки), TDEADLOCK (взаимные блокировки), TTIMEOUT (таймауты ожидания). Каждое событие содержит множество свойств, включая длительность выполнения, контекст вызова, текст SQL-запроса.
Анализ технологического журнала позволяет восстановить полную картину происходящего в системе. Инструменты для парсинга и визуализации данных технологического журнала, такие как RDV-LogT, позволяют группировать события по операциям пользователей и фоновым заданиям, что значительно упрощает поиск причин замедлений.
План выполнения запроса
План выполнения запроса является ключевым инструментом для понимания того, как СУБД выполняет запрос и какие операции являются наиболее затратными. Анализ плана позволяет выявить сканирование таблиц вместо использования индексов, неэффективные соединения, сортировки на диске и другие проблемы, снижающие производительность.
Для получения плана выполнения запроса в 1С используется событие DBMSSQL технологического журнала, которое содержит текст выполненного SQL-запроса. Этот текст можно скопировать в среду управления СУБД (SSMS для MS SQL, pgAdmin для PostgreSQL) и получить план выполнения с визуализацией операций и их стоимости. Важно анализировать не только текст запроса, но и статистику использования индексов.
В плане выполнения обращают внимание на операции с высокой стоимостью, особенно Index Scan (сканирование индекса) и Table Scan (сканирование таблицы). Оптимальный план должен использовать Index Seek (поиск по индексу) для больших таблиц. Наличие сортировок на диске указывает на нехватку памяти для операций сортировки в оперативной памяти, что требует настройки параметров СУБД.
Анализ планов выполнения должен стать регулярной практикой при разработке и оптимизации запросов. Использование подсказок оптимизатору (hints) допустимо только в исключительных случаях, когда оптимизатор СУБД по каким-то причинам выбирает неоптимальный план. Предпочтительным подходом является изменение структуры запроса или создание необходимых индексов для обеспечения оптимального выполнения.
Советы по комплексной оптимизации
Оптимизация производительности 1С требует системного подхода и постоянного мониторинга. Первым шагом всегда должен быть анализ текущего состояния системы с использованием технологического журнала и средств мониторинга. Сбор статистики по медленным операциям, блокировкам, ошибкам позволяет определить приоритетные направления оптимизации.
Инфраструктурные решения, такие как перенос в облако, кластеризация, использование высокопроизводительных СУБД, должны соответствовать масштабу системы и бюджету проекта. Внедрение управляемых форм и современных версий платформы дает значительный прирост производительности и улучшает пользовательский опыт.
Разработчики должны владеть навыками оптимизации запросов, анализа планов выполнения и работы с индексами. Код должен проходить ревью с точки зрения производительности, особенно в критических участках проведение документов, отчеты с большим объемом данных, обработки с циклами и сложной логикой.
Регулярный анализ технологического журнала позволяет предотвращать проблемы на ранних стадиях. Внедрение системы мониторинга с оповещениями о критических событиях обеспечивает быстрое реагирование на инциденты. Персонал должен быть обучен базовым методам диагностики и уметь собирать информацию для анализа специалистами.
