База данных 1С: файловая и клиент-серверная, перенос между ними
Первое решение при развёртывании 1С — где будут храниться данные: в одном файле 1Cv8.1CD или в СУБД под управлением сервера 1С. От него зависят число одновременных пользователей, скорость, способ резервного копирования и стоимость поддержки. В статье — как устроена каждая из схем, когда пора переходить с файловой базы на клиент-серверную, как создать базу и как перенести её между режимами.
Как устроена файловая база
Файловая база — это каталог на диске, где главный файл 1Cv8.1CD хранит конфигурацию, данные и пользователей. Рядом лежат служебные объекты: каталог 1Cv8Log с журналом регистрации, файл блокировки и временные файлы сеансов. Каждый клиент (толстый или тонкий) открывает этот файл напрямую по сети или локально, а все операции выполняет в собственном процессе. Отдельного серверного процесса, который бы управлял доступом, нет. Отсюда и ограничения: блокировки работают на уровне файла, при росте числа пользователей начинается очередь на запись, а серверный код выполняется на машине клиента. Поэтому «серверные» функции вроде фоновых заданий исполняются там же, в клиентском сеансе. Базовые версии продуктов 1С рассчитаны только на файловый режим.
Преимущества у файловой схемы тоже есть: не нужен сервер 1С и СУБД, установка занимает минуты, базу легко скопировать на флешку. Для одного-десяти пользователей и небольшого объёма данных она остаётся разумным выбором. О том, что делать, если файл повреждён, — в статье про ошибку «Файл базы данных поврежден».
Ограничения файловой базы
- Общий доступ к одному файлу. Все клиенты читают и пишут в
1Cv8.1CDпо сети, поэтому скорость упирается в диск и сетевое соединение, а не в мощность компьютера пользователя. - Зависимость от сети. Обрыв соединения в момент записи оставляет файл в неконсистентном состоянии; это самая частая причина повреждений.
- Безопасность. Пользователь, у которого есть доступ к каталогу, может скопировать весь файл целиком вместе с данными.
- Серверный код у клиента. Тяжёлые операции нагружают рабочие места, а не выделенный сервер, а обмены и фоновые задания зависят от того, запущен ли клиент.
- Полнотекстовый поиск и индексы. Индексы полнотекстового поиска лежат рядом с базой в отдельном каталоге и также увеличивают размер каталога.
- Ограничения по лицензии. Часть конфигураций и версий (например, базовые) работает только в файловом режиме, а для серверного режима требуются другие лицензии.
Как устроена клиент-серверная база
В клиент-серверной схеме данные хранит СУБД, а между ней и клиентами стоит сервер 1С:Предприятия. Клиентское приложение обращается к рабочему процессу rphost, который выполняет серверный код и сам обращается к СУБД; клиент к базе напрямую не подключается и файла не видит. Это даёт:
- блокировки на уровне записей и управляемые блокировки платформы, а не файла целиком;
- распределение нагрузки между рабочими процессами и серверами кластера;
- серверное выполнение запросов, отчётов и фоновых заданий отдельно от компьютеров пользователей;
- резервное копирование средствами СУБД без остановки работы;
- более жёсткую безопасность: пользователям не нужен доступ к файлам данных.
Цена — сложность администрирования: нужны сервер 1С, СУБД, лицензии на серверный режим и специалист, который их настроит.
Когда переходить на клиент-серверный режим
Универсальной границы нет, но есть признаки, что файловый вариант исчерпал себя:
- одновременно работают больше десяти–пятнадцати человек, и операции записи (проведение, закрытие периода) заметно выстраиваются в очередь;
- размер базы вырос до нескольких гигабайт, а отчёты строятся десятки секунд;
- возникают повторяющиеся повреждения файла из-за сбоев сети или питания;
- нужны фоновые обмены, регламентные задания, интеграция по HTTP и веб-сервисам, работающие независимо от пользователей;
- нужно быстро восстанавливать базу на конкретный момент времени.
У файлового формата есть собственные пределы объёма, но комфортно работать в нём перестают задолго до их достижения.
Как создать новую базу и добавить её в список
В окне запуска нажмите «Добавить» и выберите «Создание новой информационной базы». Дальше можно создать базу из шаблона (типовая конфигурация) или без конфигурации. На шаге расположения выбирается тип:
- На данном компьютере или на компьютере в локальной сети — файловая база; указывается каталог.
- На сервере 1С:Предприятия — клиент-серверная; задаются кластер, имя базы в кластере, тип СУБД, сервер СУБД, имя базы данных, пользователь СУБД и пароль. Здесь же выбирается «Смещение дат»: для MS SQL используется 2000, для PostgreSQL обычно 0.
Существующую базу можно подключить кнопкой «Добавить → Добавление в список существующей информационной базы» и указать путь или кластер. Файловую базу можно создать и из командной строки:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" CREATEINFOBASE File="D:\Bases\Trade"
Перенос базы через выгрузку и загрузку .dt
Файл .dt — универсальный контейнер, в который платформа упаковывает конфигурацию и данные. Он не зависит от типа хранения, поэтому годится и для перехода с файловой базы на клиент-серверную, и в обратную сторону, и для переноса между серверами. Откройте базу в Конфигураторе (монопольно, без других сеансов), выберите «Администрирование → Выгрузить информационную базу» и сохраните файл. В новой пустой базе выполните «Администрирование → Загрузить информационную базу». Загрузка полностью заменяет содержимое целевой базы.
rem Выгрузка из файловой базы "C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F "D:\Bases\Trade" /N "Администратор" /P "" /DumpIB "D:\Backup\trade.dt" rem Загрузка в клиент-серверную базу на кластере "C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /S "srv01\trade" /N "Администратор" /P "" /RestoreIB "D:\Backup\trade.dt"
Для тех же задач есть утилита ibcmd, входящая в состав платформы. Она работает без Конфигуратора, а подключается к базе параметрами командной строки (СУБД, сервер, имя базы, пользователь). Базовая форма записи для выгрузки выглядит так, а полный список ключей вашего релиза покажет ibcmd infobase dump --help:
ibcmd infobase dump --dbms=PostgreSQL --db-server=localhost --db-name=trade --db-user=postgres --db-pwd=*** --user=Администратор --password=*** D:\Backup\trade.dt
Перенос файловой базы копированием каталога
Самый быстрый способ — закрыть все сеансы (проверьте процессы 1cv8.exe и 1cv8c.exe), скопировать каталог целиком, включая 1Cv8.1CD и 1Cv8Log, на новое место и добавить его в список баз через «Добавить в список существующей». Копировать работающую базу нельзя: копия получится несогласованной. Версия платформы на новом месте должна быть не ниже той, с которой работала база. Для клиент-серверной базы копирование файлов не подходит: переносят резервную копию СУБД (в MS SQL — файл .bak, в PostgreSQL — дамп) и регистрируют базу в кластере заново; формат СУБД и параметр смещения дат должны совпасть.
Резервное копирование
- Файловая база: регулярное копирование каталога при закрытых сеансах и выгрузка .dt. Хранить копию лучше на другом диске.
- Клиент-серверная: резервные копии СУБД по расписанию; для MS SQL важно настроить модель восстановления и копии журнала транзакций, для PostgreSQL — выгрузку и/или архивацию журналов.
- Выгрузка .dt подходит как дополнительная страховка перед обновлением конфигурации, но не заменяет резервную копию СУБД на больших базах.
MS SQL Server или PostgreSQL
| Критерий | PostgreSQL | MS SQL Server |
|---|---|---|
| Лицензия | Бесплатная | Платная, отдельно от 1С |
| Платформа | Linux и Windows | Windows, возможен Linux |
| Версия для 1С | Нужна сборка, совместимая с 1С | Стандартная |
| Инструменты | Консольные утилиты, сторонние оболочки | Management Studio, интегрированные планы обслуживания |
| Типичный выбор | Новые установки, Linux-серверы, экономия | Существующие Windows-инфраструктуры |
Типичные ошибки
- Копирование работающей файловой базы или её открытие сразу с нескольких версий платформы без закрепления версии.
- Использование обычного PostgreSQL, не предназначенного для 1С.
- Несовпадение смещения дат при переносе базы в СУБД.
- Расчёт на файловую базу при десятках пользователей, пока она не начнёт повреждаться.
- Отсутствие проверенного восстановления: резервные копии, из которых ни разу не разворачивали базу.
Актуальность для новых версий
Деление на файловый и клиент-серверный варианты сохраняется во всех релизах 8.3. Поддерживаются MS SQL Server, PostgreSQL, IBM DB2 и Oracle Database; список конкретных версий СУБД для каждого релиза платформы приведён в документации и в системных требованиях, сверяйтесь с ним перед установкой. Для PostgreSQL используются сборки, подготовленные под 1С (поставляются фирмой «1С» и отдельными производителями), обычный PostgreSQL из репозитория дистрибутива не подходит. Утилита ibcmd появилась в 8.3 и умеет выгружать и загружать базу без запуска Конфигуратора.
Частые вопросы
Когда пора переходить с файловой базы на клиент-серверную?
Ориентир — работа больше 10–15 человек одновременно, заметные «тормоза» при проведении документов и формировании отчётов, рост базы до нескольких гигабайт, фоновые задания и интеграции. Точные цифры зависят от конфигурации и нагрузки.
Какую СУБД выбрать для 1С: PostgreSQL или MS SQL?
PostgreSQL бесплатен и работает на Linux и Windows, MS SQL Server лицензируется отдельно и привычен для Windows-инфраструктур. Для типового сценария на несколько десятков пользователей подходят оба варианта; решают лицензии, опыт администратора и требования конфигурации.
Как перенести базу 1С на другой компьютер?
Для файловой базы закройте все сеансы и скопируйте каталог целиком, затем добавьте его в список баз на новом месте. Для любого типа базы работает выгрузка в .dt и загрузка в новую базу: «Администрирование → Выгрузить информационную базу».
Можно ли хранить файловую базу на сетевом диске?
Технически можно, но при обрыве связи и нескольких пользователей растёт риск повреждения файла. Надёжнее держать файловую базу на локальном диске сервера и публиковать её через веб-сервер либо перейти на клиент-серверный режим.