Что происходит внутри 1С:Предприятия, когда вы нажимаете «Провести»

· 11 мин

Содержание

Платформа 1С работает как «движок» для прикладных программ: сама она не знает ни про НДС, ни про зарплату, а исполняет конфигурацию — описание справочников, документов, регистров и код на встроенном языке. Бухгалтерия 3.0, ЗУП 3.1 и УТ 11 — это разные конфигурации, запущенные на одной и той же платформе «1С:Предприятие 8.3».

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

Из чего состоит платформа 1С: слои и компоненты

Удобно представлять систему как три слоя.

СлойЧто этоПримеры
ПлатформаИсполняемые файлы, которые ставятся на компьютер или сервер1cv8.exe, 1cv8c.exe, ragent.exe
КонфигурацияПрикладное решение: метаданные, формы, макеты, модулиБП 3.0, ЗУП 3.1, УТ 11, своя разработка
Информационная базаДанные конкретной организации плюс сохранённая в ней конфигурацияФайл 1Cv8.1CD или база в СУБД

Клиентские приложения

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

Серверная часть

В клиент-серверном варианте ставится сервер 1С:Предприятия. Он состоит из нескольких процессов:

  • ragent — агент сервера, принимает подключения (по умолчанию порт 1540);
  • rmngr — менеджер кластера, хранит реестр баз и распределяет работу (порт 1541);
  • rphost — рабочие процессы, в которых реально выполняется серверный код (диапазон портов по умолчанию 1560–1591, задаётся в свойствах рабочего сервера).

Рядом с ними работает СУБД — она хранит таблицы. Сервер 1С и СУБД могут стоять на одной машине или на разных.

Инструменты разработчика

Конфигуратор встроен в платформу и открывается из окна запуска. Для командной разработки есть хранилище конфигурации и отдельная среда 1С:EDT на базе Eclipse. Администрирование кластера — через консоль серверов или утилиту командной строки rac в связке со службой ras.

Как 1С выполняет код: клиент, сервер и вызовы между ними

В управляемом приложении каждая строка кода выполняется в строго определённом месте. Это задают директивы компиляции перед процедурами модуля формы:

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

Что происходит при нажатии «Провести»

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

Каждый серверный вызов — это обмен по сети. Десять мелких вызовов подряд работают заметно медленнее одного крупного, особенно через интернет или веб-клиент.

Где ещё исполняется код

  • 🔁 Фоновые задания — код, запущенный на сервере отдельно от пользователя. Так платформа выполняет длинные операции, не замораживая интерфейс.
  • ⏰ Регламентные задания — фоновые задания по расписанию: загрузка курсов валют, обмены, обновление полнотекстового индекса.
  • 📦 Общие модули — их флаги (Сервер, Клиент, Вызов сервера, Привилегированный, Глобальный) определяют, откуда их можно вызвать и с какими правами.

Встроенный язык 1С: что умеет и где упирается

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

Типичный фрагмент серверного кода выглядит так:

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

Имя регистра здесь условное: в каждой конфигурации свои объекты метаданных.

Сильные стороны

  • 📊 Язык запросов похож на SQL, но работает с объектами конфигурации, а не с таблицами СУБД. Есть виртуальные таблицы регистров: остатки, обороты, срез последних.
  • 🧩 Готовые прикладные объекты: справочник, документ, регистр. Разработчик описывает их в метаданных, а таблицы, формы по умолчанию и блокировки платформа создаёт сама.
  • 🛠️ Система компоновки данных — механизм отчётов с настройками, которые пользователь меняет без программиста.

Ограничения

  • ❌ Нет классов и наследования. Роль «объекта с методами» выполняют модули менеджера и модули объектов метаданных.
  • ❌ Язык запросов только читает данные. Запись идёт через объектную модель: Справочник.Создать(), Документ.Записать().
  • ❌ Нет привычной многопоточности. Параллельность делают фоновыми заданиями.
  • ❌ Доступ к возможностям ОС ограничен. Для оборудования и нестандартных библиотек пишут внешние компоненты, на Windows ещё доступен COM.

