Хранение файлов в 1С:Документооборот: тома на диске, СУБД и рабочий каталог

· 10 мин

Содержание

Файлы 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.

Отсюда два практических правила:

  1. Указывайте путь в формате \\сервер\папка\, а не Z:\Files\. Подключённые сетевые диски существуют в сеансе пользователя, а служба их не видит.
  2. Дайте учётной записи службы 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» не перезаписали друг друга.

Связь «карточка → файл на диске» хранится в базе. В записи версии файла есть ссылка на том и относительный путь внутри него. Полный путь получается склейкой: путь тома плюс относительный путь.

Как найти файл конкретного документа:

  1. Откройте карточку файла в Документообороте.
  2. Перейдите к списку версий и откройте нужную версию.
  3. Посмотрите том и путь к файлу в реквизитах версии. Если на форме их не видно, откройте форму через «Ещё → Изменить форму» и включите скрытые поля — или попросите администратора.
  4. Соедините путь тома для вашей ОС с относительным путём и откройте каталог в проводнике.

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

Рабочий каталог пользователя

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

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

Диагностика: файл не открывается или не сохраняется

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

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

Проверка целостности тома

Для тома есть проверка целостности: она сравнивает записи в базе с файлами на диске. Отчёт покажет два вида расхождений:

  • ❌ файлы, которых нет на диске — запись в базе есть, а физического файла нет;
  • ❓ лишние файлы на диске — файл в каталоге есть, но ни одна версия на него не ссылается.

Первые восстанавливайте из резервной копии тома. Вторые обычно остаются после сбоев и ручных копирований; удаляйте их, только убедившись, что копия тома за эту дату есть.

Резервное копирование файлов Документооборота

При хранении в базе всё просто: выгрузка .dt или бэкап средствами СУБД содержит и файлы.

При хранении в томах выгрузка .dt и бэкап СУБД не содержат файлов из томов. Копировать нужно два объекта, и согласованно по времени.

Рекомендуемая схема:

  1. Ночью, в одно окно, делайте бэкап СУБД и копию каталогов томов.
  2. Тома копируйте инкрементно: файлы в них только добавляются, старые почти не меняются.
  3. Храните копии базы и томов вместе, с одной датой в имени.
  4. Раз в квартал проверяйте восстановление на тестовом сервере: разверните базу, перенастройте пути томов на копию, запустите проверку целостности.

Пример для 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. Проверьте, что получается корректное имя папки, прежде чем ставить задание в планировщик.

Восстановление на новом сервере

  1. Восстановите базу из бэкапа СУБД или загрузите .dt.
  2. Скопируйте каталоги томов целиком, с подкаталогами.
  3. Откройте справочник «Тома хранения файлов» и поменяйте полные пути на новое расположение.
  4. Выдайте права на папки учётной записи службы 1С на новом сервере.
  5. Запустите проверку целостности по каждому тому.

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

Перед вводом томов в работу
Выполнено: 0 / 6

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

Можно ли хранить часть файлов в базе, а часть в томах?
Да. После включения томов старые файлы остаются в базе, пока их не перенесут. Программа читает файл оттуда, где он лежит, поэтому смешанное состояние рабочее, но усложняет бэкап.
Можно ли положить том на NAS или облачный диск?
Можно, если серверу 1С доступна сетевая папка по UNC-пути или через смонтированный каталог с правами на запись. Синхронизируемые облачные папки на рабочих станциях для томов не подходят.
Сколько места займут файлы?
Сумма размеров всех версий всех файлов. Посчитайте размер каталогов томов и прибавьте рост за месяц — это и есть прогноз для дисков.
Шифруются ли файлы в томах?
Нет, в томах лежат обычные файлы. Защищайте каталог правами NTFS: доступ только у службы 1С и администраторов. Для отдельных документов используйте шифрование средствами Документооборота.
Что будет, если удалить файл из тома вручную?
Карточка останется, но файл не откроется. Проверка целостности покажет его как отсутствующий на диске. Вернуть его можно только из резервной копии тома.