Вложения к документам 1С 8.3: где хранить, как включить и как защитить

· 10 мин

Содержание

Прикрепить файл к документу в типовой конфигурации 1С 8.3 можно кнопкой со скрепкой в командной панели формы: она открывает список присоединённых файлов, куда файл добавляют с диска, перетаскиванием или со сканера. Если кнопки нет или файлы быстро раздувают базу, дело в настройке хранения: Администрирование → Общие настройки, группа про работу с файлами.

Сделать прикрепление файлов в 1С правильно — значит заранее решить три вопроса: где лежат вложения (в таблицах базы или в томах на диске), какой у них предельный размер и кто их видит. Ошибка в любом из них всплывает позже: распухшая база, пропавшие после переезда вложения или сканы паспортов, открытые всем подряд.

Где хранить вложения: в базе или в томах на диске

Механизм присоединённых файлов в типовых решениях (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, ERP, УНФ) построен на подсистеме «Работа с файлами» из Библиотеки стандартных подсистем (БСП). Она умеет хранить содержимое файлов двумя способами.

СпособГде лежат данныеКогда подходитМинусы
В информационной базеДвоичные данные в таблицах СУБД или в файле 1Cv8.1CDНебольшая база, мало вложений, одна резервная копия на всёБаза растёт, выгрузка .dt и бэкап СУБД становятся тяжёлыми
В томах на дискеКаталог на сервере или в сетевой папке, в базе только ссылкаМного сканов, договоров, фото; базе больше 50–100 ГБ тесноНужно бэкапить каталог отдельно и синхронно с базой

Практическое правило простое. Если пользователи прикрепляют в основном счета и акты в PDF по 200–500 КБ, хранение в базе годами не создаёт проблем. Если к каждой реализации цепляют сканы с фотографиями, проектную документацию или видео, переходите на тома сразу, пока переносить нечего.

Тома можно включить и позже: в БСП есть перенос уже загруженных файлов из базы в тома. Но на большом объёме это часы работы, поэтому решение лучше принять на старте.

Как включить хранение файлов в типовой конфигурации

В типовых конфигурациях на БСП настройки собраны в разделе Администрирование → Общие настройки. Найдите на форме группу, посвящённую работе с файлами, и откройте ссылку с настройками хранения. Состав флажков немного отличается от релиза к релизу БСП: в новых версиях появилась возможность хранить часть файлов в базе, а часть в томах.

Шаг 1. Выберите способ хранения

  1. Укажите вариант хранения: в информационной базе или в томах на диске.
  2. Задайте максимальный размер загружаемого файла. Не ставьте его «с запасом» в несколько гигабайт: большие файлы идут через временное хранилище сервера и нагружают память рабочего процесса.
  3. Проверьте список запрещённых расширений. В него стоит включить исполняемые файлы: exe, bat, cmd, vbs, js, scr.

Шаг 2. Создайте том хранения файлов

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

  1. Создайте элемент тома, дайте понятное имя: «Основной том 2026» или «Сканы бухгалтерии».
  2. Заполните полный путь для Windows, например \\fs01\1c_files\buh\, и, если сервер 1С работает на Linux, путь для Linux: /mnt/1c_files/buh/.
  3. Задайте максимальный размер тома в мегабайтах. Когда том заполнится, файлы пойдут в следующий по порядку.
  4. Сохраните и попробуйте прикрепить тестовый файл.

Путь должен быть доступен на запись той учётной записи, от которой работает процесс, реально записывающий файл. В клиент-серверном варианте это служба сервера 1С (часто USR1CV8 или доменная учётка). В файловом варианте — каждый пользователь со своего компьютера.

Не указывайте путь с буквой подключённого сетевого диска (Z:\files). Служба сервера 1С не видит дисков, подключённых в сеансе пользователя. Используйте UNC-путь \\сервер\папка.

Шаг 3. Перенесите старые файлы, если нужно

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

Как прикрепить файл к документу или справочнику

Для пользователя порядок одинаковый в любой типовой конфигурации на БСП.

  1. Откройте документ или элемент справочника и запишите его. К незаписанному объекту файл не привязать: у него ещё нет ссылки.
  2. Нажмите кнопку со скрепкой в командной панели формы. Откроется список присоединённых файлов этого объекта.
  3. Добавьте файл одним из способов:
    • 📁 выбрать с диска;
    • 🖱 перетащить мышью из проводника прямо в список;
    • 🖨 отсканировать, если настроен сканер;
    • 📄 создать по шаблону из другого файла.
  4. При необходимости заполните описание и подпишите файл электронной подписью.

Чтобы отредактировать вложение, его сначала занимают для редактирования. Файл открывается на компьютере в рабочем каталоге, после правки изменения помещают обратно в 1С. Пока файл занят, другие пользователи видят, кто его редактирует, и не могут сохранить параллельную версию.

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

Прикрепление файлов в своей конфигурации: БСП и встроенный язык

Если вы дорабатываете конфигурацию, вариантов два: подключить подсистему «Работа с файлами» к новому объекту или написать собственное хранение на реквизите типа ХранилищеЗначения.

