Ссылка на вложение в 1С 8.3: внутренняя, путь на диске и веб-адрес
Содержание
Чтобы получить ссылку на файл в 1С, откройте карточку файла (или документ, к которому он прикреплён) и нажмите Shift+F11 либо значок цепочки в заголовке формы. Программа покажет навигационную ссылку вида e1cib/data/.... Её можно отправить коллеге, и он откроет тот же файл в своей 1С.
Это первый способ, и он работает только внутри одной базы. Второй способ нужен, когда ссылку получает человек без доступа к 1С: тогда файл отдают через веб-публикацию или HTTP-сервис, и ссылка выглядит как обычный адрес https://.... Какой выбрать, зависит от того, кто будет открывать файл.
Какие бывают ссылки на файл в 1С и чем они отличаются
Сначала поймите, где лежит файл. От этого зависит, какую ссылку вообще можно получить.
📁 Файл на диске компьютера. Например, C:\Выгрузки\акт.pdf. 1С про него ничего не знает, пока вы не прикрепите его к объекту. Ссылка на такой файл — просто путь в проводнике.
🗄️ Присоединённый файл в информационной базе. Это вложения к документам и справочникам: сканы договоров, счета, фото товаров. В типовых конфигурациях (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) они сделаны на Библиотеке стандартных подсистем и хранятся одним из двух способов:
- 💾 внутри базы, в таблице справочника файлов;
- 📂 в томах хранения — каталогах на диске или в сетевой папке, а в базе остаётся только запись о файле.
Сравнение вариантов:
| Тип ссылки | Как выглядит | Кто откроет | Когда подходит |
|---|---|---|---|
| Навигационная | e1cib/data/Справочник...?ref=... | Пользователь той же базы с правами на объект | Коллеге внутри компании |
| Путь в томе | \\server\files\... | Тот, у кого есть доступ к сетевой папке | Администратору, для разовых задач |
| Ссылка веб-клиента | https://сервер/база/#e1cib/... | Пользователь базы через браузер | Удалённым сотрудникам |
| Адрес HTTP-сервиса | https://сервер/база/hs/files/... | Любой, кому выдан логин или токен | Клиентам и внешним системам |
Навигационная ссылка не содержит сам файл. Это адрес объекта в конкретной базе. Если отправить её человеку из другой организации, у него ничего не откроется.
Навигационная ссылка на файл через интерфейс 1С
Это основной способ для работы внутри компании. Подходит для любой типовой конфигурации на платформе 8.3 с интерфейсом «Такси».
Ссылка на сам присоединённый файл
- Откройте документ или элемент справочника, к которому прикреплён файл.
- Нажмите на значок скрепки в командной панели формы. Откроется список присоединённых файлов.
- Двойным щелчком откройте карточку нужного файла (не сам файл, а его карточку).
- Нажмите
Shift+F11или значок цепочки в правом верхнем углу формы. - В окне «Получить ссылку» скопируйте текст ссылки кнопкой копирования или через
Ctrl+C.
Ссылка будет вида:
e1cib/data/Справочник.ПоступлениеТоваровУслугПрисоединенныеФайлы?ref=8d4a00155d0a0b0111ef6c2a3b8e1f7d
Имя справочника зависит от владельца файла. Для документов поступления это один справочник, для договоров — другой. Это нормально.
Ссылка на документ, а не на файл
Часто удобнее отправить ссылку на документ целиком. Коллега увидит и сам документ, и все вложения к нему. Делается так же: откройте документ, нажмите Shift+F11, скопируйте.
Такой вариант лучше, если к документу прикреплено несколько файлов: акт, счёт-фактура и письмо.
Как открыть полученную ссылку
Получатель вставляет ссылку не в адресную строку браузера, а в саму 1С:
- Откройте главное меню (кнопка с тремя полосками в левом верхнем углу).
- Выберите команду
Перейти по ссылке. - Вставьте ссылку и нажмите «Перейти».
Если ссылку отправили в мессенджере в виде e1c://... или e1cib/..., некоторые мессенджеры не делают её кликабельной. Тогда только копирование и вставка через окно перехода.
Ссылка указывает на объект по его внутреннему идентификатору. Если коллега работает в копии базы, развёрнутой из выгрузки .dt, ссылка откроет тот же объект. Если в другой базе объект создавали вручную, совпадения не будет.
Путь к файлу на диске: тома хранения и выгрузка путей
Когда файлы лежат в томах хранения, у каждого из них есть реальный путь на диске. Он бывает нужен администратору: проверить, где файл, перенести тома, найти пропажу.
Где включаются тома и где смотреть путь
Настройка хранения находится в разделе Администрирование → Общие настройки, в группе про присоединённые файлы (в части релизов — отдельной ссылкой «Настройки работы с файлами»). Там же список томов: у каждого тома указан полный путь для Windows и для Linux.
Полный путь к файлу складывается из двух частей:
- 📌 путь тома, например
\\fs01\1c_files\buh\; - 📌 относительный путь файла внутри тома, который хранится в карточке файла.
Имя файла на диске может не совпадать с тем, что вы видите в 1С. Программа сама раскладывает файлы по подкаталогам и при совпадении имён добавляет к ним суффиксы.
Внешняя обработка для выгрузки путей
Если путей нужно много, их собирают запросом во внешней обработке. Ниже пример для справочника вложений к поступлению. Реквизиты Том и ПутьКФайлу есть у справочников присоединённых файлов в БСП, у тома — реквизит ПолныйПутьWindows.
&НаСервере
Процедура ВыгрузитьПутиНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Файлы.Наименование КАК Имя,
| Файлы.Расширение КАК Расширение,
| Файлы.Том.ПолныйПутьWindows КАК ПутьТома,
| Файлы.ПутьКФайлу КАК ПутьВТоме
|ИЗ
| Справочник.ПоступлениеТоваровУслугПрисоединенныеФайлы КАК Файлы
|ГДЕ
| Файлы.Том <> ЗНАЧЕНИЕ(Справочник.ТомаХраненияФайлов.ПустаяСсылка)
| И НЕ Файлы.ПометкаУдаления";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ПолныйПуть = Выборка.ПутьТома + Выборка.ПутьВТоме;
Сообщить(Выборка.Имя + "." + Выборка.Расширение + " -> " + ПолныйПуть);
КонецЦикла;
КонецПроцедуры
Обработку запускают через Файл → Открыть в режиме 1С:Предприятие. Нужны права на внешние обработки — обычно они есть только у администратора.
Файлы, которые хранятся внутри базы, в этот запрос не попадут: у них не заполнен том. Чтобы получить для них файл на диске, его сохраняют командой «Сохранить как» из карточки или программно, как в разделе про код ниже.
Не переименовывайте и не перемещайте файлы в томах вручную через проводник. Запись в базе продолжит указывать на старый путь, и файл перестанет открываться из 1С.
Ссылка на файл через веб-публикацию базы
Если база опубликована на веб-сервере (Apache или IIS), к ней можно подключиться браузером. Тогда навигационная ссылка превращается в обычный адрес, который удобно отправлять удалённым сотрудникам.
Адрес собирается так:
https://1c.company.ru/buh/#e1cib/data/Справочник.ДоговорыКонтрагентовПрисоединенныеФайлы?ref=8d4a00155d0a0b0111ef6c2a3b8e1f7d
Здесь 1c.company.ru — адрес веб-сервера, buh — имя публикации, а всё после # — та же навигационная ссылка из окна Shift+F11. В веб-клиенте окно «Получить ссылку» сразу показывает полный адрес с сервером.
Что нужно, чтобы это работало:
- Опубликовать базу на веб-сервере. Публикацию делают из Конфигуратора (
Администрирование → Публикация на веб-сервере) или утилитойwebinstиз каталога платформы. - Открыть порт веб-сервера для тех, кому нужен доступ: в локальной сети или через интернет .
- Настроить HTTPS. Без шифрования логин и пароль пользователя 1С уходят по сети открытым текстом.
- Завести пользователю учётную запись в базе с правами на нужные объекты.
Публикация базы в интернет без HTTPS и без ограничения по адресам — частая причина утечек. Минимум — сертификат, сложные пароли пользователей и отключённая публикация лишних сервисов.
Получатель по такой ссылке увидит форму входа, введёт свои логин и пароль 1С и попадёт сразу в карточку файла. Внешнему клиенту такой путь не подходит: заводить ему пользователя в учётной базе никто не станет.
Прямая ссылка на скачивание через HTTP-сервис
Для клиентов и внешних систем делают отдельную точку выдачи файлов. Это HTTP-сервис в расширении конфигурации: он принимает запрос по адресу и возвращает содержимое файла. Типовую конфигурацию при этом не снимают с поддержки.
Схема работы:
- 🔗 адрес вида
https://1c.company.ru/buh/hs/files/get/<идентификатор>; - 🔐 сервис проверяет токен или логин из запроса;
- 📤 находит файл по идентификатору и отдаёт его двоичные данные с заголовками.
Обработчик метода GET в расширении может выглядеть так:
Функция ПолучитьФайлGET(Запрос)
Идентификатор = Запрос.ПараметрыURL.Получить("id");
Если Идентификатор = Неопределено Тогда
Возврат Новый HTTPСервисОтвет(400);
КонецЕсли;
Попытка
УИД = Новый УникальныйИдентификатор(Идентификатор);
Исключение
Возврат Новый HTTPСервисОтвет(400);
КонецПопытки;
Ссылка = Справочники.ДоговорыКонтрагентовПрисоединенныеФайлы.ПолучитьСсылку(УИД);
Если Не ОбщегоНазначения.СсылкаСуществует(Ссылка) Тогда
Возврат Новый HTTPСервисОтвет(404);
КонецЕсли;
ДвоичныеДанные = РаботаСФайлами.ДвоичныеДанныеФайла(Ссылка);
Ответ = Новый HTTPСервисОтвет(200);
Ответ.Заголовки.Вставить("Content-Type", "application/octet-stream");
ИмяФайла = Ссылка.Наименование + "." + Ссылка.Расширение;
ИмяДляЗаголовка = КодироватьСтроку(ИмяФайла, СпособКодированияСтроки.КодировкаURL);
Ответ.Заголовки.Вставить("Content-Disposition", "attachment; filename*=UTF-8''" + ИмяДляЗаголовка);
Ответ.УстановитьТелоИзДвоичныхДанных(ДвоичныеДанные);
Возврат Ответ;
КонецФункции
В шаблоне URL сервиса параметр задают как /get/{id}. Функции ОбщегоНазначения.СсылкаСуществует и РаботаСФайлами.ДвоичныеДанныеФайла берутся из БСП — они есть в типовых конфигурациях. Проверку токена добавьте до поиска файла.
Внутренний идентификатор объекта в адресе — не защита. Его можно подобрать или переслать. Для внешних ссылок генерируйте отдельный случайный токен с ограниченным сроком действия и храните его в регистре сведений расширения.
После изменения расширения публикацию обновляют: в окне публикации на веб-сервере отмечают нужный HTTP-сервис галочкой и публикуют заново.
Как получить ссылку на файл программно
Разработчику часто нужно сформировать ссылку прямо в коде: вставить её в письмо, в печатную форму или передать в другую систему.
Навигационная ссылка на объект
Функция глобального контекста ПолучитьНавигационнуюСсылку возвращает строку вида e1cib/data/...:
СсылкаНаФайл = ПолучитьНавигационнуюСсылку(ПрисоединенныйФайл);
Чтобы получить полный адрес для веб-клиента, к ней добавляют адрес базы. Его возвращает ПолучитьНавигационнуюСсылкуИнформационнойБазы():
ПолнаяСсылка = ПолучитьНавигационнуюСсылкуИнформационнойБазы() + "#" + ПолучитьНавигационнуюСсылку(ПрисоединенныйФайл);
Для файловой базы, открытой в тонком клиенте, результат будет без веб-адреса. Такую ссылку откроет только 1С, а не браузер.
Ссылка на двоичные данные во временном хранилище
Когда файл нужно отдать на клиент для сохранения или открытия, его помещают во временное хранилище:
&НаСервере
Функция АдресФайлаНаСервере(ПрисоединенныйФайл)
ДвоичныеДанные = РаботаСФайлами.ДвоичныеДанныеФайла(ПрисоединенныйФайл);
Возврат ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
КонецФункции
Возвращённый адрес живёт, пока открыта форма с этим УникальныйИдентификатор. Наружу его не передают: это временная внутренняя ссылка сеанса.
На клиенте файл по адресу сохраняют асинхронно:
&НаКлиенте
Процедура СохранитьФайл(Команда)
Адрес = АдресФайлаНаСервере(Объект.Файл);
ОписаниеФайла = Новый ОписаниеПередаваемогоФайла("договор.pdf", Адрес);
Файлы = Новый Массив;
Файлы.Добавить(ОписаниеФайла);
НачатьПолучениеФайловССервера(Файлы);
КонецПроцедуры
Кликабельная ссылка в форме
Чтобы показать ссылку в форме, используйте форматированную строку. Ссылка e1cib/... откроет объект в 1С, ссылка https://... — браузер:
Элементы.Надпись.Заголовок = Новый ФорматированнаяСтрока("Открыть договор", , , , СсылкаНаФайл);
Путь вида file:///C:/... в форматированной строке веб-клиент не откроет: браузер не даёт сайтам доступа к локальным дискам.
Безопасность и ограничения доступа к файлам по ссылке
Ссылка сама по себе не даёт прав. Всё решают права пользователя, который её открывает. Но есть нюансы.
🔒 Права на владельца. В типовых конфигурациях доступ к присоединённому файлу обычно наследуется от объекта-владельца. Нет права на документ — не откроется и файл, даже по точной ссылке.
🔒 Ограничение доступа на уровне записей. Если оно включено, пользователь не увидит файлы чужих организаций или подразделений. Ссылка вернёт сообщение о недостаточных правах или пустую форму.
🔒 Тома хранения в обход 1С. Сетевая папка с томами — слабое место. Кто имеет доступ к ней, читает все файлы без проверки прав 1С. Давайте права на каталог только учётной записи, под которой работает сервер 1С, и администраторам.
🔒 HTTP-сервисы. Публикация с пользователем по умолчанию, у которого полные права, превращает любую ссылку в открытую дверь. Для сервиса выдачи файлов заведите отдельного пользователя с правами только на чтение нужных справочников.
Что проверить перед тем, как давать внешние ссылки:
Если сомневаетесь, нужен ли HTTP-сервис вообще, выберите вариант по ситуации:
Частые вопросы
Почему коллега не может открыть мою ссылку на файл?
Можно ли открыть ссылку e1cib в браузере?
#. Без публикации ссылку открывает только 1С через окно перехода.