Устройство 1С:Предприятия 8.3: что происходит между кнопкой и базой

· 10 мин

Содержание

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

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

Из чего состоит 1С: платформа, конфигурация и база

Разделение на слои объясняет почти всё поведение программы — от обновлений до ошибок.

СлойЧто этоКак обновляется
Платформа 8.3Исполняемые файлы: клиент, конфигуратор, серверУстановкой новой версии платформы на компьютеры и сервер
КонфигурацияМетаданные (справочники, документы, регистры) и программный кодЧерез конфигуратор или из пользовательского режима файлами .cfu
Информационная базаДанные: проводки, документы, остатки, пользователиНе обновляется, а изменяется при работе и при реструктуризации

📌 Что важно знать про каждый слой:

  • 🧩 Конфигурация хранится внутри базы. Отдельного «файла программы Бухгалтерия» на диске нет. Есть основная конфигурация и конфигурация базы данных — изменения из первой во вторую переносит команда «Обновить конфигурацию базы данных».
  • 🗄️ Данные лежат в таблицах. Каждый справочник, документ, регистр превращается в одну или несколько таблиц СУБД. Табличная часть документа — отдельная таблица.
  • ⚙️ Код конфигурации исполняет платформа. Часть кода работает на клиенте (формы, интерфейс), часть — на сервере (проведение, запросы). Это задаётся директивами &НаКлиенте и &НаСервере в модулях.
  • 🔁 Версии зависят друг от друга. Каждый релиз конфигурации требует платформу с номером не ниже указанного в описании релиза.

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

Файловый и клиент-серверный вариант работы программы 1С

Способ хранения базы определяет, как программа обрабатывает запросы.

Файловый вариант

База — один файл 1Cv8.1CD в папке на диске или в сетевой папке. Рядом лежит каталог 1Cv8Log с журналом регистрации. Каждый клиент сам читает и пишет этот файл через файловую систему, роль сервера выполняет встроенный в платформу файловый движок.

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

Клиент-серверный вариант

Данные лежат в СУБД — Microsoft SQL Server или PostgreSQL (поддерживаются и другие). Между клиентом и СУБД стоит кластер серверов 1С:

  1. Клиент подключается к агенту сервера ragent — порт 1540.
  2. Агент передаёт его менеджеру кластера rmngr — порт 1541.
  3. Менеджер направляет сеанс в рабочий процесс rphost. Диапазон портов рабочих процессов задаётся в свойствах рабочего сервера, по умолчанию 1560–1591.
  4. Рабочий процесс выполняет серверный код и обращается к СУБД.

Блокировки в этом варианте работают на уровне записей. Десятки людей проводят документы одновременно, если не трогают одни и те же данные.

КритерийФайловыйКлиент-серверный
Где данныеФайл 1Cv8.1CDБаза СУБД
Уровень блокировокТаблицаЗапись (при управляемых блокировках)
Регламентные заданияВыполняются, пока открыт хотя бы один клиентский сеансВыполняет кластер, круглосуточно
Резервная копияКопия файла или выгрузка .dtСредствами СУБД или выгрузка .dt
Кому подходитНебольшая команда, одна организацияМногопользовательская работа, большие объёмы

💡 Перейти с файлового варианта на серверный можно без потери данных: выгрузите базу в .dt в конфигураторе (Администрирование → Выгрузить информационную базу), создайте пустую базу на сервере и загрузите туда файл.

Режимы запуска и клиентские приложения 1С

В окне запуска две главные кнопки: 1С:Предприятие (работа с данными) и Конфигуратор (разработка и администрирование). Кроме них, база открывается разными клиентами.

КлиентИсполняемый файлГде выполняется кодКогда используют
Тонкий клиент1cv8c.exeПочти весь на сервереОсновной режим для управляемых форм
Толстый клиент1cv8.exeЧасть кода выполняется на клиентеСтарые обычные формы, конфигуратор
Веб-клиентБраузерНа сервере через веб-серверРабота без установки платформы
Мобильный клиентПриложение на телефонеНа сервереДоступ к базе с телефона

Окно выбора баз показывает 1cestart.exe. Он читает список баз из файла ibases.v8i и запускает нужную версию платформы.

Запуск из командной строки

Администраторы запускают 1С без окна выбора — для ярлыков, скриптов, пакетных обновлений.

:: Открыть файловую базу в режиме 1С:Предприятие
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Администратор" /P"пароль"

:: Открыть серверную базу в конфигураторе
"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /S"srv1c\buh" /N"Администратор" /P"пароль"

:: Запуск с очисткой клиентского кэша
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh" /ClearCache

Полезные параметры:

  • 🔑 /F — путь к файловой базе, /S — сервер\имя_базы для серверной.
  • 👤 /N и /P — пользователь и пароль 1С.
  • 🧹 /ClearCache — очищает кэш метаданных на клиенте. Помогает после обновления, когда интерфейс ведёт себя странно.
  • 🛠️ В пакетном режиме конфигуратора: /DumpIB — выгрузка в .dt, /UpdateDBCfg — обновление конфигурации базы данных.

Пароль в ярлыке или bat-файле лежит открытым текстом. Используйте такие файлы только на сервере с ограниченным доступом.

Как 1С проводит документы: транзакции и блокировки

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

Два режима блокировок

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

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

В управляемом режиме разработчик явно блокирует нужные записи перед чтением остатков:

