Устройство платформы 1С:Предприятие 8.3 изнутри: от запуска клиента до записи в базу
Содержание
Программа 1С 8 — это три слоя: платформа (исполняемые файлы 1cv8.exe, 1cv8c.exe и сервер), конфигурация (прикладное решение: Бухгалтерия, ЗУП, УТ) и информационная база, где лежат данные. Платформа исполняет код конфигурации и сама общается с хранилищем данных. Работать она может в двух вариантах: файловом, когда база — один файл 1Cv8.1CD в сетевой папке, и клиент-серверном, когда данные хранит СУБД, а код выполняет кластер серверов
1С.
От выбора варианта зависит почти всё: скорость при 20 пользователях, надёжность при сбое сети, способ резервного копирования и даже то, какие лицензии покупать.
Платформа, конфигурация и база: кто за что отвечает
Удобно представить 1С как игровую приставку и картридж. Приставка — платформа, картридж — конфигурация. Одна и та же платформа 8.3 запускает и Бухгалтерию 3.0, и ЗУП 3.1, и самописную базу склада.
| Слой | Что это | Где находится | Кто обновляет |
|---|---|---|---|
| Платформа | Исполняемые программы, интерпретатор встроенного языка, драйверы СУБД | C:\Program Files\1cv8\<номер версии>\bin | Администратор, установкой дистрибутива |
| Конфигурация | Метаданные (справочники, документы, регистры), формы, модули | Внутри информационной базы | Через Конфигуратор или автообновление |
| Данные | Записи справочников, документов, движения регистров | Файл 1Cv8.1CD или база в СУБД | Пользователи в работе |
Из этого следуют практические вещи:
- 🔹 обновить платформу и обновить конфигурацию — две разные операции, у них разные дистрибутивы;
- 🔹 у каждой конфигурации есть минимальный номер платформы: релиз Бухгалтерии требует платформу с номером не ниже указанного в его описании;
- 🔹 на одном компьютере можно держать несколько версий платформы рядом, каждая в своём каталоге.
Конфигурация внутри базы хранится в двух экземплярах: основная конфигурация (то, что редактирует разработчик в Конфигураторе) и конфигурация базы данных (то, по чему реально работают пользователи). Пока разработчик не выполнит обновление конфигурации базы данных, его правки пользователи не увидят. Отсюда частый вопрос «я всё поменял, а ничего не изменилось».
Файловый и клиент-серверный режим работы 1С 8
Файловый вариант
Вся база — один файл 1Cv8.1CD. Каждый пользователь открывает его напрямую по сети. Отдельного сервера 1С нет: код, помеченный в конфигурации как серверный, выполняется прямо в процессе клиента на компьютере пользователя.
Плюсы: ставится за 10 минут, копия базы — это копия папки. Минусы: при росте числа пользователей растут конфликты блокировок, обрыв сети посреди записи может повредить файл, а тяжёлые отчёты гоняют данные по сети на каждый компьютер.
Клиент-серверный вариант
Данные хранит СУБД: Microsoft SQL Server, PostgreSQL, IBM Db2 или Oracle Database. Между пользователями и СУБД стоит кластер серверов 1С, который выполняет серверный код, держит сеансы и управляет блокировками. Клиент получает только результат — готовую форму или отчёт.
Как клиент находит базу на сервере
Подключение идёт по цепочке, и каждый участник слушает свой порт:
- 🖥️ Клиент обращается к агенту сервера (
ragent), порт по умолчанию 1540. Через агента же работает и консоль администрирования. - 🗂️ Агент передаёт клиента менеджеру кластера (
rmngr), порт 1541. Менеджер знает список баз, сеансов и рабочих процессов. - ⚙️ Менеджер направляет сеанс в рабочий процесс (
rphost). Диапазон портов рабочих процессов по умолчанию 1560–1591, он задаётся в свойствах рабочего сервера. - 🗄️ Рабочий процесс выполняет запросы к СУБД и возвращает клиенту данные.
Если между пользователями и сервером стоит межсетевой экран, открыть нужно весь набор: 1540, 1541 и диапазон рабочих процессов. Открыли только 1540 — клиент «видит» сервер, но падает при входе в базу.
Параметры отказоустойчивости и требования назначения функциональности настраиваются тоже в свойствах рабочего сервера, а не в свойствах базы.
Границы в 5 и 15 пользователей — практический ориентир, а не правило платформы. Решает не только число людей, но и объём документов в день и тяжесть отчётов.
Типы клиентов и режимы запуска
Пользователь видит 1С через один из клиентов. Они отличаются тем, сколько работы берут на себя.
| Клиент | Файл / способ | Формы | Как подключается |
|---|---|---|---|
| Толстый клиент | 1cv8.exe | Обычные и управляемые | Напрямую к файлу или к кластеру |
| Тонкий клиент | 1cv8c.exe | Только управляемые | К файлу, к кластеру или через веб-сервер по HTTP |
| Веб-клиент | Браузер | Только управляемые | Через опубликованную на веб-сервере базу |
| Мобильный клиент | Приложение на телефоне | Управляемые | Через веб-сервер |
Современные конфигурации (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) написаны на управляемых формах с интерфейсом «Такси» и рассчитаны на тонкий клиент. Толстый клиент нужен для старых самописных решений на обычных формах и для Конфигуратора.
Режимы запуска
У 1cv8.exe два основных режима:
- 👤
ENTERPRISE— режим «1С:Предприятие», обычная работа пользователя; - 🛠️
DESIGNER— Конфигуратор: разработка, обновление конфигурации, выгрузка и загрузка.dt, тестирование и исправление.
Запуск из командной строки позволяет не выбирать базу в списке:
rem Файловая база, режим предприятия, с очисткой кэша
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Иванов" /P"пароль" /ClearCache
rem Клиент-серверная база, Конфигуратор
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /S"srv1c\buh_main" /N"Администратор"
Номер версии в пути подставьте свой. 1cestart.exe — стартер: он сам выбирает нужную версию платформы по настройкам базы в списке. Сам список баз пользователя хранится в файле %APPDATA%\1C\1CEStart\ibases.v8i.
Где выполняется код
В модулях управляемых форм каждая процедура помечена директивой: &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. Клиентский код работает на компьютере пользователя, серверный — в рабочем процессе кластера. Каждый вызов сервера — это сетевой запрос, поэтому разработчики стараются делать их пореже. В файловом варианте «сервер» живёт в том же процессе клиента, и разница почти не видна, пока база не переезжает на кластер.
Как 1С хранит данные и проводит транзакции
Конфигуратор описывает объекты на уровне метаданных: справочник «Номенклатура», документ «Реализация», регистр накопления «Товары на складах». Платформа сама превращает их в таблицы СУБД со служебными именами вроде _Reference32 или _AccumRg1520. Напрямую писать в эти таблицы SQL-запросами нельзя: платформа не узнает об изменениях, итоги регистров разойдутся.
Запись данных всегда идёт в транзакции. Когда бухгалтер проводит документ, платформа в одной транзакции:
- записывает сам документ;
- удаляет старые движения по регистрам;
- записывает новые движения;
- пересчитывает итоги регистров.
Если на любом шаге возникла ошибка — отрицательный остаток, конфликт блокировок, обрыв связи — откатывается всё. Половины проведённого документа не бывает.
Блокировки
Чтобы два пользователя не списали один и тот же остаток, платформа ставит блокировки. В свойствах конфигурации есть параметр «Режим управления блокировкой данных» с тремя значениями: Автоматический, Управляемый, Автоматический и управляемый.
- 🔒 Автоматический — блокировки ставит СУБД. На MS SQL это часто приводит к блокировке лишних строк и целых таблиц.
- 🔐 Управляемый — блокировки ставит менеджер блокировок 1С, точно по нужным записям. Типовые конфигурации работают в этом режиме.
Если пользователь ждёт чужую блокировку дольше заданного таймаута, он получает ошибку со словами Конфликт блокировок при выполнении транзакции и Превышено максимальное время ожидания предоставления блокировки. Это не поломка базы: кто-то держал те же данные долгой транзакцией — массовым перепроведением, закрытием месяца, обменом.
Закрытие месяца и групповое перепроведение запускайте, когда в базе мало людей. Так ошибок блокировок станет заметно меньше без всяких настроек.
Фоновые и регламентные задания, службы сервера
Не всё в 1С делает человек нажатием кнопки. Часть работы платформа выполняет сама.
- ⏱️ Регламентные задания — действия по расписанию: загрузка курсов валют, обмен с сайтом, получение писем, обновление классификатора банков. Список и расписание задаются в конфигурации, включаются в типовых решениях в разделе
Администрирование → Обслуживание. - 🔄 Фоновые задания — долгие операции, запущенные из кода, чтобы не «замораживать» форму: формирование тяжёлого отчёта, групповая обработка.
В клиент-серверном варианте задания выполняет кластер, и пользователю не нужно держать 1С открытой. В свойствах базы в консоли кластера есть флажок блокировки регламентных заданий — его включают на копиях базы, чтобы копия не начала отправлять реальные обмены и письма.
В файловом варианте регламентные задания выполняются только пока база открыта: их подхватывает один из запущенных клиентских сеансов. Закрыли все сеансы на ночь — ночной обмен не прошёл.
Какие службы работают на сервере
На Windows при установке сервера 1С как службы появляется служба «Агент сервера 1С:Предприятия 8.3». Она запускает ragent, а он — rmngr и rphost. Для администрирования через утилиту rac дополнительно нужен сервер администрирования ras, по умолчанию на порту 1545.
rem Список кластеров и сеансов (сервер администрирования ras должен быть запущен)
rac cluster list
rac session list --cluster=<id кластера>
Остальные параметры смотрите в справке rac help.
Перезапуск службы агента или завершение рабочего процесса rphost обрывает сеансы всех пользователей, а несохранённые документы теряются. Делайте это вне рабочего времени или после предупреждения пользователей.
Установка платформы: что выбрать в установщике
Дистрибутив платформы для Windows ставит компоненты на выбор. Знать их полезно, чтобы не поставить лишнее и не пропустить нужное.
| Компонент | Когда нужен |
|---|---|
| 1С:Предприятие | Толстый клиент и Конфигуратор — разработчику и администратору |
| 1С:Предприятие — тонкий клиент | Обычному пользователю |
| Сервер 1С:Предприятия | Только на машине, которая будет сервером кластера |
| Модули расширения веб-сервера | Для публикации базы на Apache или IIS (веб-клиент, тонкий клиент по HTTP) |
| Администрирование сервера | Консоль кластера |
| Интерфейсы на разных языках | Если пользователи работают не на русском |
При установке сервера установщик предлагает поставить его как службу Windows и выбрать пользователя, от имени которого служба работает. Лучше выделить отдельную учётную запись, а не запускать службу от администратора.
Консоль администрирования кластера — оснастка MMC. Если после установки или обновления платформы консоль не открывается, нужно перерегистрировать библиотеку radmin.dll нужной версии, от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"
После этого базу добавляют в кластер через консоль или прямо из окна запуска 1С кнопкой «Добавить» с вариантом «На сервере 1С:Предприятия». Для веб-доступа базу публикуют из Конфигуратора: Администрирование → Публикация на веб-сервере.
Лицензии и что ограничивает скорость 1С
Платформа без лицензии не запустит базу. Исключение — учебная версия с её собственными ограничениями. Лицензии делятся на два вида:
- 🔑 клиентские — на число одновременных подключений пользователей;
- 🖧 серверные — нужны для работы кластера в клиент-серверном варианте; различаются по редакциям, редакция КОРП даёт дополнительные возможности кластера.
Лицензия бывает программной (активируется пин-кодом и привязывается к параметрам компьютера) или аппаратной (USB-ключ). Программная лицензия «слетает» при заметной смене оборудования — замене диска, материнской платы, сетевой карты, переносе виртуальной машины. Её восстанавливают повторной активацией резервным пин-кодом из комплекта.
Пин-коды и регистрационный номер комплекта храните отдельно от сервера. Без них после поломки сервера восстановить лицензию сложнее и дольше.
Что на самом деле тормозит
| Узкое место | Как проявляется | Что помогает |
|---|---|---|
| Сеть в файловом варианте | Всё медленно у всех, быстрее только на самом сервере | Переход на кластер или работа через удалённый рабочий стол |
| Диск сервера СУБД | Медленное проведение и отчёты при низкой загрузке процессора | SSD/NVMe под файлы базы и журнал транзакций |
| Память сервера | Рабочие процессы rphost перезапускаются, растёт файл подкачки | Добавить ОЗУ, ограничить память СУБД |
| Блокировки | Ошибки ожидания, «висящие» пользователи | Управляемый режим, перенос тяжёлых операций на ночь |
| Код конфигурации | Медленна одна конкретная форма или отчёт | Замер производительности, оптимизация запросов |
Диагностика: как понять, что происходит внутри 1С
Начинайте с простого и переходите к сложному.
- 📜 Журнал регистрации. В типовых конфигурациях:
Администрирование → Обслуживание → Журнал регистрации. Там видно, кто и когда записал документ, какие были ошибки, когда шли регламентные задания. - 👥 Консоль кластера. В разделе сеансов видно, кто подключён, сколько времени идёт вызов, какой сеанс держит блокировку. Там же можно завершить зависший сеанс — с предупреждением пользователя.
- 📊 Замер производительности. В Конфигураторе в режиме отладки показывает, какие строки кода съели время. Нужен, когда медленна одна операция.
- 🔬 Технологический журнал. Включается файлом
logcfg.xmlв каталогеconfустановленной платформы. Пишет события сервера: долгие запросы, исключения, ожидания блокировок, взаимоблокировки. Подходит для поиска причины, которую не видно в журнале регистрации. - 🧹 Кэш клиента. Странные ошибки интерфейса и старые формы после обновления часто лечатся запуском с ключом
/ClearCache. Кэш лежит в%APPDATA%\1C\1cv8и%LOCALAPPDATA%\1C\1cv8.
Технологический журнал быстро растёт. Включайте его с фильтром по событиям, ограничивайте срок хранения в настройке и выключайте после диагностики, иначе он заполнит диск.
Отдельный случай — серверный кэш в каталоге srvinfo. Его очистка лечит часть «необъяснимых» ошибок кластера, но выполняется только при остановленной службе агента, то есть при отключённых пользователях, и только после того, как остальные способы не помогли.
Частые вопросы
Можно ли перевести файловую базу на сервер без потери данных?
.dt через Конфигуратор, создайте новую базу в кластере и загрузите в неё этот файл. Данные, пользователи и настройки переедут целиком.