Справочники и Данные · 12 мин
Как сохранить файл в базе 1С
Как сохранить файл в базе 1С: присоединение файлов к документам и справочникам, хранение в томах, программная загрузка через ХранилищеЗначения, типичные ошибки.
Сохранить файл в базе 1С можно несколькими способами: прикрепить его к документу или элементу справочника через стандартный механизм присоединённых файлов, поместить в реквизит типа «Хранилище значения» или загрузить программно в собственный регистр сведений. Выбор зависит от того, кто выполняет задачу — обычный пользователь или разработчик, — и от того, как часто файлы будут добавляться и извлекаться.
В типовых конфигурациях на Библиотеке стандартных подсистем (БСП) — «Управление торговлей», «Бухгалтерия предприятия», «ERP», «Зарплата и управление персоналом» — механизм присоединённых файлов уже встроен. Пользователю достаточно открыть карточку объекта и воспользоваться кнопкой прикрепления. В самописных конфигурациях хранение файлов придётся проектировать вручную.
Важно понимать разницу между «сохранить файл из 1С на диск» и «сохранить файл в базу 1С». Первая задача решается командами «Сохранить как» и выгрузкой, вторая — загрузкой файла внутрь информационной базы, чтобы он хранился вместе с данными и был доступен всем пользователям по правам доступа. Ниже разобраны оба пользовательских и программных сценария.
Как прикрепить файл к документу или справочнику в типовой конфигурации
Откройте нужный объект — например, документ «Поступление товаров и услуг» или карточку контрагента. В форме найдите панель или команду «Присоединённые файлы»: обычно это кнопка со скрепкой, ссылка «Прикрепить» или команда «Ещё → Присоединённые файлы». В «Бухгалтерии предприятия» панель файлов часто расположена справа или внизу формы документа.
Нажмите «Добавить» или «Прикрепить», выберите файл на диске и подтвердите выбор. Программа скопирует файл в хранилище, настроенное администратором: либо непосредственно в информационную базу, либо в том на диске сервера. После сохранения файл появится в списке присоединённых, его можно открыть двойным щелчком, посмотреть, переименовать описание или удалить.
Если команда прикрепления недоступна, проверьте права: роль «Добавление и изменение присоединённых файлов» (в БСП — «Добавление изменение файлов») должна быть назначена пользователю. Также убедитесь, что у объекта вообще предусмотрено хранение файлов — не ко всем видам документов механизм подключён в конкретной конфигурации.
- 1Откройте документ или элемент справочника, к которому нужно прикрепить файл
- 2Найдите команду «Прикрепить», «Присоединённые файлы» или значок скрепки
- 3Нажмите «Добавить» и выберите файл на диске
- 4Дождитесь окончания загрузки и проверьте, что файл появился в списке
- 5Откройте файл двойным щелчком, чтобы убедиться, что он читается корректно
Где физически хранятся файлы: в базе или в томах на диске
Платформа и БСП поддерживают два варианта хранения присоединённых файлов. Первый — внутри информационной базы: двоичные данные записываются в служебный регистр сведений (в БСП — «Двоичные данные файлов» или аналогичный, в зависимости от версии библиотеки). Второй — в томах на диске: в базе остаётся только ссылка и путь, а сам файл лежит в указанном сетевом или локальном каталоге.
Настройка выполняется в разделе администрирования: «Настройки работы с файлами» → «Хранить файлы в томах на диске». Там же задаются пути к томам для Windows и Linux. Хранение в томах разгружает базу и ускоряет резервное копирование SQL-дампа, но требует отдельного резервного копирования самих томов — иначе при восстановлении базы файлы окажутся потерянными.
Хранение внутри базы проще в сопровождении: файл гарантированно попадает в выгрузку .dt и в бэкап СУБД. Но при активной работе со сканами, фото и архивами база быстро разрастается, что увеличивает время регламентных операций, реструктуризации и обновлений. Для файлового варианта работы 1С рост размера базы особенно критичен — приближение к ограничениям файловой базы приводит к ошибкам и замедлению.
Сравнение вариантов хранения
Подходит при небольшом объёме файлов и файловом режиме работы. Ограничение: быстрый рост размера базы, замедление бэкапов и обновлений.
Подходит для больших объёмов сканов и вложений в клиент-серверном режиме. Ограничение: нужно отдельно резервировать тома и следить за доступностью сетевого каталога.
Подходит при интеграции с ECM или облачными хранилищами. Ограничение: требует разработки и поддержки обмена.
Как сохранить файл программно: ХранилищеЗначения и ДвоичныеДанные
Если конфигурация самописная или нужен собственный механизм, стандартный подход — реквизит объекта типа «ХранилищеЗначения». В него можно поместить двоичные данные файла, и они будут записаны в базу вместе с объектом. Типовой код выглядит так: сначала файл читается с диска в объект «ДвоичныеДанные», затем упаковывается в хранилище значения.
ДвоичныеДанные = Новый ДвоичныеДанные("C:\Docs\dogovor.pdf");
Объект.ФайлДанные = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));
Объект.Записать();
Извлечение выполняется в обратном порядке: метод Получить() у хранилища возвращает двоичные данные, которые записываются во временный файл методом Записать(). Сжатие данных в конструкторе хранилища уменьшает объём для текстовых и офисных файлов, но почти бесполезно для уже сжатых форматов — jpg, zip, pdf со сжатием.
Для экономии места не храните файл целиком в реквизите документа, если он нужен редко: вынесите двоичные данные в отдельный регистр сведений с измерением «Объект» и ресурсом «Данные». Тогда основная таблица документов не раздувается, а чтение файла происходит только по требованию.
// Сохранение файла в реквизит типа ХранилищеЗначения
ДД = Новый ДвоичныеДанные(ПутьКФайлу);
Объект.ХранилищеФайла = Новый ХранилищеЗначения(ДД, Новый СжатиеДанных(9));
Объект.ИмяФайла = "dogovor.pdf";
Объект.Записать();
// Извлечение
ДД = Объект.ХранилищеФайла.Получить();
ДД.Записать(ПолучитьИмяВременногоФайла("pdf"));Загрузка файла через механизм БСП программно
Если конфигурация построена на БСП, не нужно изобретать собственные таблицы — используйте программный интерфейс модуля «РаботаСФайлами». Метод ДобавитьФайл (в новых версиях — ПрисоединитьФайл) принимает владельца, двоичные данные или адрес во временном хранилище, имя и расширение файла и создаёт полноценный присоединённый файл, видимый пользователям в стандартном интерфейсе.
ПараметрыФайла = Новый Структура;
ПараметрыФайла.Вставить("ВладелецФайлов", ДокументСсылка);
ПараметрыФайла.Вставить("ИмяБезРасширения", "Скан договора");
ПараметрыФайла.Вставить("РасширениеБезТочки", "pdf");
ПараметрыФайла.Вставить("ВремяИзмененияУниверсальное", ТекущаяУниверсальнаяДата());
ПрисоединенныйФайл = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, АдресВоВременномХранилище);
Точная сигнатура методов зависит от версии БСП, поэтому перед написанием кода откройте модуль «РаботаСФайлами» в конфигураторе и сверьтесь с областью «ПрограммныйИнтерфейс». Это надёжнее, чем копировать примеры из старых публикаций: параметры и названия процедур между версиями менялись.
Ограничения, риски и контроль результата
Главный риск при сохранении файлов в базу — неконтролируемый рост объёма. Сотни сканов по несколько мегабайт за месяц превращаются в гигабайты данных, что в файловом режиме ведёт к замедлению и сбоям, а в клиент-серверном — к удорожанию хранения и увеличению окон регламентных работ. Заранее решите, что хранить в базе, а что — в томах или во внешней системе.
Второй риск — права и безопасность: файл в базе доступен всем, у кого есть доступ к объекту-владельцу. Договоры, сканы паспортов и персональные данные требуют разграничения прав на уровне владельцев файлов, иначе конфиденциальные документы увидят сотрудники, которым они не предназначены.
Третий риск — обрыв загрузки большого файла по сети. При нестабильном соединении файл может записаться частично или создаться запись без данных. После массовой загрузки обязательно проверяйте выборочно: открывается ли файл, совпадает ли его размер с исходным.
Как проверить результат
Файл виден, открывается и отображается корректно
Запись есть, но при открытии ошибка или пустой файл
Размер в базе сопоставим с исходным файлом
Размер нулевой или сильно меньше исходного — загрузка оборвалась
Пользователь с нужными правами открывает файл
Ошибка доступа — проверьте роли на присоединённые файлы
Прирост соответствует суммарному объёму файлов
Резкий аномальный рост — возможны дубли загрузки
Типичные ошибки при сохранении файлов в 1С
Частая ошибка пользователей — прикрепление файла к непроведённому или несохранённому документу: объект ещё не записан, и платформа не может связать файл с владельцем. Сначала записывайте документ, затем прикрепляйте файл. Обратная ситуация — удаление документа без очистки присоединённых файлов: в типовых конфигурациях файлы удаляются вместе с владельцем, но при пометке на удаление они могут оставаться до физического удаления объектов.
У разработчиков типичны три промаха: хранение двоичных данных в строковом реквизите неограниченной длины вместо ХранилищеЗначения (данные портятся из-за кодировок), чтение файла на клиенте там, где доступен только серверный контекст, и отсутствие сжатия при массовом хранении офисных документов. Каждая из этих ошибок проявляется не сразу, а под нагрузкой.
FAQ: частые вопросы о сохранении файлов в 1С
Можно ли сохранить файл в базу 1С, если нет кнопки «Прикрепить»?
Если в форме объекта нет команды прикрепления, значит, для этого вида объектов механизм присоединённых файлов не включён или у вас нет соответствующих прав. Уточните у администратора, назначена ли роль работы с файлами, и подключено ли хранение файлов для данного типа документов в настройках конфигурации. Обойти ограничение пользовательскими средствами нельзя.
Куда попадает файл после прикрепления — можно ли найти его на диске?
Зависит от настройки: если включено хранение в томах, файл лежит в каталоге тома, путь к которому задан в разделе администрирования, но имя файла там служебное. Если тома не используются, файл хранится внутри информационной базы и отдельным файлом на диске не существует — достать его можно только через интерфейс 1С или программно.
Увеличится ли размер базы при хранении файлов внутри неё?
Да, примерно на суммарный объём загруженных файлов с учётом сжатия, если оно применяется. Для файлового режима работы это наиболее чувствительно: при значительном росте базы замедляются открытие, резервное копирование и обновления. При больших объёмах вложений переведите хранение в тома на диске.
Как сохранить файл в базу из внешней обработки или при обмене?
Используйте тот же программный приём: прочитайте файл в объект «ДвоичныеДанные», при обмене передайте его в Base64-строке или двоичном виде, а на стороне приёмника сохраните через ХранилищеЗначения или метод РаботаСФайлами.ДобавитьФайл. При передаче через веб-сервисы учитывайте, что Base64 увеличивает объём примерно на треть — для больших файлов используйте потоковую передачу или разбивку на части.
Что делать, если прикреплённый файл перестал открываться?
Сначала проверьте, установлена ли на компьютере программа для этого формата — 1С открывает файл средствами операционной системы. Если программа есть, а файл не открывается, вероятно, данные повреждены при загрузке: сравните размер с оригиналом и загрузите файл заново. При массовых проблемах проверьте доступность тома хранения и целостность базы.
Можно ли ограничить, какие типы файлов разрешено сохранять?
В настройках БСП есть список расширений файлов, доступных для открытия и загрузки, — администратор может запретить потенциально опасные форматы, например исполняемые файлы. Дополнительно ограничения реализуются программно в собственных механизмах загрузки через проверку расширения и размера перед записью.
Что важно запомнить
Пользователь сохраняет файл в базу через команду «Прикрепить» в карточке объекта, разработчик — через ХранилищеЗначения или метод РаботаСФайлами.ДобавитьФайл. Заранее выберите место хранения (база или тома на диске), настройте права и резервное копирование, а после загрузки проверяйте, что файлы открываются и их размер совпадает с исходным.