Хранение файлов в 1С:Документооборот: тома на диске, СУБД и рабочий каталог
Содержание
Файлы 1С:Документооборота хранятся в одном из двух мест: внутри информационной базы или в томах хранения файлов, то есть в обычных каталогах на диске или в сетевой папке. Какой вариант включён, задаёт администратор в настройках работы с файлами, а список томов с полными путями лежит в справочнике «Тома хранения файлов». Есть и третье место — рабочий каталог на компьютере пользователя, но там только временные копии для редактирования.
Чаще всего вопрос возникает в трёх ситуациях: база резко выросла, файлы перестали открываться после переноса сервера или нужно правильно настроить резервное копирование . Во всех трёх случаях сначала нужно понять, в каком режиме работает ваша база и куда смотрят пути томов.
Два способа хранения файлов в Документообороте
Документооборот работает с файлами через механизмы Библиотеки стандартных подсистем (БСП). Поэтому логика одинакова в редакциях 2.0, 2.1 и 3.x: меняется интерфейс, но не принцип.
| Способ | Где физически лежат данные | Плюсы | Минусы |
|---|---|---|---|
| В информационной базе | В таблицах СУБД или в файле 1Cv8.1CD | Один объект для бэкапа, транзакционность, файл не потеряется отдельно от карточки | База растёт на гигабайты, дольше выгрузка .dt, тяжелее обслуживание СУБД |
| В томах на диске | В каталогах, указанных в справочнике «Тома хранения файлов» | База компактная, файлы легко вынести на дешёвый диск | Бэкап из двух частей, нужны права на папку у службы 1С, риск рассинхронизации |
Для рабочей системы с десятками пользователей обычно выбирают тома. Хранение в базе оправдано на небольшой файловой базе или в пилотном проекте, где файлов немного.
Что хранится отдельно: файл и его версии
В Документообороте у файла есть карточка и версии. Каждое сохранение изменённого документа создаёт новую версию, и это полноценная копия файла, а не разница с предыдущей. Договор на 5 МБ, который правили 12 раз, занимает около 60 МБ.
💡 Если версии не нужны (сканы, входящие письма), отключите хранение версий в карточке файла. Это заметно замедляет рост томов.
Переключение способа хранения
Смена настройки не переносит старые файлы. После включения томов новые файлы пойдут на диск, а прежние останутся в базе. Чтобы вынести и их, в разделе администрирования работы с файлами есть команда переноса файлов в тома: она проходит по файлам базы и выкладывает их в каталоги томов.
Перенос нагружает сервер и СУБД. Запускайте его вне рабочего времени и только после полной резервной копии базы.
Тома хранения: как устроены и где задаются пути
Том — это запись справочника «Тома хранения файлов». Открыть его можно из настроек работы с файлами в разделе администрирования. У тома есть ключевые поля:
- 📁 Полный путь Windows — каталог, куда пишут файлы серверы 1С на Windows, например
\\fs01\DO_Files\Tom01\; - 🐧 Полный путь Linux — тот же каталог для серверов 1С на Linux, например
/mnt/do_files/tom01/; - 📏 Максимальный размер — предел в мегабайтах, после которого том считается заполненным;
- 🔢 Порядок заполнения — очерёдность: файлы пишутся в первый незаполненный том.
Когда первый том достигает лимита, программа начинает писать во второй. Так удобно разносить архив по дискам: старые тома остаются на медленном хранилище, текущий — на быстром.
Почему важен UNC-путь, а не буква диска
В клиент-серверном режиме файл на диск записывает не компьютер пользователя, а рабочий процесс сервера 1С (rphost). Он работает под учётной записью службы агента сервера, по умолчанию это USR1CV8.
Отсюда два практических правила:
- Указывайте путь в формате
\\сервер\папка\, а неZ:\Files\. Подключённые сетевые диски существуют в сеансе пользователя, а служба их не видит. - Дайте учётной записи службы 1С права на изменение в этой папке — и на уровне общего ресурса, и в NTFS.
В файловом режиме всё наоборот: файл пишет клиентское приложение под учётной записью пользователя Windows. Права на папку тома нужны каждому сотруднику, который работает с базой.
Тома на сервере Linux
Если кластер 1С развёрнут на Linux, заполните поле «Полный путь Linux». Сетевую папку обычно монтируют через CIFS или NFS в постоянный каталог, например /mnt/do_files. Владельцем или пользователем с правами на запись должен быть пользователь, от которого работает сервер 1С, обычно usr1cv8.
При смешанном кластере из серверов Windows и Linux заполните оба пути. Они должны указывать на одно и то же физическое хранилище.
Где хранились файлы в ранних версиях и при обмене
В первых редакциях Документооборота (линейка 1.x) файлы по умолчанию лежали в информационной базе, а тома использовали реже. Если вы обслуживаете такую систему, сначала посмотрите, включено ли хранение в томах и заполнен ли справочник томов. Пустой справочник означает, что всё внутри базы.
При распределённой информационной базе (РИБ) файлы между узлами передаются в составе сообщений обмена. Каталог обмена — это транспорт, а не место хранения: после загрузки сообщения файл оказывается в базе или в томах принимающего узла по его собственным настройкам.
Отсюда частая ошибка: администратор находит в папке обмена архивы сообщений и принимает её за хранилище документов. Удалять файлы из тома или чистить каталог обмена вручную, пока узлы не синхронизированы, нельзя.
💡 В каждом узле РИБ свой справочник томов со своими путями. После создания нового узла проверьте, что тома в нём указывают на локальное хранилище этого узла, а не на папку центральной базы.
Где файлы физически хранятся в MS SQL Server и PostgreSQL
Если выбрано хранение в базе, содержимое файлов попадает в обычные таблицы СУБД. В MS SQL Server это поля типа varbinary(max) или image, в PostgreSQL — bytea. В файловой базе всё лежит внутри 1Cv8.1CD.
Таблицы называются не по-русски, а служебными именами вида _InfoRg1234 или _Reference56. Связь имени таблицы с объектом конфигурации показывает метод встроенного языка ПолучитьСтруктуруХраненияБазыДанных() — его используют обработки для анализа структуры базы.
Найти самые тяжёлые таблицы можно запросом прямо к СУБД. Для MS SQL Server:
SELECT TOP 15
t.name AS table_name,
SUM(a.total_pages) * 8 / 1024 AS size_mb
FROM sys.tables t
JOIN sys.indexes i ON t.object_id = i.object_id
JOIN sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id
JOIN sys.allocation_units a ON p.partition_id = a.container_id
GROUP BY t.name
ORDER BY size_mb DESC;
Для PostgreSQL:
SELECT relname AS table_name,
pg_size_pretty(pg_total_relation_size(relid)) AS total_size
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC
LIMIT 15;
Если в топе одна-две таблицы на десятки гигабайт, а остальные мелкие — почти наверняка это двоичные данные файлов. Это сигнал переносить файлы в тома.
Не меняйте и не удаляйте данные в таблицах 1С напрямую через SQL. Чтение для анализа безопасно, а запись в обход платформы ломает ссылочную целостность и не поддерживается.
Как устроены каталоги тома и как найти конкретный файл
Внутри тома программа сама создаёт подкаталоги и кладёт туда файлы. Имя на диске обычно похоже на исходное, но может отличаться: программа добавляет к нему уникальную часть, чтобы два «Договор.docx» не перезаписали друг друга.
Связь «карточка → файл на диске» хранится в базе. В записи версии файла есть ссылка на том и относительный путь внутри него. Полный путь получается склейкой: путь тома плюс относительный путь.
Как найти файл конкретного документа:
- Откройте карточку файла в Документообороте.
- Перейдите к списку версий и откройте нужную версию.
- Посмотрите том и путь к файлу в реквизитах версии. Если на форме их не видно, откройте форму через «Ещё → Изменить форму» и включите скрытые поля — или попросите администратора.
- Соедините путь тома для вашей ОС с относительным путём и откройте каталог в проводнике.
Обратная задача — по файлу на диске найти карточку — решается только запросом к базе по относительному пути. Поэтому не переименовывайте и не перекладывайте файлы в томе вручную: программа их больше не найдёт.
Рабочий каталог пользователя
Когда сотрудник открывает файл на редактирование, копия выгружается в его рабочий каталог на локальном компьютере. Путь к нему виден в персональных настройках работы с файлами. После «Закончить редактирование» изменения уходят в базу или в том как новая версия.
Рабочий каталог — не хранилище. Его можно чистить, но только когда у пользователя нет файлов, занятых на редактирование. Иначе несохранённые правки пропадут.
Диагностика: файл не открывается или не сохраняется
Большинство проблем с доступом к файлам сводится к трём причинам: нет прав, неверный путь или файл физически отсутствует в томе.
Проверка целостности тома
Для тома есть проверка целостности: она сравнивает записи в базе с файлами на диске. Отчёт покажет два вида расхождений:
- ❌ файлы, которых нет на диске — запись в базе есть, а физического файла нет;
- ❓ лишние файлы на диске — файл в каталоге есть, но ни одна версия на него не ссылается.
Первые восстанавливайте из резервной копии тома. Вторые обычно остаются после сбоев и ручных копирований; удаляйте их, только убедившись, что копия тома за эту дату есть.
Резервное копирование файлов Документооборота
При хранении в базе всё просто: выгрузка .dt или бэкап средствами СУБД содержит и файлы.
При хранении в томах выгрузка .dt и бэкап СУБД не содержат файлов из томов. Копировать нужно два объекта, и согласованно по времени.
Рекомендуемая схема:
- Ночью, в одно окно, делайте бэкап СУБД и копию каталогов томов.
- Тома копируйте инкрементно: файлы в них только добавляются, старые почти не меняются.
- Храните копии базы и томов вместе, с одной датой в имени.
- Раз в квартал проверяйте восстановление на тестовом сервере: разверните базу, перенастройте пути томов на копию, запустите проверку целостности.
Пример для Windows — копирование тома с сохранением структуры и журналом:
robocopy \\fs01\DO_Files D:\Backup\DO_Files\%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2% /E /COPY:DAT /R:2 /W:5 /LOG+:D:\Backup\robocopy_do.log
Формат %DATE% зависит от региональных настроек Windows. Проверьте, что получается корректное имя папки, прежде чем ставить задание в планировщик.
Восстановление на новом сервере
- Восстановите базу из бэкапа СУБД или загрузите
.dt. - Скопируйте каталоги томов целиком, с подкаталогами.
- Откройте справочник «Тома хранения файлов» и поменяйте полные пути на новое расположение.
- Выдайте права на папки учётной записи службы 1С на новом сервере.
- Запустите проверку целостности по каждому тому.
Если база восстановлена на более раннюю дату, чем тома, в томах окажутся лишние файлы. Если наоборот — в базе будут записи без файлов. Поэтому и нужна согласованная копия.