К статье
Практический материал

Администрирование · 10 мин

Что происходит в 1С: как устроена работа программы изнутри

Что происходит внутри 1С: как работают сеансы, фоновые и регламентные задания, почему программа тормозит и зависает, и как диагностировать проблему.

Когда пользователь нажимает кнопку «Провести» или открывает отчёт, внутри 1С запускается цепочка процессов: платформа обращается к базе данных, выполняет код конфигурации, двигает регистры, проверяет права и блокировки. Понимание того, что именно происходит в этот момент, помогает объяснить типичные симптомы — зависания, длительное проведение документов, ошибки блокировок и «внезапные» фоновые операции, которые нагружают сервер без видимой причины.

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

Кроме действий пользователей, в системе постоянно работают невидимые механизмы: регламентные задания, фоновые процессы, очереди обмена данными, полнотекстовый поиск. Именно они чаще всего объясняют ситуацию «никто ничего не делает, а сервер загружен».

Как устроена работа 1С: клиент, сервер и база данных

В файловом режиме платформа работает с базой напрямую: каждый пользователь читает и пишет файл 1Cv8.1CD по сети. Это просто, но плохо масштабируется — при одновременной работе нескольких десятков пользователей конкуренция за файл становится узким местом, а риск повреждения данных при сбое сети выше.

В клиент-серверном режиме между пользователем и базой стоит сервер 1С:Предприятия (процессы ragent, rmngr, rphost). Клиент отправляет вызовы на сервер, сервер выполняет код и формирует SQL-запросы к СУБД (MS SQL Server, PostgreSQL и другим поддерживаемым). Именно рабочие процессы rphost выполняют основную вычислительную работу, и по их загрузке в диспетчере задач или консоли кластера видно, «копается» ли сервер в данных.

Ключевое следствие: медленный отчёт — это почти всегда медленный запрос к СУБД или неоптимальный код на сервере, а не «медленный компьютер бухгалтера». Менять клиентский ПК в такой ситуации бесполезно.

Что происходит при проведении документа

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

Если документ проводится долго, причины обычно такие: большой объём движений, контроль остатков по огромному регистру без нужных индексов, неоптимальные запросы в коде проведения или ожидание блокировки, которую держит другой сеанс. Второй пользователь, проводящий документ по тем же товарам в это же время, будет ждать — и в журнале появится ошибка «Конфликт блокировок» или превышение времени ожидания.

Практический вывод: массовое перепроведение документов в рабочее время — почти гарантированный источник блокировок и жалоб пользователей. Такие операции планируют на нерабочие часы.

Регламентные и фоновые задания: невидимая нагрузка

Регламентные задания — это операции, которые платформа запускает по расписанию: обмен с банками и сайтами, загрузка курсов валют, обновление полнотекстового поиска, расчёт итогов, синхронизация с другими базами. Фоновые задания — это выполнение конкретных процедур, запущенных пользователем или кодом (например, «выполнить обработку в фоне»).

Типичная ситуация: утром все жалуются на тормоза, а причина — регламентное задание полной синхронизации данных, назначенное на 9:00. Расписание заданий смотрят в разделе «Администрирование — Регламентные и фоновые задания» (в типовых конфигурациях) или в консоли заданий. Там же видно, когда задание выполнялось в последний раз и завершилось ли оно ошибкой.

Если задание «зависло», оно может держать блокировки и потреблять ресурсы часами. Признаки: состояние «Выполняется» аномально долго, растущее потребление памяти процессом rphost, ошибки в журнале регистрации по этому заданию.

Как проверить, что сейчас выполняется в базе
  1. 1
    Откройте консоль кластера серверов 1С и посмотрите список сеансов: кто подключён и какие фоновые задания активны.
  2. 2
    В типовой конфигурации откройте «Администрирование — Активные пользователи» и «Регламентные и фоновые задания».
  3. 3
    Проверьте журнал регистрации на ошибки за последний час: блокировки, ошибки СУБД, падения заданий.
  4. 4
    На сервере СУБД посмотрите активные запросы и ожидания (например, Activity Monitor в MS SQL Server).
  5. 5
    Сопоставьте: какой сеанс порождает тяжёлый запрос — это и есть источник проблемы.

Блокировки: почему пользователи «мешают» друг другу

1С использует два вида блокировок: объектные (в памяти сервера, например при изменении одного и того же документа) и транзакционные (на уровне СУБД при записи данных). Ошибка «Конфликт блокировки при выполнении транзакции» означает, что два сеанса попытались изменить пересекающиеся данные одновременно.

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

Диагностируют блокировки через журнал регистрации (события с ошибками ожидания) и средства СУБД. Если конфликты регулярны, смотрят, какая операция их вызывает, и либо разводят операции по времени, либо оптимизируют код — сокращая время транзакции.