Подключение к объекту через БСП

Для каждого владельца файлов в БСП создаётся свой справочник присоединённых файлов. Имя строится по шаблону <ИмяВладельца>ПрисоединенныеФайлы, например ЗаявкиНаРасходПрисоединенныеФайлы.

Порядок для разработчика:

  1. Скопируйте структуру реквизитов из любого существующего справочника …ПрисоединенныеФайлы той же конфигурации. Реквизит ВладелецФайла должен иметь тип вашего объекта.
  2. Добавьте тип владельца и тип нового справочника в определяемые типы подсистемы «Работа с файлами» (они начинаются со слов ВладелецПрисоединенныхФайлов и ПрисоединенныйФайл).
  3. Включите справочник в подписки на события подсистемы, если они перечисляют типы явно.
  4. Добавьте на форму владельца команду присоединённых файлов. В свежих релизах БСП это делается программно в ПриСозданииНаСервере через процедуры модуля подсистемы — посмотрите, как это сделано в формах типовых документов той же конфигурации, и повторите.

Программно файл добавляют функцией РаботаСФайлами.ДобавитьФайл. Параметры для неё получают через РаботаСФайлами.ПараметрыДобавленияФайла(), а содержимое передают адресом во временном хранилище. Точный набор параметров сверяйте с описанием функции в общем модуле вашей версии БСП: от релиза к релизу он дополняется.

Собственное хранение без БСП

Для небольшой конфигурации без БСП хватит реквизита объекта типа ХранилищеЗначения. Нюанс: такой реквизит недоступен в данных управляемой формы, поэтому файл кладут во временное хранилище, а в объект записывают при сохранении.

// АдресФайла — реквизит формы типа Строка

&НаКлиенте
Процедура ПрикрепитьФайл(Команда)
    Оповещение = Новый ОписаниеОповещения("ПослеПомещенияФайла", ЭтотОбъект);
    НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
КонецПроцедуры

&НаКлиенте
Процедура ПослеПомещенияФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
    Если Не Результат Тогда
        Возврат;
    КонецЕсли;
    АдресФайла = Адрес;
    Объект.ИмяФайла = ВыбранноеИмяФайла;
    Модифицированность = Истина;
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    Если ЗначениеЗаполнено(АдресФайла) Тогда
        Данные = ПолучитьИзВременногоХранилища(АдресФайла);
        ТекущийОбъект.Файл = Новый ХранилищеЗначения(Данные, Новый СжатиеДанных(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С;
  • 💻 файловый вариант: каждому пользователю нужен доступ на чтение и запись, поэтому защита слабее. Для чувствительных документов это аргумент за переход на клиент-сервер;
  • 🛡 антивирус: исключите каталог томов из проверки при записи только если сканирование мешает работе, и тогда проверяйте файлы по расписанию.

Для кадровых документов и паспортных сканов добавьте ограничение на уровне записей по владельцу. Иначе любой, кто видит справочник сотрудников, откроет и копию паспорта.

Чек-лист внедрения и частые ошибки

Перед запуском вложений в работу
Выполнено: 0 / 7

Ошибки, которые встречаются на внедрениях чаще других:

  • ❌ Том на локальном диске пользователя. В файловой базе работает у одного сотрудника, у остальных файлы «не открываются».
  • ❌ Путь только для Windows при сервере на Linux. Загрузка падает с ошибкой записи, хотя каталог существует.
  • ❌ Переезд сервера без переноса томов. Документы на месте, а вложения недоступны. Проверка целостности тома сразу покажет масштаб.
  • ❌ Восстановление базы на дату без отката каталога. В томе остаются файлы, на которые не ссылается ни одна запись, и место расходуется зря.
  • ❌ Доработка типового справочника присоединённых файлов в основной конфигурации. При обновлении придётся сравнивать изменения вручную; подумайте о расширении конфигурации, если доработка небольшая.

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

Почему нет кнопки со скрепкой в форме документа?
Скорее всего, у этого объекта нет своего справочника присоединённых файлов или команду скрыли в настройке формы. Проверьте настройку формы через меню «Ещё». Если команды нет и там, объект нужно подключить к подсистеме программистом.
Можно ли прикрепить один файл к нескольким документам?
В БСП файл принадлежит одному владельцу. Для второго документа файл прикрепляют повторно или хранят общие файлы в справочнике «Файлы» с папками и ссылаются на него.
Как узнать, сколько места занимают вложения?
При хранении в томах — по размеру каталога на диске и по заполненности томов в их списке. При хранении в базе — по размеру таблиц двоичных данных в средствах СУБД.
Удаляется ли файл с диска, если удалить документ?
Файл помечается на удаление вместе с записью. С диска он исчезает после удаления помеченных объектов, а не в момент пометки.
Работает ли прикрепление файлов в веб-клиенте?
Да, но загрузка идёт через веб-сервер. Его лимит на размер запроса должен быть не меньше лимита в настройках 1С, иначе крупные файлы не загрузятся.