Как платформа 1С хранит данные: файловый и клиент-серверный режим

Информационная база бывает двух видов.

Файловый режимКлиент-серверный режим
Где данныеОдин файл 1Cv8.1CD в каталоге базыВ СУБД: MS SQL Server, PostgreSQL, IBM Db2, Oracle Database
Что нужно поставитьТолько клиент 1ССервер 1С, СУБД, лицензию на сервер
Сколько пользователейЕдиницы, при росте нагрузки начинаются ожидания на блокировкахДесятки и сотни
Резервное копированиеКопия файла при закрытых сеансах или выгрузка .dtСредствами СУБД, без остановки работы

Как объекты конфигурации превращаются в таблицы

Платформа сама создаёт в СУБД таблицы под каждый объект метаданных. Имена у них служебные: _Reference45, _Document112, _AccumRg503 и подобные. Соответствие имён объектам хранится внутри базы.

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

Итоги и блокировки

  • 📈 Итоги регистров накопления хранятся отдельно и пересчитываются при записи движений. Поэтому отчёт об остатках не перебирает все документы за годы.
  • 🔒 Управляемые блокировки — платформа блокирует только нужные данные (например, остатки конкретного товара на складе), а не таблицу целиком. Режим блокировок задаётся в свойствах конфигурации; типовые решения давно работают в управляемом режиме.
  • ↩️ Транзакции гарантируют атомарность: документ записывается вместе со всеми движениями или не записывается вовсе.

Конфигурации, поддержка и обновления

Внутри базы одновременно живут несколько «копий» конфигурации:

  • конфигурация поставщика — эталон от разработчика, с которым сравнивают изменения;
  • основная конфигурация — то, что открыто в Конфигураторе, включая доработки;
  • конфигурация базы данных — то, по чему реально работают пользователи.

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

Платформа и конфигурация обновляются отдельно

Что обновляемЧемЧто важно
ПлатформуДистрибутив технологической платформыКонфигурация указывает минимальный номер платформы; новый релиз БП может не запуститься на старой платформе
КонфигурациюФайл обновления .cfu или полный .cfОбновлять последовательно по цепочке релизов, если файл не подходит для прыжка через версии
ДоработкиРасширение .cfeНе снимает конфигурацию с поддержки

Режим поддержки и расширения

Типовая конфигурация стоит «на поддержке»: поставщик присылает обновления, а платформа сравнивает их с вашими изменениями. Если доработки внесены прямо в конфигурацию, каждое обновление превращается в ручное сравнение и объединение.

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

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

Права доступа и защита данных в 1С

Безопасность в 1С строится на нескольких уровнях.

Пользователи и вход

Список пользователей информационной базы ведётся в самой базе. Вход возможен по паролю 1С, через аутентификацию операционной системы (доменная учётная запись Windows) или через OpenID.

Роли и права

  • 👤 Роль — набор прав на объекты метаданных: чтение, добавление, изменение, проведение, интерактивное удаление и так далее.
  • 📏 Ограничение доступа на уровне записей (RLS) — условие внутри роли: например, видеть документы только своей организации или своего склада.
  • 🗂️ Группы доступа и профили — надстройка из Библиотеки стандартных подсистем. В типовых конфигурациях права назначают именно через неё, в разделе Администрирование → Настройки пользователей и прав, а роли напрямую не трогают.

Защита на уровне сервера

  • 🔐 Администратор кластера и администраторы баз задаются отдельно от пользователей 1С.
  • 🛡️ Профили безопасности кластера ограничивают, что может делать код внешних обработок и расширений: доступ к файлам, COM, интернету.
  • 📝 Журнал регистрации фиксирует вход пользователей и изменения данных — по нему разбирают, кто и когда изменил документ.

Пользователь с полными правами обходит любые ограничения RLS. Не раздавайте роль «Полные права» для удобства: это главная дыра в типовой установке.

Как 1С обменивается данными с внешними системами

Платформа даёт несколько механизмов интеграции. Выбор зависит от того, кто инициирует обмен и в каком формате.

