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

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

Что значит «на сервере» в 1С:Предприятия

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

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

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

Ниже разобраны все три смысла термина, условия, при которых стоит переходить на серверный режим, порядок развёртывания, типичные ошибки и способы проверить, что система работает корректно.

Три значения выражения «на сервере» в 1С

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

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

Третье значение относится к разработке: код с директивой компиляции &НаСервере исполняется в контексте сервера приложений, а не на клиенте. Это влияет на то, какие объекты доступны (например, на сервере недоступны элементы интерфейса и пользовательские диалоги) и как передаются данные между клиентом и сервером.

Чем серверный режим отличается от файлового

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

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

ПараметрФайловый режимСерверный режим
Хранение данныхФайл 1Cv8.1CD в сетевой папкеБаза в СУБД (MS SQL, PostgreSQL, Oracle, IBM DB2)
Доступ к даннымКаждый клиент работает с файлом напрямуюТолько через сервер приложений 1С
Одновременная работаНебольшое число пользователей, конфликты блокировокДесятки и сотни сеансов, блокировки на уровне СУБД
Фоновые заданияОграничены, выполняются в сеансе пользователяПолноценно, на сервере, по расписанию
ТребованияОбщая папка, лицензии на клиентовВыделенный сервер, СУБД, лицензия на сервер 1С

Какой режим выбрать

Файловый режим

Подходит для небольших компаний с несколькими пользователями и умеренным объёмом данных. Ограничение: чувствителен к сбоям сети и росту базы.

Серверный режим

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

Из чего состоит серверная инфраструктура 1С

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

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

Отдельный вопрос — лицензирование. Для серверного режима нужна лицензия на сервер 1С:Предприятия (помимо клиентских лицензий). Исключение — лицензии на сервер для определённых поставок и вариант КОРП, детали зависят от конкретного продукта, поэтому условия стоит сверять с лицензионным соглашением вашей поставки.

Как выполняется код «на сервере»: директивы и контекст

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

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

bsl
&НаСервере
Функция ПолучитьОстатки(Склад)
    Запрос = Новый Запрос("ВЫБРАТЬ Номенклатура, Количество ИЗ РегистрНакопления.Товары.Остатки(, Склад = &Склад)");
    Запрос.УстановитьПараметр("Склад", Склад);
    Возврат Запрос.Выполнить().Выгрузить();
КонецФункции

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

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

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

Маршрут решения

Как выбрать действие

Пользователей немного, база небольшая, жалоб на блокировки нетОставайтесь на файловом режиме, но настройте регулярное копирование файла базы
Регулярные конфликты блокировок и жалобы на скоростьПланируйте переход на клиент-серверный режим с тестовым прогоном
Нужны фоновые задания и регламентные операции без участия пользователейСерверный режим обязателен — в файловом эти механизмы ограничены
База уже на сервере, но код форм тормозитПроверьте количество серверных вызовов в циклах и перенесите обработку данных в запросы

Развёртывание и проверка серверного режима

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

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

Порядок перехода на серверный режим
  1. 1
    Сделайте полную резервную копию файловой базы и проверьте её восстановление
  2. 2
    Установите СУБД и сервер 1С:Предприятия, создайте пустую базу в кластере
  3. 3
    Выгрузите данные из файловой базы в файл .dt через конфигуратор
  4. 4
    Загрузите .dt в серверную базу и выполните тестирование и исправление
  5. 5
    Проведите тестовую работу пользователей: проведение документов, отчёты, регламентные задания
  6. 6
    Настройте резервное копирование средствами СУБД и переключите пользователей на серверную базу

Частые ошибки и ограничения

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

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

Типичные ошибки
01
Прямые правки данных в СУБД — разрушение целостности базы и потеря поддержки
02
Переход без тестового прогона — простой всей компании при первой же проблеме
03
Сервер 1С и СУБД на слабой машине без запаса памяти — своп и падение производительности
04
Отсутствие резервного копирования средствами СУБД после перехода — копии файла 1Cv8.1CD больше не существует
05
Серверные вызовы в цикле на клиенте — сетевые задержки умножаются на число итераций
Контрольные точки

Как проверить результат

Подключение пользователей
Норма

Вход выполняется через серверный вариант, сеансы видны в консоли кластера

Тревожный признак

Пользователи по-прежнему открывают файловую базу или сеансы падают

Одновременная работа
Норма

Несколько пользователей проводят документы без конфликтов блокировок

Тревожный признак

Ошибки блокировок и взаимные ожидания как в файловом режиме

Регламентные задания
Норма

Задания выполняются по расписанию, журнал регистрации фиксирует успех

Тревожный признак

Задания не стартуют или завершаются с ошибками

Резервные копии
Норма

Копия СУБД создаётся и тестово восстанавливается на отдельном стенде

Тревожный признак

Копии нет или восстановление никогда не проверялось

Итог

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

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

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

Можно ли работать на сервере 1С без отдельной СУБД?

Нет, клиент-серверный режим платформы всегда предполагает внешнюю СУБД: Microsoft SQL Server, PostgreSQL (в том числе сборки для 1С), Oracle Database или IBM DB2. Сервер 1С сам данные не хранит — он только посредник между клиентами и СУБД.

Нужна ли отдельная лицензия на сервер 1С?

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

Чем выгрузка в .dt отличается от резервной копии СУБД?

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

Почему после перехода на сервер база всё равно тормозит?

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

Можно ли вернуться с серверного режима обратно на файловый?

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

Что значит ошибка «вызов сервера» в тонком клиенте?

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