Вложения к документам 1С 8.3: где хранить, как включить и как защитить
Содержание
Прикрепить файл
к документу в типовой конфигурации 1С 8.3 можно кнопкой со скрепкой в командной панели формы: она открывает список присоединённых файлов, куда файл добавляют с диска, перетаскиванием или со сканера. Если кнопки нет или файлы быстро раздувают базу, дело в настройке хранения: Администрирование → Общие настройки, группа про работу с файлами.
Сделать прикрепление файлов в 1С правильно — значит заранее решить три вопроса: где лежат вложения (в таблицах базы или в томах на диске), какой у них предельный размер и кто их видит. Ошибка в любом из них всплывает позже: распухшая база, пропавшие после переезда вложения или сканы паспортов, открытые всем подряд.
Где хранить вложения: в базе или в томах на диске
Механизм присоединённых файлов в типовых решениях (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, ERP, УНФ) построен на подсистеме «Работа с файлами» из Библиотеки стандартных подсистем (БСП). Она умеет хранить содержимое файлов двумя способами.
| Способ | Где лежат данные | Когда подходит | Минусы |
|---|---|---|---|
| В информационной базе | Двоичные данные в таблицах СУБД или в файле 1Cv8.1CD | Небольшая база, мало вложений, одна резервная копия на всё | База растёт, выгрузка .dt и бэкап СУБД становятся тяжёлыми |
| В томах на диске | Каталог на сервере или в сетевой папке, в базе только ссылка | Много сканов, договоров, фото; базе больше 50–100 ГБ тесно | Нужно бэкапить каталог отдельно и синхронно с базой |
Практическое правило простое. Если пользователи прикрепляют в основном счета и акты в PDF по 200–500 КБ, хранение в базе годами не создаёт проблем. Если к каждой реализации цепляют сканы с фотографиями, проектную документацию или видео, переходите на тома сразу, пока переносить нечего.
Тома можно включить и позже: в БСП есть перенос уже загруженных файлов из базы в тома. Но на большом объёме это часы работы, поэтому решение лучше принять на старте.
Как включить хранение файлов в типовой конфигурации
В типовых конфигурациях на БСП настройки собраны в разделе Администрирование → Общие настройки. Найдите на форме группу, посвящённую работе с файлами, и откройте ссылку с настройками хранения. Состав флажков немного отличается от релиза к релизу БСП: в новых версиях появилась возможность хранить часть файлов в базе, а часть в томах.
Шаг 1. Выберите способ хранения
- Укажите вариант хранения: в информационной базе или в томах на диске.
- Задайте максимальный размер загружаемого файла. Не ставьте его «с запасом» в несколько гигабайт: большие файлы идут через временное хранилище сервера и нагружают память рабочего процесса.
- Проверьте список запрещённых расширений. В него стоит включить исполняемые файлы:
exe,bat,cmd,vbs,js,scr.
Шаг 2. Создайте том хранения файлов
Если выбраны тома, без хотя бы одного тома файлы загружаться не будут. Список томов открывается из тех же настроек работы с файлами.
- Создайте элемент тома, дайте понятное имя: «Основной том 2026» или «Сканы бухгалтерии».
- Заполните полный путь для Windows, например
\\fs01\1c_files\buh\, и, если сервер 1С работает на Linux, путь для Linux:/mnt/1c_files/buh/. - Задайте максимальный размер тома в мегабайтах. Когда том заполнится, файлы пойдут в следующий по порядку.
- Сохраните и попробуйте прикрепить тестовый файл.
Путь должен быть доступен на запись той учётной записи, от которой работает процесс, реально записывающий файл. В клиент-серверном варианте это служба сервера 1С (часто USR1CV8 или доменная учётка). В файловом варианте — каждый пользователь со своего компьютера.
Не указывайте путь с буквой подключённого сетевого диска (Z:\files). Служба сервера 1С не видит дисков, подключённых в сеансе пользователя. Используйте UNC-путь \\сервер\папка.
Шаг 3. Перенесите старые файлы, если нужно
Если база уже работала с хранением внутри, после создания тома запустите перенос файлов в тома из той же группы настроек. Делайте это вне рабочего времени и после полной резервной копии базы: перенос пишет много данных и надолго занимает сервер.
Как прикрепить файл к документу или справочнику
Для пользователя порядок одинаковый в любой типовой конфигурации на БСП.
- Откройте документ или элемент справочника и запишите его. К незаписанному объекту файл не привязать: у него ещё нет ссылки.
- Нажмите кнопку со скрепкой в командной панели формы. Откроется список присоединённых файлов этого объекта.
- Добавьте файл одним из способов:
- 📁 выбрать с диска;
- 🖱 перетащить мышью из проводника прямо в список;
- 🖨 отсканировать, если настроен сканер;
- 📄 создать по шаблону из другого файла.
- При необходимости заполните описание и подпишите файл электронной подписью.
Чтобы отредактировать вложение, его сначала занимают для редактирования. Файл открывается на компьютере в рабочем каталоге, после правки изменения помещают обратно в 1С. Пока файл занят, другие пользователи видят, кто его редактирует, и не могут сохранить параллельную версию.
В списках документов число вложений часто видно по значку скрепки в колонке. Если колонки нет, добавьте её через настройку формы списка.
Прикрепление файлов в своей конфигурации: БСП и встроенный язык
Если вы дорабатываете конфигурацию, вариантов два: подключить подсистему «Работа с файлами» к новому объекту или написать собственное хранение на реквизите типа ХранилищеЗначения.
Подключение к объекту через БСП
Для каждого владельца файлов в БСП создаётся свой справочник присоединённых файлов. Имя строится по шаблону <ИмяВладельца>ПрисоединенныеФайлы, например ЗаявкиНаРасходПрисоединенныеФайлы.
Порядок для разработчика:
- Скопируйте структуру реквизитов из любого существующего справочника
…ПрисоединенныеФайлытой же конфигурации. РеквизитВладелецФайладолжен иметь тип вашего объекта. - Добавьте тип владельца и тип нового справочника в определяемые типы подсистемы «Работа с файлами» (они начинаются со слов
ВладелецПрисоединенныхФайловиПрисоединенныйФайл). - Включите справочник в подписки на события подсистемы, если они перечисляют типы явно.
- Добавьте на форму владельца команду присоединённых файлов. В свежих релизах БСП это делается программно в
ПриСозданииНаСерверечерез процедуры модуля подсистемы — посмотрите, как это сделано в формах типовых документов той же конфигурации, и повторите.
Программно файл добавляют функцией РаботаСФайлами.ДобавитьФайл. Параметры для неё получают через РаботаСФайлами.ПараметрыДобавленияФайла(), а содержимое передают адресом во временном хранилище. Точный набор параметров сверяйте с описанием функции в общем модуле вашей версии БСП: от релиза к релизу он дополняется.
Собственное хранение без БСП
Для небольшой конфигурации без БСП хватит реквизита объекта типа ХранилищеЗначения. Нюанс: такой реквизит недоступен в данных управляемой формы, поэтому файл кладут во временное хранилище, а в объект записывают при сохранении.
// АдресФайла — реквизит формы типа Строка
&НаКлиенте
Процедура ПрикрепитьФайл(Команда)
Оповещение = Новый ОписаниеОповещения("ПослеПомещенияФайла", ЭтотОбъект);
НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПомещенияФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
АдресФайла = Адрес;
Объект.ИмяФайла = ВыбранноеИмяФайла;
Модифицированность = Истина;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ЗначениеЗаполнено(АдресФайла) Тогда
Данные = ПолучитьИзВременногоХранилища(АдресФайла);
ТекущийОбъект.Файл = Новый ХранилищеЗначения(Данные, Новый СжатиеДанных(9));
КонецЕсли;
КонецПроцедуры
Здесь Объект.ИмяФайла — строковый реквизит, Файл — реквизит типа ХранилищеЗначения. АдресФайла должен быть именно реквизитом формы, а не переменной модуля: серверные переменные между вызовами не сохраняются. Сжатие уровня 9 заметно экономит место на документах Word и текстовых файлах, а на PDF и JPEG почти ничего не даёт: они уже сжаты.
Для выгрузки обратно используют ТекущийОбъект.Файл.Получить(), затем ПоместитьВоВременноеХранилище на сервере и НачатьПолучениеФайлаССервера на клиенте.
Хранить файлы прямо в реквизите документа удобно, но каждое чтение объекта тянет и вложение. Для больших файлов вынесите хранилище в отдельный регистр сведений или справочник с ссылкой на владельца — так открытие документа не замедлится.
FileStream и другие способы держать файлы вне таблиц
Вопрос про FileStream возникает у тех, кто работает с MS SQL Server. FILESTREAM — механизм самой СУБД, который хранит двоичные поля в файловой системе. Платформа 1С этот механизм не использует и не управляет им: таблицы 1С создаёт сама, двоичные данные лежат в обычных полях. Включать FILESTREAM на таблицах базы 1С вручную нельзя — следующее обновление структуры конфигурации может закончиться ошибкой или потерей данных.
Если цель — вынести тяжёлые данные из базы, рабочих вариантов три:
- 📂 тома БСП — штатный путь для типовых конфигураций, описан выше;
- 🗄 собственный каталог — для своей конфигурации: в базе храните путь и контрольную сумму, а сам файл копируйте на сервер функциями работы с файлами (
КопироватьФайл, объектДвоичныеДанныес методомЗаписать); - 🌐 внешняя система документооборота — файлы живут в ней, а в 1С только ссылка.
Во втором варианте вся ответственность за целостность ложится на вас: удалили документ — не забудьте удалить файл, переименовали каталог — обновите пути.
Ограничения, скорость и резервные копии
| Что ограничивает | Где проявляется | Что делать |
|---|---|---|
| Максимальный размер файла в настройках БСП | Отказ при загрузке с сообщением о превышении | Поднять лимит осознанно, с учётом памяти сервера |
| Ограничение веб-сервера при работе через браузер или тонкий клиент по HTTP | Загрузка обрывается без понятной ошибки | В IIS лимит по умолчанию около 30 МБ на запрос (maxAllowedContentLength), в Apache — LimitRequestBody |
| Память рабочего процесса | Медленная работа, падения при одновременной загрузке крупных файлов | Не грузить файлы по 1–2 ГБ через 1С, для них — внешнее хранилище |
| Размер базы | Долгие бэкапы, выгрузка .dt на часы | Перейти на тома |
Про резервные копии. Выгрузка .dt и бэкап СУБД не включают содержимое томов. Копируйте каталог томов в то же окно, что и базу, иначе после восстановления часть ссылок будет вести в пустоту, а часть файлов на диске окажется «сиротами».
В карточке тома в БСП есть проверка целостности: она сравнивает записи в базе с файлами на диске и показывает расхождения. Запускайте её после восстановления из копии и после переноса каталога на другой сервер.
Права доступа к присоединённым файлам
В БСП доступ к вложению наследуется от владельца: кто видит документ, тот видит и его файлы. Если в базе включено ограничение доступа на уровне записей (например, по организациям), оно распространяется и на присоединённые файлы. Отдельно права на добавление и изменение файлов выдаются через профили групп доступа в Администрирование → Пользователи и права.
На уровне диска правила такие:
- 🔒 клиент-сервер: доступ к каталогу томов нужен только учётной записи службы сервера 1С. Пользователям права на папку не давайте — так никто не удалит договор из проводника в обход 1С;
- 💻 файловый вариант: каждому пользователю нужен доступ на чтение и запись, поэтому защита слабее. Для чувствительных документов это аргумент за переход на клиент-сервер;
- 🛡 антивирус: исключите каталог томов из проверки при записи только если сканирование мешает работе, и тогда проверяйте файлы по расписанию.
Для кадровых документов и паспортных сканов добавьте ограничение на уровне записей по владельцу. Иначе любой, кто видит справочник сотрудников, откроет и копию паспорта.
Чек-лист внедрения и частые ошибки
Ошибки, которые встречаются на внедрениях чаще других:
- ❌ Том на локальном диске пользователя. В файловой базе работает у одного сотрудника, у остальных файлы «не открываются».
- ❌ Путь только для Windows при сервере на Linux. Загрузка падает с ошибкой записи, хотя каталог существует.
- ❌ Переезд сервера без переноса томов. Документы на месте, а вложения недоступны. Проверка целостности тома сразу покажет масштаб.
- ❌ Восстановление базы на дату без отката каталога. В томе остаются файлы, на которые не ссылается ни одна запись, и место расходуется зря.
- ❌ Доработка типового справочника присоединённых файлов в основной конфигурации. При обновлении придётся сравнивать изменения вручную; подумайте о расширении конфигурации, если доработка небольшая.