Все пользователи тормозят одновременноПроблема на сервере или в СУБД

Загрузку процессов rphost и СУБД, активные регламентные задания

Тормозит один пользовательПроблема на клиенте или в его операции

Антивирус на ПК, сеть, какой именно документ или отчёт он открывает

Ошибки «конфликт блокировок»Конкуренция сеансов за данные

Журнал регистрации: какие объекты и в какое время конфликтуют

Сервер загружен, но никто не работаетФоновая активность

Регламентные задания, очереди обмена, обновление поиска

Почему 1С «зависает»: типичные сценарии

Тяжёлый отчёт или запрос

Отчёт по большому периоду без отборов может вычитать миллионы записей. Пока запрос выполняется, сеанс пользователя «висит», а СУБД занята. Признак — высокая загрузка процессора или диска на сервере СУБД при одном активном сеансе. Решение: ограничивать период, использовать отборы, переносить тяжёлые отчёты на нерабочее время или выносить в фоновое выполнение.

Динамическое обновление и обновление конфигурации

При обновлении конфигурации базы данных платформа реструктуризирует таблицы — на больших базах это занимает заметное время и требует монопольного доступа. Динамическое обновление позволяет не выгонять пользователей, но оставляет «старые» версии объектов в памяти до перезапуска сеансов и подходит не для всех изменений.

Обмены данными

Синхронизация с другими базами, сайтом или периферийными узлами читает и пишет большие пакеты данных. Во время обмена растёт нагрузка на СУБД и возможны блокировки изменяемых объектов. Ошибки обмена видны в журнале регистрации и в списке сообщений обмена.

Как диагностировать, что происходит в базе прямо сейчас

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

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

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

Типичные ошибки
01
Перезагрузка сервера «для профилактики» вместо поиска причины — проблема возвращается, а данные о состоянии на момент сбоя теряются.
02
Запуск массового перепроведения или тяжёлых обработок в середине рабочего дня — волна блокировок и остановка работы пользователей.
03
Постоянно включённый технологический журнал — лишняя нагрузка и переполнение диска логами.
04
Игнорирование ошибок регламентных заданий — задание падает неделями, а данные (курсы валют, синхронизация) устаревают незаметно.

Частые вопросы

Почему 1С тормозит именно в начале рабочего дня?

Чаще всего утром срабатывают регламентные задания, отложенные на это время: синхронизации, загрузка данных, пересчёты. Дополнительно все пользователи одновременно запускают сеансы и открывают отчёты. Проверьте расписание регламентных заданий и разнесите их на раннее утро до прихода сотрудников.

Что делать, если сеанс пользователя завис?

Сначала проверьте в консоли кластера, не выполняет ли сеанс длительную операцию — возможно, стоит подождать. Если сеанс явно «мёртвый» (нет активности длительное время), его можно завершить через консоль кластера. Не завершайте сеанс, который сейчас проводит документы или выполняет обмен: транзакция откатится, и операцию придётся повторять.

Откуда берутся «лишние» сеансы в консоли кластера?

Кроме сеансов пользователей, в списке видны сеансы фоновых и регламентных заданий, соединений веб-сервисов и внешних подключений. Также «спящие» сеансы остаются после некорректного закрытия клиента и удаляются по тайм-ауту. Это нормальное поведение, а не признак взлома.

Опасно ли завершать процесс rphost через диспетчер задач?

Да. Принудительное завершение рабочего процесса обрывает все сеансы, которые он обслуживал, с откатом незавершённых транзакций. Кластер перезапустит процесс автоматически, но пользователи потеряют несохранённую работу. Завершать rphost стоит только при явном зависании процесса и после попытки штатного решения.

Как понять, что проблема в СУБД, а не в 1С?

Если в мониторинге СУБД видны длительные запросы, ожидания блокировок или высокая нагрузка на диск, а код 1С при этом просто ждёт ответа — источник на уровне базы данных. Проверьте актуальность статистики и индексов, наличие регламентного обслуживания базы (обновление статистики, дефрагментация индексов) и ресурсы сервера СУБД.

Нужно ли отключать регламентные задания на файловой базе?

В файловом режиме регламентные задания выполняются в сеансе, который их запустил, и могут мешать работе пользователя-«исполнителя». Лишние задания разумно отключить, а необходимые — выполнять в отдельном выделенном сеансе или по расписанию в нерабочее время.

Итог

Что важно запомнить

В 1С одновременно работают сеансы пользователей, фоновые задания и запросы к СУБД, а конфликты между ними дают блокировки и тормоза. Диагностика всегда идёт по цепочке: симптом — активные сеансы и задания — журнал регистрации — состояние СУБД. Тяжёлые операции планируйте на нерабочее время и не прерывайте транзакции принудительно.