Администрирование · 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С:Предприятия (помимо клиентских лицензий). Исключение — лицензии на сервер для определённых поставок и вариант КОРП, детали зависят от конкретного продукта, поэтому условия стоит сверять с лицензионным соглашением вашей поставки.
Как выполняется код «на сервере»: директивы и контекст
В управляемом приложении код формы разделён на клиентскую и серверную части. Директива &НаСервере означает, что процедура исполняется в рабочем процессе сервера: там доступны запросы к базе, менеджеры объектов, но недоступны элементы формы как объекты интерфейса, предупреждения и диалоги с пользователем. Директива &НаКлиенте — наоборот, работа с интерфейсом без прямого доступа к данным.
Каждый вызов сервера из клиентской процедуры — это сетевое обращение с сериализацией данных. Поэтому разработчику важно минимизировать количество серверных вызовов: вместо десяти обращений в цикле правильно собрать данные одним запросом на сервере и вернуть результат. Это одна из главных причин «тормозов» самописных конфигураций.
&НаСервере
Функция ПолучитьОстатки(Склад)
Запрос = Новый Запрос("ВЫБРАТЬ Номенклатура, Количество ИЗ РегистрНакопления.Товары.Остатки(, Склад = &Склад)");
Запрос.УстановитьПараметр("Склад", Склад);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункцииКогда переходить на серверный режим: признаки и условия
Однозначного порога в документации нет, но на практике сигналами служат: регулярные конфликты блокировок при одновременной работе, заметное замедление при росте базы, ошибки при обращении к файлу по сети, невозможность выполнять регламентные операции без выгоняния пользователей. Если несколько из этих признаков совпадают — файловый режим уже стал узким местом.
Перед переходом оцените ресурсы: нужна машина под сервер 1С и СУБД (или две), лицензия на сервер, администратор, способный обслуживать СУБД, и продуманная схема резервного копирования средствами самой СУБД. Переход «вслепую» без резервной копии и тестового прогона — прямой путь к потере рабочего дня всей компании.
Как выбрать действие
Развёртывание и проверка серверного режима
Типовой порядок перехода: установить СУБД и сервер 1С, создать новую информационную базу в кластере через консоль, выгрузить данные из файловой базы в файл .dt и загрузить их в серверную базу через конфигуратор. После загрузки обязательно выполнить тестирование и исправление, а затем проверить ключевые операции под нагрузкой, близкой к реальной.
Проверка результата включает: успешный вход пользователей через серверный вариант подключения, выполнение проведения документов без конфликтов при одновременной работе, запуск регламентных заданий по расписанию, корректное создание резервных копий средствами СУБД. Только после этого файловую базу можно выводить из эксплуатации — и то с сохранением архивной копии.
- 1Сделайте полную резервную копию файловой базы и проверьте её восстановление
- 2Установите СУБД и сервер 1С:Предприятия, создайте пустую базу в кластере
- 3Выгрузите данные из файловой базы в файл .dt через конфигуратор
- 4Загрузите .dt в серверную базу и выполните тестирование и исправление
- 5Проведите тестовую работу пользователей: проведение документов, отчёты, регламентные задания
- 6Настройте резервное копирование средствами СУБД и переключите пользователей на серверную базу
Частые ошибки и ограничения
Самая дорогая ошибка — прямое вмешательство в базу средствами СУБД. Структура таблиц, которую создаёт платформа, служебная: связи, служебные поля и хранение неочевидны, и ручные правки почти всегда заканчиваются обращением к восстановлению из копии. Вторая типичная ошибка — перенос базы через копирование файлов СУБД вместо штатных механизмов выгрузки/загрузки или резервного копирования СУБД.
В разработке частая проблема — избыточные серверные вызовы и попытка использовать на сервере клиентский контекст (и наоборот). Также стоит помнить: серверный режим не ускоряет сам по себе плохо написанный код и не заменяет регламентного обслуживания СУБД — обновления статистики, обслуживания индексов и контроля роста журнала транзакций.
Как проверить результат
Вход выполняется через серверный вариант, сеансы видны в консоли кластера
Пользователи по-прежнему открывают файловую базу или сеансы падают
Несколько пользователей проводят документы без конфликтов блокировок
Ошибки блокировок и взаимные ожидания как в файловом режиме
Задания выполняются по расписанию, журнал регистрации фиксирует успех
Задания не стартуют или завершаются с ошибками
Копия СУБД создаётся и тестово восстанавливается на отдельном стенде
Копии нет или восстановление никогда не проверялось
Что важно запомнить
«На сервере 1С:Предприятия» — это про клиент-серверную архитектуру: данные в СУБД, код в рабочих процессах сервера, клиенты подключаются только через него. Переход оправдан при росте пользователей и объёмов, требует лицензии на сервер, администрирования СУБД и обязательного тестирования с резервными копиями.
Частые вопросы
Можно ли работать на сервере 1С без отдельной СУБД?
Нет, клиент-серверный режим платформы всегда предполагает внешнюю СУБД: Microsoft SQL Server, PostgreSQL (в том числе сборки для 1С), Oracle Database или IBM DB2. Сервер 1С сам данные не хранит — он только посредник между клиентами и СУБД.
Нужна ли отдельная лицензия на сервер 1С?
Да, для серверного режима требуется лицензия на сервер 1С:Предприятия в дополнение к клиентским лицензиям. Точные условия зависят от редакции и варианта поставки, их стоит уточнять в лицензионном соглашении конкретного продукта.
Чем выгрузка в .dt отличается от резервной копии СУБД?
Файл .dt — это платформенная выгрузка данных и конфигурации, переносимая между режимами и СУБД. Резервная копия СУБД — образ базы на уровне самой СУБД, он быстрее для больших объёмов, но привязан к конкретной СУБД и её версии. В серверном режиме основным средством должна быть копия СУБД, а .dt — дополнительным.
Почему после перехода на сервер база всё равно тормозит?
Серверный режим снимает ограничения файлового доступа, но не исправляет медленный код и не отменяет обслуживания СУБД. Проверьте серверные вызовы в циклах, тяжёлые запросы без индексов, нехватку оперативной памяти и отсутствие регламентного обслуживания базы (статистика, индексы, журнал транзакций).
Можно ли вернуться с серверного режима обратно на файловый?
Да, технически это делается через выгрузку базы в .dt и загрузку в новую файловую базу. Однако при больших объёмах выгрузка может занять много времени, а часть возможностей, задействованных в серверном режиме, в файловом будет ограничена.
Что значит ошибка «вызов сервера» в тонком клиенте?
Это означает, что клиентская процедура обратилась к серверному контексту, и вызов либо завершился ошибкой на сервере, либо невозможен в данном контексте. Причину смотрят в журнале регистрации и в коде серверной процедуры: часто это обращение к недоступным объектам или ошибка в запросе.