Ссылка на вложение в 1С 8.3: внутренняя, путь на диске и веб-адрес

· 10 мин

Содержание

Чтобы получить ссылку на файл в 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 с интерфейсом «Такси».

Ссылка на сам присоединённый файл

  1. Откройте документ или элемент справочника, к которому прикреплён файл.
  2. Нажмите на значок скрепки в командной панели формы. Откроется список присоединённых файлов.
  3. Двойным щелчком откройте карточку нужного файла (не сам файл, а его карточку).
  4. Нажмите Shift+F11 или значок цепочки в правом верхнем углу формы.
  5. В окне «Получить ссылку» скопируйте текст ссылки кнопкой копирования или через Ctrl+C.

Ссылка будет вида:

e1cib/data/Справочник.ПоступлениеТоваровУслугПрисоединенныеФайлы?ref=8d4a00155d0a0b0111ef6c2a3b8e1f7d

Имя справочника зависит от владельца файла. Для документов поступления это один справочник, для договоров — другой. Это нормально.

Ссылка на документ, а не на файл

Часто удобнее отправить ссылку на документ целиком. Коллега увидит и сам документ, и все вложения к нему. Делается так же: откройте документ, нажмите Shift+F11, скопируйте.

Такой вариант лучше, если к документу прикреплено несколько файлов: акт, счёт-фактура и письмо.

Как открыть полученную ссылку

Получатель вставляет ссылку не в адресную строку браузера, а в саму 1С:

  1. Откройте главное меню (кнопка с тремя полосками в левом верхнем углу).
  2. Выберите команду Перейти по ссылке.
  3. Вставьте ссылку и нажмите «Перейти».

Если ссылку отправили в мессенджере в виде 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. В веб-клиенте окно «Получить ссылку» сразу показывает полный адрес с сервером.

Что нужно, чтобы это работало:

  1. Опубликовать базу на веб-сервере. Публикацию делают из Конфигуратора (Администрирование → Публикация на веб-сервере) или утилитой webinst из каталога платформы.
  2. Открыть порт веб-сервера для тех, кому нужен доступ: в локальной сети или через интернет .
  3. Настроить HTTPS. Без шифрования логин и пароль пользователя 1С уходят по сети открытым текстом.
  4. Завести пользователю учётную запись в базе с правами на нужные объекты.

Публикация базы в интернет без 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-сервисы. Публикация с пользователем по умолчанию, у которого полные права, превращает любую ссылку в открытую дверь. Для сервиса выдачи файлов заведите отдельного пользователя с правами только на чтение нужных справочников.

Что проверить перед тем, как давать внешние ссылки:

Перед выдачей ссылок на файлы наружу
Выполнено: 0 / 6

Если сомневаетесь, нужен ли HTTP-сервис вообще, выберите вариант по ситуации:

Кому вы отправляете ссылку на файл?

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

Почему коллега не может открыть мою ссылку на файл?
Чаще всего он работает в другой базе или у него нет прав на документ-владелец файла. Проверьте, что вы оба открыли одну базу, и попросите администратора выдать права.
Можно ли открыть ссылку e1cib в браузере?
Только если база опубликована на веб-сервере. Тогда перед ссылкой добавляют адрес публикации и символ #. Без публикации ссылку открывает только 1С через окно перехода.
Меняется ли ссылка, если отредактировать файл?
Нет. Ссылка ведёт на запись о файле, а не на конкретную версию содержимого. После редактирования по ней откроется обновлённый файл.
Что будет со ссылкой, если файл пометили на удаление?
Пока пометка не снята и удаление не выполнено, ссылка открывает карточку с отметкой об удалении. После удаления помеченных объектов ссылка станет битой.
Сохранится ли ссылка после переноса файлов из базы в тома?
Да. При переносе меняется только место хранения содержимого, запись о файле и её идентификатор остаются прежними.