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

Разработка и Конфигурация · 11 мин

Backend 1С: что это и как устроена серверная часть платформы

Backend 1С простыми словами: серверная часть платформы, СУБД, кластер серверов, роли backend-разработчика, задачи, инструменты и отличия от frontend.

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

В отличие от классической веб-разработки, где backend пишут на Python, Java или PHP, в экосистеме 1С серверная логика создаётся на встроенном языке платформы и исполняется в специальной инфраструктуре: кластере серверов 1С:Предприятия и системе управления базами данных. Поэтому термин «backend 1С» означает одновременно и слой архитектуры, и специализацию разработчика, который занимается именно серверным кодом.

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

Из чего состоит backend 1С: архитектура системы

Платформа 1С:Предприятие построена по трёхзвенной архитектуре. Первое звено — клиентское приложение (тонкий, толстый или веб-клиент), которое пользователь видит на экране. Второе звено — кластер серверов 1С:Предприятия, который исполняет серверный код, управляет сеансами и блокировками. Третье звено — СУБД, где физически хранятся данные: чаще всего это Microsoft SQL Server, PostgreSQL, Oracle или IBM Db2.

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

Именно связка «кластер + СУБД» и есть технический backend системы. Клиент никогда не обращается к базе данных напрямую: все запросы проходят через сервер 1С, который формирует SQL-запросы, контролирует права доступа и управляет транзакциями.

Что выполняется на сервере: роль серверного кода

Во встроенном языке 1С код явно разделяется по месту исполнения. Директивы компиляции определяют, где будет работать процедура: &НаКлиенте — на компьютере пользователя, &НаСервере — в кластере серверов. Общие модули с признаком «Сервер» исполняются только на сервере и недоступны клиенту напрямую.

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

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

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

Чем занимается backend-разработчик 1С

Backend-разработчик 1С проектирует и реализует серверную бизнес-логику: объекты метаданных (документы, регистры, справочники), алгоритмы проведения, регламентные задания, сложные отчёты. Его основной инструмент — конфигуратор, а рабочий язык — встроенный язык 1С вместе с языком запросов, похожим на SQL.

Существенная часть работы — производительность. Разработчик анализирует планы запросов, избавляется от запросов в циклах, правильно использует индексы и временные таблицы, выбирает между последовательным чтением и пакетной обработкой. Ошибка в серверном коде на большой базе способна «подвесить» работу сотен пользователей, поэтому требования к качеству здесь выше, чем к клиентским доработкам.

Ещё одно направление — интеграции: обмены через HTTP-сервисы, веб-сервисы SOAP, очереди сообщений, файловые обмены, работа с REST API внешних систем. Backend-специалист проектирует формат обмена, обработку ошибок, повторные попытки и журналирование, чтобы сбой внешней системы не разрушал учётные данные.

Проведение документовСерверная логика

Движения по регистрам всегда формируются на сервере

Медленный отчётПроблема запроса или СУБД

Смотреть план запроса и индексы, а не форму

Обмен с сайтомИнтеграция

HTTP-сервисы, очереди, журналирование ошибок

Расчёт по расписаниюРегламентное задание

Выполняется на сервере без участия пользователя

Backend и frontend в 1С: в чём разница на практике

Frontend в 1С — это управляемые формы, клиентские обработчики событий, внешний вид и интерактивность. Frontend-задачи решаются в модулях форм с директивой &НаКлиенте и в основном касаются удобства пользователя: подсказки, проверки до отправки данных, динамическое обновление элементов формы.

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

Где размещать логику

На клиенте

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

На сервере

Запросы, проведение, расчёты, интеграции. Ограничение: каждый вызов — сетевое обращение, их нужно минимизировать

В регламентных заданиях

Фоновые расчёты и обмены по расписанию. Ограничение: нет интерактива, ошибки видны только в журнале

Как проверить, что серверная часть работает правильно

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

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

Контрольные точки

Контрольные точки backend

Журнал регистрации
Норма

Нет повторяющихся ошибок фоновых заданий и обменов

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

Регулярные ошибки транзакций, таймауты, взаимоблокировки

Время отклика типовой операции
Норма

Проведение документа занимает секунды и стабильно

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

Время растёт с ростом базы или числа пользователей

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

Выполняются по расписанию и завершаются

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

Задания «висят» или падают с ошибкой

Нагрузка на СУБД
Норма

Нет запросов, сканирующих большие таблицы целиком

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

Длительные запросы без использования индексов

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

Типичные ошибки при работе с backend 1С

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

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

Типичные ошибки
01
Запросы в цикле — резкое падение производительности на больших объёмах данных
02
Десятки мелких серверных вызовов из клиентского кода — медленная работа у удалённых пользователей
03
Игнорирование ошибок регламентных заданий — обмены молча не выполняются неделями
04
Изменение проведения документов без теста на копии — массовое искажение учётных данных
05
Хранение бизнес-логики в модулях форм — код невозможно переиспользовать и тестировать

Как развиваться в сторону backend-разработки 1С

Начальная точка — уверенное знание встроенного языка, объектов метаданных и языка запросов. Дальше стоит освоить темы, которые отличают backend-специалиста от разработчика форм: управляемые блокировки, транзакции, оптимизация запросов, фоновые и регламентные задания, механизмы интеграции.

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

Порядок освоения backend 1С
  1. 1
    Освоить встроенный язык, запросы и основные объекты метаданных
  2. 2
    Разобраться с разделением кода: клиент, сервер, общие модули
  3. 3
    Изучить транзакции, блокировки и типовые причины взаимоблокировок
  4. 4
    Научиться читать технологический журнал и планы запросов
  5. 5
    Реализовать интеграцию через HTTP-сервис с обработкой ошибок
  6. 6
    Проверить навыки на задаче оптимизации реального медленного отчёта

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

Backend 1С — это отдельная программа?

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

Нужно ли backend-разработчику 1С знать SQL?

Да, хотя бы на базовом уровне. Запросы в 1С пишутся на собственном языке, но платформа транслирует их в SQL, и понимание индексов, соединений и планов выполнения помогает писать быстрый серверный код и разбирать проблемы производительности.

Чем backend-разработчик 1С отличается от администратора 1С?

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

Можно ли писать backend для 1С на других языках?

Основная бизнес-логика пишется на встроенном языке, но внешние сервисы интеграции можно создавать на любом стеке: 1С обменивается с ними через HTTP, веб-сервисы или очереди сообщений. Также существуют внешние компоненты по технологии Native API на C++ для специфических задач.

Почему отчёт работает быстро на тестовой базе, но медленно на рабочей?

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

Что такое регламентные задания и почему они относятся к backend?

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

Итог

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

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