Файловая база 1С хорошо работает, пока с ней сидят два-три бухгалтера. Потом людей становится больше, база растёт, проведение документов и закрытие месяца работают медленно, а копировать базу приходится, выгоняя всех из программы. На этом этапе обычно и встаёт вопрос о переводе базы в клиент-серверный режим.
Коротко: нужен сервер 1С:Предприятия той же версии, что и клиентская платформа, СУБД (MS SQL Server или PostgreSQL в сборке для 1С) и лицензия на сервер 1С. Сам перенос простой: выгружаете файловую базу в .dt, создаёте новую базу в кластере серверов 1С и загружаете в неё .dt. Больше всего времени уходит на подготовку и проверку, а не на сам перенос.
Когда пора переходить
В материалах 1С файловый вариант описан как режим для работы одного пользователя или небольшого числа пользователей в локальной сети. Там же сказано, что клиент-серверный вариант надёжнее (описание файлового варианта на v8.1c.ru). Точного числа пользователей, после которого надо переходить, 1С не называет. Я смотрю на признаки:
- пользователи всё чаще мешают друг другу: один проводит документы, у остальных всё замирает;
- база заметно выросла, а регламентные операции (закрытие месяца, пересчёт итогов) идут всё дольше;
- базу открывают по сети с общей папки, и периодически она повреждается после обрыва связи или зависшего клиента;
- нужна резервная копия без остановки работы и с возможностью восстановиться на определённый момент;
- к базе нужен доступ из нескольких офисов или из дома, обычно через терминальный сервер.
Если совпадает хотя бы два пункта, переход почти наверняка окупит потраченное время.
Что понадобится
| Компонент | Что именно | На что обратить внимание |
|---|---|---|
| Сервер 1С:Предприятия | Устанавливается из дистрибутива платформы, работает как служба | Версия сервера и клиентской платформы должна совпадать вплоть до номера сборки |
| СУБД | MS SQL Server или PostgreSQL в сборке для 1С | Для PostgreSQL берите сборку из списка поддерживаемых на v8.1c.ru: PostgreSQL с патчем 1С или Postgres Pro для 1С. |
| Обычный PostgreSQL из репозитория для 1С не подходит | Лицензия на сервер 1С | «Сервер МИНИ», лицензия на 64-разрядный сервер или КОРП | «МИНИ» допускает не более пяти сеансов «1С:Предприятия» и ещё один сеанс конфигуратора | Клиентские лицензии | Те же, что были у файловой базы | Клиентские лицензии нужны и в клиент-серверном режиме, серверная лицензия их не заменяет | Лицензии СУБД | Для MS SQL Server — по правилам Microsoft; PostgreSQL бесплатен | У SQL Server Express база ограничена 10 ГБ, а SQL Server Agent и сжатия резервных копий в нём нет |
Для небольшой компании сервер 1С и СУБД можно поставить на одну машину, иногда на тот же сервер, где работают терминальные пользователи. Главное, чтобы хватило памяти и под СУБД, и под рабочие процессы 1С.
MS SQL или PostgreSQL
| MS SQL Server | PostgreSQL для 1С | |
|---|---|---|
| Лицензирование | Платные редакции, Express бесплатный, но с ограничениями | Бесплатно (у Postgres Pro свои условия для коммерческих редакций) |
| ОС сервера | В связке с 1С обычно Windows Server | Windows и Linux |
| Администрирование | Привычный графический интерфейс SSMS, планы обслуживания | Больше работы в консоли, настройки в postgresql.conf |
| Резервное копирование | BACKUP DATABASE, полная модель восстановления с журналом |
pg_dump, при необходимости архивирование WAL |
Если в компании уже есть лицензированный SQL Server и админ, который с ним работает, я остаюсь на нём. Если покупать ничего не хочется или сервер будет на Linux, выбираю PostgreSQL. Для типовых конфигураций 1С работает с обеими СУБД.
Подготовка файловой базы
- Предупредите пользователей и выберите время, когда в базе никого не будет. Выгрузка в
.dtтребует монопольного доступа. - Сделайте копию каталога базы целиком (файл
1Cv8.1CDи всё рядом). Это страховка на случай, если что-то пойдёт не так. - Запустите конфигуратор и выполните «Администрирование» → «Тестирование и исправление». Ошибки в данных лучше найти до переноса, а не после.
- Проверьте, что на сервере установлена ровно та версия платформы, которой открывается база.
Выгрузка в .dt
В конфигураторе: «Администрирование» → «Выгрузить информационную базу», указываете путь к файлу. То же самое можно сделать из командной строки, это удобно, если баз несколько:
"C:Program Files1cv88.3.xx.xxxxbin1cv8.exe" DESIGNER /F"D:BasesBuh" /N"Администратор" /P"пароль" /DumpIB "D:Backupbuh.dt" /Out "D:Backupdump.log"
Ключ /F указывает путь к файловой базе, /DumpIB — файл выгрузки, /Out — файл журнала. Если в базе нет пользователей, /N и /P не нужны. После выгрузки откройте журнал и убедитесь, что ошибок нет.
Создание базы в кластере
Перед этим на сервере СУБД должен быть пользователь, у которого есть право создавать базы: в SQL Server это логин SQL-аутентификации, в PostgreSQL — роль (часто postgres или отдельная). Саму базу проще создать из 1С, а не заранее в СУБД.
- Откройте оснастку «Администрирование серверов 1С Предприятия», подключитесь к центральному серверу, разверните кластер и в разделе «Информационные базы» выберите «Создать». Другой вариант — в окне запуска 1С нажать «Добавить» → «Создание новой информационной базы» → «Создание информационной базы без конфигурации» → «На сервере 1С:Предприятия».
- Заполните поля: кластер серверов, имя информационной базы, тип СУБД, сервер баз данных, имя базы данных, пользователь и пароль сервера БД.
- Для MS SQL Server укажите смещение дат. Обычно ставят 2000, главное — не менять его потом.
- Отметьте «Создать базу данных в случае её отсутствия».
- Отметьте «Установить блокировку регламентных заданий». Пока вы проверяете новую базу, она не должна параллельно с файловой запускать обмены, загрузку курсов и прочие фоновые задания.
Загрузка .dt и проверка
Откройте новую базу в конфигураторе («Сервер» в строке подключения) и выполните «Администрирование» → «Загрузить информационную базу». Из командной строки:
"C:Program Files1cv88.3.xx.xxxxbin1cv8.exe" DESIGNER /S"srv1cbuh" /N"Администратор" /P"пароль" /RestoreIB "D:Backupbuh.dt" /Out "D:Backuprestore.log"
Здесь /S — адрес сервера и имя базы в кластере. После загрузки я проверяю:
- вход под несколькими пользователями с разными правами;
- пару отчётов, сравнивая цифры со старой файловой базой (оборотно-сальдовая ведомость за прошлый период подходит идеально);
- печать документов, внешние обработки и отчёты, обмены, подключение торгового оборудования;
- что 1С получает лицензии и не пишет об их отсутствии при входе нескольких человек.
Когда всё в порядке, снимите блокировку регламентных заданий в свойствах базы, удалите файловую базу из списков у пользователей, а сам каталог переименуйте или сделайте доступным только для чтения. Иначе кто-нибудь обязательно продолжит работать в старой базе по ярлыку.
Сразу после переноса настройте резервное копирование на стороне СУБД и ограничьте память SQL Server, чтобы он не забрал её всю. Про параметры MS SQL под 1С я писал отдельно: тонкие настройки MS SQL для 1С.
Типичные ошибки
| Симптом | Причина | Решение |
|---|---|---|
| Клиент не подключается, пишет о несовпадении версий | На компьютере пользователя или терминальном сервере другая сборка платформы | Установить ту же сборку, что и на сервере 1С |
| Подключение не устанавливается с другого компьютера | Брандмауэр закрывает порты кластера | Открыть порт агента (по умолчанию 1540), менеджера кластера (1541) и диапазон рабочих процессов (по умолчанию 1560–1591) |
| Ошибка СУБД при создании базы | Неверный пользователь СУБД, нет прав на создание базы, неправильное имя сервера или экземпляра | Проверить подключение этим же логином через SSMS или psql |
| При входе 1С сообщает, что не обнаружена лицензия | Нет серверной лицензии или исчерпан лимит сеансов «МИНИ» | Проверить лицензии на сервере 1С и число активных сеансов |
| Через пару недель кончилось место на диске SQL | Полная модель восстановления без резервного копирования журнала, файл .ldf растёт |
Настроить копирование журнала или перейти на простую модель |
| Обмены отработали дважды | Регламентные задания работали в старой и новой базе одновременно | Блокировать задания в новой базе до окончательного переключения |
Если не хочется держать собственный сервер 1С и СУБД, можно сразу перенести 1С в облако: база будет работать в клиент-серверном режиме на чужом оборудовании, а резервные копии и обновление платформы возьмёт на себя поставщик. Если сервер свой и нужна помощь с установкой, это обычная задача по настройке серверов Windows и Linux.
Частые вопросы
Можно ли вернуть базу обратно в файловый режим?
Да. Выгружаете клиент-серверную базу в .dt через конфигуратор, создаёте пустую файловую базу и загружаете туда файл. Формат .dt не зависит от режима работы базы.
Нужно ли покупать новые клиентские лицензии?
Нет, клиентские лицензии остаются прежними. Дополнительно нужна только лицензия на сервер 1С. Учтите правила для КОРП: серверная лицензия уровня КОРП требует клиентских лицензий того же уровня.
Сколько длится перенос?
Зависит от размера базы и скорости дисков. Выгрузка и загрузка небольшой базы занимают минуты, крупной — заметно дольше. Я всегда делаю пробный перенос заранее, засекаю время и только потом назначаю окно для боевого переноса.
Можно ли поставить сервер 1С и СУБД на терминальный сервер?
Для небольшой компании можно, это вполне рабочая схема. Нужно только следить за памятью: СУБД, рабочие процессы 1С и пользовательские сеансы делят одни ресурсы, поэтому память SQL Server обязательно ограничивают.