Вложения в 1С:ДО: таблица базы, том на диске или локальный кэш
Содержание
Файлы в 1С:Документообороте хранятся в одном из двух мест: внутри самой информационной базы (в таблицах СУБД или в файле 1Cv8.1CD) либо в томах — обычных каталогах на диске сервера, путь к которым задаёт администратор. Какой вариант включён, решает одна настройка хранения файлов. Третье место — рабочий каталог на компьютере пользователя, куда файл копируется при открытии и редактировании.
Узнать, какой режим включён в вашей базе, проще всего по настройкам работы с файлами: если флажок хранения в томах снят, все вложения лежат в базе. Если включён — смотрите список томов и путь в карточке каждого.
Как ДО хранит файл и его версии
Карточка файла в Документообороте — это не сам документ Word или PDF. Это запись справочника: имя, автор, владелец (документ, задача, папка), признаки редактирования. Двоичное содержимое лежит отдельно и привязано к версии файла.
Каждое сохранение изменений создаёт новую версию. У каждой версии свои данные:
- 📄 номер версии, автор, дата создания;
- 📏 размер и расширение;
- 💾 место хранения: в информационной базе или в томе;
- 📂 для тома — ссылка на том и относительный путь к файлу внутри него.
Отсюда практическое следствие. Если у договора 12 версий по 5 МБ, на диске или в базе лежит около 60 МБ, а не 5. Старые версии не удаляются сами — их чистят вручную или регламентно, по правилам вашей организации.
Хранение работает на уровне каждой версии. После переключения настройки новые версии пишутся в новое место, а старые остаются там, где были. Поэтому в одной базе нормально видеть часть файлов в базе, часть — в томах.
Механизм работы с файлами в ДО построен на Библиотеке стандартных подсистем. Поэтому всё сказанное ниже в целом справедливо и для других конфигураций на БСП, но пути меню в статье даны для Документооборота.
Хранение файлов в информационной базе (SQL и файловый вариант)
Это вариант по умолчанию. Содержимое версий сериализуется и записывается в отдельную таблицу базы данных как двоичные данные.
Клиент-серверный вариант. Файлы лежат в базе на MS SQL Server или PostgreSQL. Отдельной папки с документами на сервере нет — только файлы данных СУБД (.mdf, .ndf для MS SQL или каталог данных PostgreSQL).
Файловый вариант. Всё внутри одного файла 1Cv8.1CD в каталоге базы. Этот файл растёт вместе с вложениями.
Имена таблиц в СУБД не совпадают с именами объектов конфигурации: платформа использует служебные имена вида _InfoRg1234 или _Reference56. Чтобы понять, какая таблица хранит двоичные данные файлов, выполните в консоли запросов или внешней обработке:
Структура = ПолучитьСтруктуруХраненияБазыДанных(, Истина);
Для Каждого Строка Из Структура Цикл
Если СтрНайти(Строка.Метаданные, "Файл") > 0 Тогда
Сообщить(Строка.Метаданные + " -> " + Строка.ИмяТаблицы);
КонецЕсли;
КонецЦикла;
Второй параметр Истина возвращает имена таблиц в терминах СУБД. В выводе ищите объекты, в названии которых есть «Двоичные данные» или «Версии файлов».
Не меняйте и не удаляйте строки в таблицах 1С напрямую через SQL. Платформа не узнает об изменениях, ссылки в версиях останутся, а файлы перестанут открываться. Читать данные через SQL для оценки объёма — можно, править — нет.
Когда хранение в базе удобно:
- ✅ база небольшая, вложений мало;
- ✅ одна резервная копия СУБД содержит всё сразу;
- ❌ при десятках гигабайт вложений растут время бэкапа, размер
.dtи нагрузка на сервер СУБД.
Тома на диске: что лежит в каталоге
Том хранения — это элемент справочника в ДО, который указывает на каталог на диске. В карточке тома задаются:
| Поле | Что значит |
|---|---|
| Полный путь Windows | Каталог для сервера на Windows, например D:\1C_Files\Vol01\ или \\fs01\docflow$\Vol01\ |
| Полный путь Linux | Каталог для сервера на Linux, например /srv/1c_files/vol01/ |
| Максимальный размер | Лимит тома в мегабайтах; 0 — без ограничения |
| Порядок заполнения | Какой том заполняется первым, когда их несколько |
Когда текущий том достигает лимита, следующие версии пишутся в том со следующим порядком заполнения. Если места нет ни в одном томе, сохранение файла завершится ошибкой.
Внутри корня тома программа сама создаёт подкаталоги и раскладывает по ним файлы версий. Что важно знать о содержимом:
- 🔢 имя файла на диске не обязано совпадать с именем в карточке: к нему добавляются номер версии и служебные части;
- 🗂️ структура подкаталогов служебная, её нельзя перестраивать вручную;
- 🔗 связь «карточка — файл на диске» держится на относительном пути, записанном в версии. Переименовали папку внутри тома — ссылка сломана.
Чтобы узнать, где именно лежит конкретная версия, откройте карточку файла, перейдите к списку версий и посмотрите сведения о версии: там видны том и путь. Найти документ «пролистыванием» каталога тома почти невозможно, и это нормально.
Переносить весь том на другой диск можно: скопируйте каталог целиком с сохранением структуры и поменяйте путь в карточке тома. Делайте это, когда никто не работает с файлами, иначе часть новых версий запишется в старое место.
Где в интерфейсе включить тома и указать путь
Настройка находится в разделе администрирования. В ДО 3.x он называется «Настройка», в ДО 2.1 — «Настройка и администрирование». Внутри ищите группу настроек работы с файлами (название группы в разных релизах может немного отличаться).
Порядок включения хранения в томах:
- Создайте каталог на сервере и выдайте права (о правах — в следующем разделе).
- Откройте настройки работы с файлами и перейдите к списку томов хранения.
- Создайте том: наименование, путь Windows и/или Linux, максимальный размер, порядок заполнения.
- Включите флажок хранения файлов в томах на диске.
- Загрузите в любой документ тестовый файл и убедитесь, что он появился в каталоге тома.
- Если нужно перенести уже накопленные файлы из базы — запустите обработку переноса файлов в тома, доступную из той же группы настроек.
Перед массовым переносом сделайте резервную копию базы и проверьте, что на диске хватает места с запасом: объём вложений можно оценить по размеру таблиц из предыдущего раздела.
Там же, в настройках работы с файлами, задают ограничения на загрузку: максимальный размер одного файла и запрещённые расширения. Эти ограничения не зависят от места хранения.
Рабочий каталог пользователя. При открытии файла на просмотр или редактирование ДО копирует его на компьютер пользователя. Путь к этому каталогу и лимит его размера видны в персональных настройках работы с файлами. По умолчанию каталог находится внутри профиля Windows (в AppData). Это кэш: оригинал всё равно хранится в базе или томе, а изменения попадают туда только после команды «Закончить редактирование» или сохранения изменений.
Права доступа Windows и службы 1С
Самая частая проблема с томами — не путь, а права. Кто пишет файл на диск, зависит от варианта работы:
| Вариант базы | Кто обращается к тому |
|---|---|
| Клиент-серверный | Рабочий процесс сервера 1С (rphost) под учётной записью службы агента сервера 1С |
| Файловый, тонкий/толстый клиент | Процесс клиента под учётной записью каждого пользователя |
| Веб-клиент через веб-сервер | Процесс веб-сервера (IIS или Apache) под его учётной записью |
Отсюда правила:
- В клиент-серверном варианте права на изменение каталога тома нужны учётной записи службы 1С, а не пользователям. Пользователям прямой доступ к папке не нужен вообще — и лучше его не давать.
- Для сетевой папки указывайте путь UNC (
\\fs01\docflow$\Vol01\). Подключённые буквы дисков (Z:\) существуют только в сеансе пользователя, служба их не видит. - Если служба работает под локальной учётной записью, к сетевой папке на другом сервере она не получит доступа. Нужна доменная учётная запись службы с правами и на общий ресурс, и на NTFS.
- На Linux каталог тома должен принадлежать пользователю, от имени которого запущен сервер 1С, или быть доступен ему на запись.
Если для применения новых прав нужно перезапустить службу агента сервера 1С, все пользователи потеряют текущие сеансы, а несохранённые изменения пропадут. Перезапуск планируйте на нерабочее время и предупреждайте сотрудников заранее.
Отдельно про антивирус: проверка каталога тома в реальном времени может блокировать запись крупных файлов. Если ошибки записи «плавающие», проверьте журнал антивируса, а не только права.
Резервное копирование и восстановление файлов
Главное правило для томов: выгрузка .dt и бэкап СУБД не содержат файлы из томов. В копии базы будут только карточки и ссылки. Сами документы нужно сохранять отдельно — копированием каталогов томов.
Чтобы копии были согласованными, база и тома должны быть скопированы на один и тот же момент:
- 🕐 запускайте копирование томов сразу после бэкапа СУБД, в одно ночное окно;
- 📦 храните копии базы и томов парами, с одинаковой датой в имени;
- 🔁 для томов подходит инкрементное копирование: старые файлы версий не меняются, добавляются только новые;
- 🧪 раз в квартал восстанавливайте пару «база + тома» на тестовый сервер и открывайте случайные файлы.
Восстановление по шагам:
- Восстановите базу из бэкапа нужной даты.
- Восстановите каталоги томов из копии той же даты, с исходной структурой подкаталогов.
- Если тома теперь лежат по другому пути, исправьте путь в карточке каждого тома.
- Откройте несколько файлов разных лет и разных томов.
Если восстановить только базу на более раннюю дату, тома будут содержать «лишние» файлы — это безопасно, они просто ни на что не ссылаются. Обратная ситуация опаснее: база новее томов, и часть свежих версий открыть нельзя.
Копия рабочей базы, развёрнутая для тестов, по умолчанию смотрит в те же тома, что и рабочая. Удаление файлов или помеченных объектов в тестовой копии может стереть файлы рабочей базы с диска. Сразу после развёртывания копии поменяйте пути томов на отдельный каталог или отключите хранение в томах.
Частые ошибки администратора
- ❌ Чистят каталог тома вручную, чтобы освободить место. Карточки остаются, файлы пропадают. Место освобождают через удаление лишних версий и удаление помеченных объектов в самой программе: тогда файл уходит с диска вместе с записью.
- ❌ Переключили хранение в тома и ждут, что база похудеет. Старые файлы остаются в базе, пока не запущен перенос. После переноса для реального уменьшения размера базы MS SQL нужно ещё сжатие файлов данных средствами СУБД.
- ❌ Указали путь к тому на диске сервера СУБД, а сервер 1С стоит на другой машине. Путь
D:\...в карточке тома всегда читается со стороны сервера 1С. - ❌ Один том без лимита на системном диске. Диск
C:заполняется, и ломается уже не только ДО. Выделяйте под тома отдельный диск и ставьте лимит.