МеханизмДля чегоОсобенности
Планы обменаСинхронизация баз 1С между собой (БП ↔ ЗУП, БП ↔ УТ)Платформа сама отслеживает изменённые объекты
Формат EnterpriseDataОбмен между типовыми конфигурациямиОписывается правилами конвертации
HTTP-сервисыСвой REST-API на стороне 1СНужна публикация на веб-сервере
Веб-сервисы (SOAP)Интеграция с системами на SOAPОписание через WSDL
Стандартный интерфейс ODataЧтение и запись объектов без программирования APIВключается настройкой состава объектов
COM-соединениеОбращение к базе из скрипта или другой программы на WindowsУдобно для разовых задач, медленно при больших объёмах
Файлы XML, JSON, ExcelЗагрузка прайсов, выписок, справочниковВстроенные средства чтения и записи
Внешние компонентыТорговое оборудование, нестандартные протоколыПишутся на C++ по технологии Native API

Исходящие запросы к чужим API 1С делает через объект HTTPСоединение. Банки, ЭДО, маркировка и интернет-поддержка в типовых конфигурациях работают именно поверх этих механизмов.

Какой способ интеграции подойдёт вашей задаче?

Почему 1С тормозит и как ускорить работу платформы

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

Что проверить в первую очередь

  1. Режим базы. Файловая база на сетевой папке при одновременной работе нескольких человек — частая причина ожиданий. Решение — перевод на клиент-серверный вариант.
  2. Диск. База и временные файлы СУБД на SSD дают больший прирост, чем почти любая настройка 1С.
  3. Блокировки. Если пользователи жалуются на ошибку Конфликт блокировок при выполнении транзакции, ищите долгие транзакции — обычно это групповое перепроведение или обмен в рабочее время.
  4. Регламентные задания. Тяжёлые задания по расписанию в 10 утра конкурируют с пользователями. Переносите их на ночь.
  5. Кэш клиента. После обновлений помогает запуск с ключом /ClearCache — он очищает локальный кэш конфигурации на компьютере пользователя.

Ошибки в коде, которые бьют по скорости

  • 🐌 Запрос в цикле — тысяча запросов вместо одного. Лечится одним запросом с временной таблицей.
  • 🐌 Обращение «через точку» вроде Документ.Контрагент.ОсновнойДоговор.Валюта — каждая точка может читать объект из базы целиком.
  • 🐌 Отбор по неиндексированному реквизиту в большом справочнике.
  • 🐌 Лишние серверные вызовы из формы при каждом изменении поля.

Инструменты диагностики

  • 🔍 Замер производительности в режиме отладки Конфигуратора показывает, какие строки кода занимают время.
  • 📜 Технологический журнал сервера (настраивается файлом logcfg.xml) пишет длинные запросы, блокировки и исключения.
  • 🧰 Тестирование и исправление информационной базы — когда тормоза появились после сбоя.

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

Быстрая проверка производительности
Выполнено: 0 / 5

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

Можно ли запустить новую Бухгалтерию на старой платформе?
Нет, если номер платформы ниже минимального, указанного для релиза конфигурации. Сначала обновите платформу, затем конфигурацию.
Чем тонкий клиент отличается от толстого?
Тонкий клиент только показывает формы и выполняет клиентский код, вся работа с базой идёт на сервере. Толстый клиент умеет больше, включая обычные формы и Конфигуратор, но нагружает компьютер пользователя.
Работает ли платформа 1С на Linux?
Да. Сервер 1С, тонкий и толстый клиенты выпускаются для Linux, а в качестве СУБД часто берут PostgreSQL. Ограничения касаются в основном COM и части внешних компонент, написанных только под Windows.
Нужна ли лицензия на каждый компьютер?
Клиентская лицензия нужна на каждое одновременное подключение, а для клиент-серверного режима — ещё и серверная лицензия. Без лицензии платформа базу не запустит, исключение — учебная версия.
Почему изменения в Конфигураторе не видны пользователям?
Они сохранены в основной конфигурации, но не применены к конфигурации базы данных. Выполните обновление конфигурации базы данных и перезапустите сеансы пользователей.