Решение задач 1С:Предприятие 8 на примерах

База данных 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

КритерийPostgreSQLMS SQL Server
ЛицензияБесплатнаяПлатная, отдельно от 1С
ПлатформаLinux и WindowsWindows, возможен 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 и загрузка в новую базу: «Администрирование → Выгрузить информационную базу».

Можно ли хранить файловую базу на сетевом диске?

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

Сервер 1С:Предприятия и кластер: состав, порты, консоль, rac и веб-сервер

Базы данных и СУБД

Устройство сервера 1С и кластера, порты по умолчанию, консоль администрирования и управление сеансами через rac, кэш сервера, установка на Windows и Linux и публикация базы на веб-сервере.

Файл базы данных поврежден в 1С 8.3: как исправить ошибку СУБД

Базы данных и СУБД

Пошаговое восстановление файловой базы 1С при ошибке «Файл базы данных поврежден»: резервная копия, chdbfl.exe, тестирование и исправление и запасные варианты.

Ошибка формата потока в 1С 8.3: причины и как исправить

Базы данных и СУБД

Разбираем, откуда берётся «Ошибка формата потока» в 1С 8.3 и в каком порядке её устранять: от очистки кэша до chdbfl и восстановления конфигурации из файла.

Ошибка «Нарушена целостность структуры конфигурации»: восстановление через MS SQL

Базы данных и СУБД

После неудачного динамического обновления база 1С не открывается с ошибкой о нарушенной целостности конфигурации. Разбираем по шагам восстановление через таблицы Config и Params в MS SQL.