Из чего состоит платформа 1С:Предприятие 8.3 и как её части обмениваются данными

· 10 мин

Содержание

1С 8.3 работает по трёхзвенной схеме: клиентское приложение показывает формы и принимает ввод, сервер 1С:Предприятия выполняет прикладной код и запросы, а СУБД хранит данные. В файловом варианте среднего звена нет: роль сервера и СУБД берёт на себя сам клиент, а база лежит в одном файле 1Cv8.1CD.

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

Два варианта работы: файловый и клиент-серверный

Платформа одна, конфигурация одна, а режимов развёртывания два. Код конфигурации при переходе между ними не меняется — меняется место, где он исполняется.

ПризнакФайловый вариантКлиент-серверный вариант
Где хранятся данныеФайл 1Cv8.1CD в каталоге базыТаблицы в СУБД (MS SQL Server, PostgreSQL, IBM Db2, Oracle Database)
Кто выполняет серверный кодСам клиент на компьютере пользователяРабочие процессы кластера 1С
Типичная нагрузкаНесколько пользователей, небольшая базаДесятки и сотни пользователей
ЛицензииТолько клиентскиеКлиентские + лицензия на сервер 1С
Резервное копированиеКопия файла или выгрузка .dtСредства СУБД или выгрузка .dt

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

В клиент-серверном варианте к данным обращается только сервер 1С. Клиенты передают ему команды и получают готовые результаты — по сети идут не страницы базы, а итоги запросов и данные форм.

Какой вариант подходит вашей базе?

Клиентское приложение и что оно делает на компьютере пользователя

Клиент — это то, что пользователь видит на экране. В 1С 8.3 их несколько:

  • 🖥️ Тонкий клиент (1cv8c.exe) — основной вариант для управляемых форм. Сам не работает с данными, только показывает формы и выполняет клиентский код.
  • 🧱 Толстый клиент (1cv8.exe) — умеет и клиентскую, и серверную логику, нужен для обычных форм старых конфигураций. Через него же запускается Конфигуратор.
  • 🌐 Веб-клиент — работает в браузере, когда база опубликована на веб-сервере (Apache или IIS).
  • 📱 Мобильный клиент — для работы с телефона и планшета.

Как код делится между клиентом и сервером

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

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

Кэш на стороне клиента

Чтобы не тянуть описание конфигурации при каждом запуске, клиент хранит его кэш в профиле пользователя: каталоги %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8. Если после обновления конфигурации формы ведут себя странно, кэш сбрасывают запуском с параметром /ClearCache или удалением этих каталогов при закрытой 1С.

Сервер 1С:Предприятия: кластер, агент и рабочие процессы

Сервер 1С — это не одна программа, а набор процессов, объединённых в кластер:

ПроцессРольПорт по умолчанию
ragentАгент сервера: принимает первое подключение, управляет кластерами на компьютере1540
rmngrМенеджер кластера: хранит реестр баз, распределяет сеансы, ведёт сервисы кластера1541
rphostРабочий процесс: выполняет серверный код конфигурации и запросы к СУБДдиапазон 1560–1591

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

В Windows агент работает как служба «Агент сервера 1С:Предприятия 8.3». Настройки кластера и список зарегистрированных баз хранятся в каталоге srvinfo (по умолчанию в каталоге установки или в профиле пользователя службы).

Что ещё делает кластер

  • 🔁 запускает регламентные задания: обмены, загрузку курсов валют, обновление индексов полнотекстового поиска;
  • 🧮 выдаёт серверные и клиентские лицензии;
  • 🔐 ведёт сервис управляемых блокировок;
  • 📊 распределяет нагрузку между рабочими процессами и рабочими серверами, если их несколько.

Управляют кластером через консоль администрирования серверов (оснастка MMC) или утилиту rac в связке с сервером администрирования ras. Например, rac cluster list выводит список кластеров, rac session list --licenses — сеансы с полученными лицензиями.

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

Где лежат данные: СУБД и файл базы

Каждый объект конфигурации превращается в таблицы базы данных. Справочник, документ, регистр накопления — у каждого своя основная таблица, у табличных частей и итогов регистров — дополнительные. В СУБД они называются служебными именами вида _Reference45, _Document123, поэтому найти «таблицу контрагентов» в SQL Server по русскому имени не получится.

Запросы на языке 1С платформа переводит в SQL того диалекта, который понимает конкретная СУБД. Поэтому одна и та же конфигурация работает и на MS SQL Server, и на PostgreSQL без переписывания кода.

Что хранится в СУБД помимо данных:

  1. Конфигурация базы данных — описание метаданных и модули, по которому работает база.
  2. Основная конфигурация — та, что правит разработчик в Конфигураторе, до применения к базе.
  3. Итоги регистров — заранее посчитанные остатки и обороты, чтобы отчёт не перебирал миллионы движений.
  4. Временные таблицы запросов — в PostgreSQL и MS SQL Server они создаются во временной области СУБД (в SQL Server — tempdb).

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

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

Транзакции и блокировки в 1С 8.3

Когда пользователь проводит документ, платформа открывает транзакцию: записывает сам документ, формирует движения по регистрам, пересчитывает итоги. Либо всё это фиксируется целиком, либо при ошибке откатывается целиком. Половины проведения не бывает.

В коде транзакции открывают явно через НачатьТранзакцию(), ЗафиксироватьТранзакцию() и ОтменитьТранзакцию(). Запись объекта — Записать() — уже выполняется в транзакции, даже если программист её не открывал.

