Администрирование · 10 мин
Что происходит в 1С: как устроена работа программы изнутри
Что происходит внутри 1С: как работают сеансы, фоновые и регламентные задания, почему программа тормозит и зависает, и как диагностировать проблему.
Когда пользователь нажимает кнопку «Провести» или открывает отчёт, внутри 1С запускается цепочка процессов: платформа обращается к базе данных, выполняет код конфигурации, двигает регистры, проверяет права и блокировки. Понимание того, что именно происходит в этот момент, помогает объяснить типичные симптомы — зависания, длительное проведение документов, ошибки блокировок и «внезапные» фоновые операции, которые нагружают сервер без видимой причины.
1С состоит из трёх уровней: клиентское приложение (тонкий, толстый или веб-клиент), сервер 1С:Предприятия (или файловый режим без сервера) и СУБД, где физически хранятся данные. Действие пользователя проходит через все три уровня, и проблема может возникнуть на любом из них. Поэтому диагностика всегда начинается с вопроса: где именно «застрял» запрос — на клиенте, на сервере или в базе данных.
Кроме действий пользователей, в системе постоянно работают невидимые механизмы: регламентные задания, фоновые процессы, очереди обмена данными, полнотекстовый поиск. Именно они чаще всего объясняют ситуацию «никто ничего не делает, а сервер загружен».
Как устроена работа 1С: клиент, сервер и база данных
В файловом режиме платформа работает с базой напрямую: каждый пользователь читает и пишет файл 1Cv8.1CD по сети. Это просто, но плохо масштабируется — при одновременной работе нескольких десятков пользователей конкуренция за файл становится узким местом, а риск повреждения данных при сбое сети выше.
В клиент-серверном режиме между пользователем и базой стоит сервер 1С:Предприятия (процессы ragent, rmngr, rphost). Клиент отправляет вызовы на сервер, сервер выполняет код и формирует SQL-запросы к СУБД (MS SQL Server, PostgreSQL и другим поддерживаемым). Именно рабочие процессы rphost выполняют основную вычислительную работу, и по их загрузке в диспетчере задач или консоли кластера видно, «копается» ли сервер в данных.
Ключевое следствие: медленный отчёт — это почти всегда медленный запрос к СУБД или неоптимальный код на сервере, а не «медленный компьютер бухгалтера». Менять клиентский ПК в такой ситуации бесполезно.
Что происходит при проведении документа
Проведение документа — самая нагруженная типовая операция. Платформа открывает транзакцию в СУБД, выполняет код модуля проведения, записывает движения по регистрам (накопления, сведений, бухгалтерии), контролирует остатки и отрицательные значения, а затем фиксирует транзакцию. Пока транзакция не завершена, изменённые записи заблокированы для других пользователей.
Если документ проводится долго, причины обычно такие: большой объём движений, контроль остатков по огромному регистру без нужных индексов, неоптимальные запросы в коде проведения или ожидание блокировки, которую держит другой сеанс. Второй пользователь, проводящий документ по тем же товарам в это же время, будет ждать — и в журнале появится ошибка «Конфликт блокировок» или превышение времени ожидания.
Практический вывод: массовое перепроведение документов в рабочее время — почти гарантированный источник блокировок и жалоб пользователей. Такие операции планируют на нерабочие часы.
Регламентные и фоновые задания: невидимая нагрузка
Регламентные задания — это операции, которые платформа запускает по расписанию: обмен с банками и сайтами, загрузка курсов валют, обновление полнотекстового поиска, расчёт итогов, синхронизация с другими базами. Фоновые задания — это выполнение конкретных процедур, запущенных пользователем или кодом (например, «выполнить обработку в фоне»).
Типичная ситуация: утром все жалуются на тормоза, а причина — регламентное задание полной синхронизации данных, назначенное на 9:00. Расписание заданий смотрят в разделе «Администрирование — Регламентные и фоновые задания» (в типовых конфигурациях) или в консоли заданий. Там же видно, когда задание выполнялось в последний раз и завершилось ли оно ошибкой.
Если задание «зависло», оно может держать блокировки и потреблять ресурсы часами. Признаки: состояние «Выполняется» аномально долго, растущее потребление памяти процессом rphost, ошибки в журнале регистрации по этому заданию.
- 1Откройте консоль кластера серверов 1С и посмотрите список сеансов: кто подключён и какие фоновые задания активны.
- 2В типовой конфигурации откройте «Администрирование — Активные пользователи» и «Регламентные и фоновые задания».
- 3Проверьте журнал регистрации на ошибки за последний час: блокировки, ошибки СУБД, падения заданий.
- 4На сервере СУБД посмотрите активные запросы и ожидания (например, Activity Monitor в MS SQL Server).
- 5Сопоставьте: какой сеанс порождает тяжёлый запрос — это и есть источник проблемы.
Блокировки: почему пользователи «мешают» друг другу
1С использует два вида блокировок: объектные (в памяти сервера, например при изменении одного и того же документа) и транзакционные (на уровне СУБД при записи данных). Ошибка «Конфликт блокировки при выполнении транзакции» означает, что два сеанса попытались изменить пересекающиеся данные одновременно.
В типовых конфигурациях включён управляемый режим блокировок, который снижает количество конфликтов, но не убирает их полностью. Частые источники: одновременное проведение документов по одному складу, запись в один справочник из разных сеансов, длительные транзакции в неоптимальном коде.
Диагностируют блокировки через журнал регистрации (события с ошибками ожидания) и средства СУБД. Если конфликты регулярны, смотрят, какая операция их вызывает, и либо разводят операции по времени, либо оптимизируют код — сокращая время транзакции.
Загрузку процессов rphost и СУБД, активные регламентные задания
Антивирус на ПК, сеть, какой именно документ или отчёт он открывает
Журнал регистрации: какие объекты и в какое время конфликтуют
Регламентные задания, очереди обмена, обновление поиска
Почему 1С «зависает»: типичные сценарии
Тяжёлый отчёт или запрос
Отчёт по большому периоду без отборов может вычитать миллионы записей. Пока запрос выполняется, сеанс пользователя «висит», а СУБД занята. Признак — высокая загрузка процессора или диска на сервере СУБД при одном активном сеансе. Решение: ограничивать период, использовать отборы, переносить тяжёлые отчёты на нерабочее время или выносить в фоновое выполнение.
Динамическое обновление и обновление конфигурации
При обновлении конфигурации базы данных платформа реструктуризирует таблицы — на больших базах это занимает заметное время и требует монопольного доступа. Динамическое обновление позволяет не выгонять пользователей, но оставляет «старые» версии объектов в памяти до перезапуска сеансов и подходит не для всех изменений.
Обмены данными
Синхронизация с другими базами, сайтом или периферийными узлами читает и пишет большие пакеты данных. Во время обмена растёт нагрузка на СУБД и возможны блокировки изменяемых объектов. Ошибки обмена видны в журнале регистрации и в списке сообщений обмена.
Как диагностировать, что происходит в базе прямо сейчас
Основные инструменты администратора: консоль кластера серверов (сеансы, соединения, рабочие процессы), журнал регистрации в конфигураторе (ошибки, блокировки, действия пользователей), технологический журнал (детальная трассировка запросов и вызовов — включается настройкой logcfg.xml) и средства мониторинга СУБД.
Порядок диагностики простой: сначала фиксируют симптом и время его появления, затем находят активные сеансы и задания в этот момент, после — смотрят журнал регистрации и активность СУБД. В большинстве случаев источник находится на этом этапе без глубокого анализа кода.
Технологический журнал включают только на время диагностики: постоянная запись подробных событий замедляет систему и быстро заполняет диск.
Частые вопросы
Почему 1С тормозит именно в начале рабочего дня?
Чаще всего утром срабатывают регламентные задания, отложенные на это время: синхронизации, загрузка данных, пересчёты. Дополнительно все пользователи одновременно запускают сеансы и открывают отчёты. Проверьте расписание регламентных заданий и разнесите их на раннее утро до прихода сотрудников.
Что делать, если сеанс пользователя завис?
Сначала проверьте в консоли кластера, не выполняет ли сеанс длительную операцию — возможно, стоит подождать. Если сеанс явно «мёртвый» (нет активности длительное время), его можно завершить через консоль кластера. Не завершайте сеанс, который сейчас проводит документы или выполняет обмен: транзакция откатится, и операцию придётся повторять.
Откуда берутся «лишние» сеансы в консоли кластера?
Кроме сеансов пользователей, в списке видны сеансы фоновых и регламентных заданий, соединений веб-сервисов и внешних подключений. Также «спящие» сеансы остаются после некорректного закрытия клиента и удаляются по тайм-ауту. Это нормальное поведение, а не признак взлома.
Опасно ли завершать процесс rphost через диспетчер задач?
Да. Принудительное завершение рабочего процесса обрывает все сеансы, которые он обслуживал, с откатом незавершённых транзакций. Кластер перезапустит процесс автоматически, но пользователи потеряют несохранённую работу. Завершать rphost стоит только при явном зависании процесса и после попытки штатного решения.
Как понять, что проблема в СУБД, а не в 1С?
Если в мониторинге СУБД видны длительные запросы, ожидания блокировок или высокая нагрузка на диск, а код 1С при этом просто ждёт ответа — источник на уровне базы данных. Проверьте актуальность статистики и индексов, наличие регламентного обслуживания базы (обновление статистики, дефрагментация индексов) и ресурсы сервера СУБД.
Нужно ли отключать регламентные задания на файловой базе?
В файловом режиме регламентные задания выполняются в сеансе, который их запустил, и могут мешать работе пользователя-«исполнителя». Лишние задания разумно отключить, а необходимые — выполнять в отдельном выделенном сеансе или по расписанию в нерабочее время.
Что важно запомнить
В 1С одновременно работают сеансы пользователей, фоновые задания и запросы к СУБД, а конфликты между ними дают блокировки и тормоза. Диагностика всегда идёт по цепочке: симптом — активные сеансы и задания — журнал регистрации — состояние СУБД. Тяжёлые операции планируйте на нерабочее время и не прерывайте транзакции принудительно.