Блокировка = Новый БлокировкаДанных;
Элемент = Блокировка.Добавить("РегистрНакопления.ТоварыНаСкладах");
Элемент.Режим = РежимБлокировкиДанных.Исключительный;
Элемент.УстановитьЗначение("Склад", Склад);
Блокировка.Заблокировать();

Код блокирует остатки только одного склада. Второй пользователь проводит документ по другому складу и не ждёт.

Что видит пользователь при конфликте

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

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

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

Регламентные и фоновые задания в 1С

Часть работы программа выполняет без участия пользователя.

  • ⏰ Регламентные задания запускаются по расписанию: загрузка курсов валют, обмен с банком и ЭДО, обновление классификаторов, полнотекстовый индекс, пересчёт итогов.
  • 🔄 Фоновые задания запускаются из кода по событию: долгий отчёт, массовое перепроведение, закрытие месяца . Пользователь продолжает работать, пока задание идёт в отдельном сеансе.

Где посмотреть и настроить в БП 3.0, ЗУП 3.1 и УТ 11: Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. Там видно расписание, время последнего запуска и текст ошибки, если задание упало.

Кто их выполняет

  • Файловая база. Задания выполняет один из запущенных клиентских сеансов. Никто не открыл базу — курсы валют не загрузятся.
  • Серверная база. Задания выполняет кластер. В свойствах базы в консоли кластера есть флажок «Блокировка регламентных заданий включена». Если он стоит, ни одно задание не запустится.

Флажок блокировки регламентных заданий обязательно ставят на копиях рабочей базы. Иначе тестовая копия начнёт обмениваться с банком, ЭДО или сайтом от имени рабочей организации.

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

Как ускорить работу программы 1С: индексы, итоги, запросы

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

Индексы

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

На стороне СУБД нужен регулярный план обслуживания:

СУБДЧто делатьКак часто
Microsoft SQL ServerОбновление статистики, перестроение или реорганизация индексовСтатистика — ежедневно ночью, индексы — еженедельно
PostgreSQLVACUUM ANALYZE и контроль работы autovacuumЕжедневно ночью
Файловая базаТестирование и исправление со сжатием таблицРаз в месяц-квартал, с монопольным доступом

Итоги регистров

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

Код и запросы

Если доработки писали свои программисты, проверьте типовые узкие места:

  1. 🐢 Запросы в цикле — один запрос на каждую строку документа вместо одного на весь документ.
  2. 🐢 Отбор виртуальной таблицы остатков в секции ГДЕ вместо параметров виртуальной таблицы.
  3. 🐢 Обращение «через точку» к реквизитам ссылок в цикле — каждое обращение читает базу.
  4. 🐢 Проведение сотни документов одной транзакцией.

Найти медленный код помогает замер производительности в конфигураторе: Отладка → Замер производительности. Он показывает строки кода, на которых ушло больше всего времени.

💡 Простые меры без программиста: держать клиентский кэш чистым (/ClearCache), не хранить файловую базу в сетевой папке на слабом NAS, отключить антивирусную проверку каталога базы и папки srvinfo сервера 1С.

Диагностика ошибок: журнал регистрации и технологический журнал

У 1С два журнала с разными задачами.

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

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

  • в конфигураторе: Администрирование → Журнал регистрации;
  • в режиме 1С:Предприятие: Главное меню → Функции для технического специалиста → Стандартные → Журнал регистрации.

Ставьте отбор по уровню «Ошибка», пользователю и интервалу — без отбора журнал за год открывается долго. Физически журнал лежит в каталоге 1Cv8Log: у файловой базы рядом с 1Cv8.1CD, у серверной — в каталоге базы внутри srvinfo\reg_1541.

Технологический журнал

Пишет, что делает сама платформа: исключения, запросы к СУБД, ожидания блокировок, взаимоблокировки. Включается файлом logcfg.xml в каталоге conf платформы, например C:\Program Files\1cv8\conf\. Перезапуск службы не нужен — платформа подхватывает файл сама.

Пример: собирать исключения и события блокировок.

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="D:\1C_TechLog" history="24">
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <event>
      <eq property="name" value="TTIMEOUT"/>
    </event>
    <event>
      <eq property="name" value="TDEADLOCK"/>
    </event>
    <property name="all"/>
  </log>
</config>

Параметр history — сколько часов хранить логи. События TTIMEOUT показывают таймауты блокировок, TDEADLOCK — взаимоблокировки, с указанием, какие сеансы и какие данные конфликтовали.

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

Диагностика: выберите симптом

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

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

Нужен ли интернет, чтобы работала программа 1С?
Нет. Платформа и база работают локально. Интернет нужен для интернет-поддержки, загрузки курсов валют, обновлений, ЭДО и отчётности.
Можно ли открыть одну базу разными версиями платформы?
Файловую — да, если версия платформы подходит конфигурации. Серверную — только той версией, что установлена на сервере 1С: версия клиента должна совпадать с версией сервера.
Чем конфигуратор отличается от режима 1С:Предприятие?
В 1С:Предприятии работают с данными: документы, отчёты, справочники. В конфигураторе меняют структуру и код, обновляют конфигурацию, выгружают и загружают базу.
Сколько пользователей выдержит файловая база?
Жёсткого предела нет. Ограничение — блокировки на уровне таблиц: с ростом числа людей, которые одновременно проводят документы, ожидание растёт. Когда ожидания мешают работе, переходят на клиент-серверный вариант.
Где хранятся настройки пользователя: отборы, размеры форм?
В самой информационной базе, в хранилищах системных настроек. Поэтому они сохраняются при входе с другого компьютера под тем же пользователем.