Автоматические и управляемые блокировки

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

РежимКто блокируетОсобенность
АвтоматическийСУБДБлокирует с запасом, часто целые диапазоны таблиц — пользователи чаще ждут друг друга
УправляемыйСервис блокировок 1СБлокирует только нужные записи, разработчик задаёт их объектом БлокировкаДанных

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

Взаимоблокировка — другой случай: два сеанса ждут друг друга. Платформа завершает одну из транзакций, пользователь видит сообщение о конфликте блокировок, и операцию можно просто повторить.

Обмен данными и синхронизация между базами

1С 8.3 почти никогда не живёт в одиночку: бухгалтерия забирает документы из торговли, зарплата — кадровые данные, сайт — остатки. Платформа даёт для этого несколько механизмов.

  • 🗂️ Планы обмена — сердце синхронизации. Платформа сама регистрирует изменённые объекты для каждого узла обмена, а при обмене выгружает только их в сообщение XML. После подтверждения приёма регистрация снимается.
  • 🌳 Распределённая информационная база (РИБ) — копии одной и той же конфигурации в филиалах. Главный узел передаёт подчинённым не только данные, но и изменения конфигурации.
  • 🔄 Обмен между разными конфигурациями — через правила конвертации или универсальный формат EnterpriseData. Так связаны, например, УТ 11 и Бухгалтерия 3.0.
  • 🌐 Веб-сервисы (SOAP), HTTP-сервисы, OData — для сайтов, мобильных приложений, внешних систем.
  • 🔌 COM-соединение и внешние источники данных — для чтения других баз или сторонних СУБД.

Обмены обычно запускаются регламентным заданием на сервере или по расписанию в настройках синхронизации. В типовых конфигурациях на БСП настройки собраны в разделе Администрирование → Синхронизация данных.

Восстановление одной из баз обмена из старой резервной копии ломает нумерацию сообщений. Узлы перестают принимать пакеты друг от друга, пока синхронизацию не перенастроят.

Диагностика производительности и журналы

Когда «1С тормозит», первым делом выясняют, на каком звене теряется время: клиент, сеть, сервер 1С или СУБД.

ИнструментЧто показываетГде включается
Журнал регистрацииКто, когда и что сделал в базе: вход, запись, проведение, ошибкиВ клиенте: Администрирование → Обслуживание → Журнал регистрации (БСП)
Технологический журналДлительные вызовы, запросы к СУБД, ожидания блокировок, исключенияФайл logcfg.xml в каталоге conf платформы
Замер производительностиКакие строки кода выполняются дольше всегоКонфигуратор, режим отладки
Консоль кластераСеансы, соединения, нагрузка рабочих процессов, лицензииКонсоль администрирования серверов
Инструменты СУБДПланы запросов, ожидания, рост файловSQL Server Management Studio, pg_stat_* в PostgreSQL

Журнал регистрации отвечает на вопрос «кто удалил документ», но не на вопрос «почему медленно». Для скорости нужен технологический журнал: в logcfg.xml задают, какие события писать (например, долгие вызовы CALL и запросы DBMSSQL, ожидания TLOCK) и куда.

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

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

Регулярное обслуживание клиент-серверной базы
Выполнено: 0 / 6

Работа в облаке, через терминал и веб-клиент

Клиент-серверная архитектура позволяет работать с 1С откуда угодно, но способы разные по нагрузке на сеть.

Терминальный сервер (RDP или RemoteApp). Клиент 1С запускается на сервере рядом с базой, а пользователь получает только картинку экрана. Медленный канал почти не мешает: по сети идёт изображение, а не данные. Для RemoteApp публикуют 1cestart.exe или напрямую исполняемый файл клиента. Каждый сеанс пользователя получает свою клиентскую лицензию.

Тонкий клиент через интернет. База публикуется на веб-сервере, тонкий клиент подключается по адресу публикации (http или https). Работает без VPN, но чувствителен к числу серверных вызовов в формах.

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

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

СпособНагрузка на каналЧто ставить у пользователя
Терминал / RemoteAppНизкаяКлиент RDP
Тонкий клиент по http/httpsСредняяПлатформа 1С (тонкий клиент)
Веб-клиентСредняяБраузер
Файловая база по сетевой папке через VPNОчень высокая, риск повреждения базыНе рекомендуется

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

Можно ли перевести файловую базу на сервер без переделки конфигурации?
Да. Выгрузите базу в файл .dt в Конфигураторе, создайте новую базу на кластере 1С и загрузите выгрузку. Код конфигурации менять не нужно.
Зачем нужна отдельная лицензия на сервер 1С?
Клиентские лицензии дают право подключать пользователей, а серверная — право запускать рабочие процессы кластера. Без неё клиент-серверная база не запустится.
Где физически выполняется отчёт: на моём компьютере или на сервере?
Запрос и расчёт отчёта выполняются на сервере 1С и в СУБД. Клиент получает готовый результат и только выводит его на экран.
Обязательно ли ставить сервер 1С и СУБД на разные компьютеры?
Нет. Для небольших внедрений их часто ставят на один сервер. Разносят их, когда растёт нагрузка и памяти перестаёт хватать обоим.
Почему одна и та же база на PostgreSQL и MS SQL Server работает с разной скоростью?
Платформа строит разный SQL под каждую СУБД, а оптимизаторы СУБД по-разному выполняют тяжёлые запросы. Ещё больше влияют настройки самой СУБД: память, статистика, обслуживание индексов.