Где 1С хранит электронную подпись и как сохранить её в файл

· 10 мин

Содержание

Чтобы извлечь подпись из 1С, откройте присоединённый файл или документ, который подписывали, и выполните команду сохранения вместе с электронной подписью. Программа запишет на диск сам файл и рядом отдельный файл подписи с расширением .p7s. Этот файл и есть подпись: его принимают сервисы проверки, суд и контрагент.

Типичная ситуация: налоговая или контрагент просит прислать договор «с подписью отдельным файлом». Договор подписан в 1С два месяца назад, а где лежит подпись, никто не помнит. Ниже — все рабочие пути: из интерфейса, через служебный регистр, кодом, из контейнера КриптоПро и при переносе между базами.

Что на самом деле лежит в базе 1С

Прежде чем что-то доставать, полезно понять, что именно 1С хранит. От этого зависит, какой способ вам подходит.

  • 📄 Откреплённая подпись — двоичные данные в формате CMS (PKCS#7). Именно её сохраняют в .p7s.
  • 🪪 Сертификат подписанта — открытая часть, вшита в саму подпись. Её можно выгрузить в .cer.
  • 🕒 Служебные сведения — дата подписания, кто подписал, комментарий, результат последней проверки.
  • 🔑 Закрытого ключа в базе нет. Он живёт на токене, в контейнере КриптоПро или в облачном сервисе подписи.

Достать из 1С закрытый ключ нельзя никаким способом. Если задача — подписывать на другом компьютере, нужен перенос контейнера ключа, а не выгрузка из базы. Этому посвящён отдельный раздел ниже.

В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, Документооборот) подписи объектов и присоединённых файлов хранятся в регистре сведений ЭлектронныеПодписи. В подсистеме ЭДО подписи входят в пакет электронного документа и хранятся вместе с его файлами.

Что нужно получитьГде это в 1СФормат на выходе
Подпись под файломКарточка присоединённого файла.p7s
Подписи всех файлов объектаРегистр ЭлектронныеПодписи или код.p7s
Сертификат подписантаПодпись или справочник сертификатов.cer
Закрытый ключНе в 1С — в контейнереконтейнер КриптоПро

Как сохранить файл вместе с подписью из интерфейса

Самый быстрый и безопасный путь. Ничего не меняет в базе и подходит рядовому пользователю.

Подпись под присоединённым файлом

  1. Откройте документ или элемент справочника, к которому прикреплён подписанный файл.
  2. Нажмите на кнопку со скрепкой или откройте список присоединённых файлов из командной панели формы.
  3. Выделите файл. У подписанного файла в списке стоит значок подписи.
  4. В меню команд файла выберите сохранение вместе с электронной подписью.
  5. Укажите каталог. Если подписей несколько, программа предложит отметить нужные.

На диске появятся два файла: Договор.pdf и Договор.pdf.p7s или похожее имя. При нескольких подписях — несколько файлов подписи, по одному на каждого подписанта.

Расширение файла подписи задаётся в настройках электронной подписи (по умолчанию p7s). Если контрагент ждёт .sig, достаточно переименовать файл: содержимое то же, формат CMS.

Просмотр подписи перед выгрузкой

Откройте карточку файла и перейдите на вкладку или в список «Электронные подписи». Там видно, кто подписал, когда и верна ли подпись. Двойной щелчок по строке открывает подробности подписи и сертификат. Из этой же формы подпись можно сохранить отдельно, без исходного файла.

Подпись электронного документа ЭДО

В документообороте с контрагентами подпись не лежит отдельно от документа. Откройте электронный документ (из учётного документа по ссылке ЭДО или из рабочего места обмена) и найдите в его командах выгрузку на диск. Получится пакет: файл документа в формате ФНС (.xml) и файлы подписей обеих сторон.

Подпись ЭДО ставится под XML-файл формата ФНС, а не под печатную форму. Если отправить контрагенту PDF и .p7s из пакета, проверка подписи покажет ошибку: подписан другой файл.

Регистр «Электронные подписи»: доступ без программиста

Когда файлов много или карточка не открывается, подписи можно найти напрямую в регистре. Конфигуратор здесь нужен только для разведки: в нём видно, как называется объект хранения, но данные он не показывает.

Шаг 1. Найдите объект хранения в Конфигураторе

  1. Откройте базу в режиме Конфигуратор.
  2. В дереве метаданных разверните Регистры сведений.
  3. Найдите регистр ЭлектронныеПодписи. В его ресурсах есть двоичные данные подписи и отпечаток сертификата, в измерениях — подписанный объект.

В нетиповых или старых конфигурациях подпись может храниться в реквизите табличной части или в отдельном справочнике. Поиск по дереву метаданных по слову «Подпис» быстро это покажет.

Шаг 2. Откройте регистр в режиме Предприятия

  1. Включите отображение команды «Все функции»: Главное меню → Сервис → Параметры → Отображать команду «Все функции».
  2. Откройте Главное меню → Все функции → Регистры сведений → Электронные подписи.
  3. Отберите записи по подписанному объекту или по дате.

В списке видны подписант, дата и отпечаток сертификата. Сохранить двоичные данные из стандартного списка регистра нельзя: для этого нужна обработка или код из следующего раздела.

Не редактируйте и не удаляйте записи регистра вручную. Удалённая строка — это подпись, которую восстановить можно только из резервной копии базы.

Программная выгрузка подписей средствами БСП

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

Получение подписей объекта

Функция ЭлектроннаяПодпись.УстановленныеПодписи возвращает массив структур. В каждой есть свойство Подпись — двоичные данные, которые и записываются в .p7s.

&НаСервере
Процедура ВыгрузитьПодписиНаСервере(ПодписанныйОбъект, Каталог)

	Подписи = ЭлектроннаяПодпись.УстановленныеПодписи(ПодписанныйОбъект);

	НомерПодписи = 0;
	Для Каждого СвойстваПодписи Из Подписи Цикл
		НомерПодписи = НомерПодписи + 1;
		ИмяФайла = Каталог + ПолучитьРазделительПути()
			+ СтрШаблон("подпись_%1.p7s", Формат(НомерПодписи, "ЧГ=0"));
		СвойстваПодписи.Подпись.Записать(ИмяФайла);
	КонецЦикла;

КонецПроцедуры

Здесь ПодписанныйОбъект — ссылка на присоединённый файл или объект, который подписывали. Процедура пишет файлы на диск сервера 1С. Каталог должен существовать, а у пользователя, от имени которого работает сервер, должны быть права на запись.

Как передать файл на компьютер пользователя

В клиент-серверной базе файлы с сервера пользователю не видны. Тогда на сервере кладите двоичные данные во временное хранилище, а на клиенте сохраняйте их:

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

&НаКлиенте
Процедура СохранитьПодпись(Команда)
	Адрес = АдресПервойПодписи(Объект.Ссылка, УникальныйИдентификатор);
	Если ЗначениеЗаполнено(Адрес) Тогда
		НачатьПолучениеФайлаССервера(Адрес, "подпись.p7s");
	КонецЕсли;
КонецПроцедуры

Метод НачатьПолучениеФайлаССервера покажет пользователю диалог сохранения. Работает в тонком клиенте и веб-клиенте.

Сертификат из подписи

Сертификат подписанта зашит в саму подпись. Платформенный объект МенеджерКриптографии умеет его достать методом ПолучитьСертификатыИзПодписи. Каждый полученный СертификатКриптографии выгружается в двоичные данные методом Выгрузить(), а их записывают в файл .cer.

Для этого менеджер криптографии должен быть создан под установленную на компьютере программу подписи (КриптоПро CSP или ViPNet CSP). В БСП это делается общими функциями подсистемы, вручную имя провайдера прописывать не нужно.

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

Сертификат и ключ из контейнера КриптоПро

Часто «вытащить подпись из 1С» на деле значит «подписывать с другого компьютера». 1С здесь ни при чём: ключ лежит в контейнере на флешке, токене, в реестре или на диске.

Выгрузить сертификат (открытую часть)

  1. Запустите КриптоПро CSP, вкладка «Сервис».
  2. Нажмите «Просмотреть сертификаты в контейнере» и выберите контейнер.
  3. Откройте «Свойства» сертификата → вкладка «Состав» → «Копировать в файл».
  4. Выберите формат X.509 в кодировке DER и сохраните .cer.

Этот файл можно отправить кому угодно: он не позволяет подписывать.

Скопировать контейнер с ключом

  1. В КриптоПро CSP на вкладке «Сервис» нажмите «Скопировать».
  2. Укажите исходный контейнер, введите новое имя и выберите носитель.
  3. Задайте пароль (ПИН) на новый контейнер.
  4. На новом компьютере установите сертификат из контейнера и добавьте его в 1С через настройки электронной подписи.

Ключ, выпущенный как неэкспортируемый, скопировать нельзя — так задумано. Для облачной подписи и ключей на защищённых токенах нужен новый сертификат или подключение токена к другому компьютеру.

Помните про ответственность: по 63-ФЗ владелец обязан хранить ключ в тайне. Копию контейнера не передавайте сотрудникам «на всякий случай».

Перенос подписей между базами 1С

Подписи привязаны к ссылкам объектов. При переносе важно, чтобы вместе с ними приехал байт в байт тот же подписанный файл. Иначе подпись станет «неверной».

СпособЧто переноситсяКогда подходит
Выгрузка .dt и загрузка в новую базуВся база, включая подписиПереезд целиком, копия для тестов
РИБ (распределённая база)Записи регистра вместе с объектамиФилиалы с общей конфигурацией
Универсальный обмен через XMLОбъекты и записи регистров по правиламРазные базы одной конфигурации
Файлы .p7s + исходникиТолько нужные документыАрхив, передача в суд, аудит

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

Загрузка .dt полностью заменяет данные базы-приёмника. Делайте это только в пустую или тестовую базу.

Как проверить извлечённую подпись вне 1С

Получатель почти всегда проверяет подпись не в 1С. Проверьте сами, прежде чем отправлять.

  • ✅ Сервис проверки подписи на портале Госуслуг: загружаете исходный файл и .p7s.
  • ✅ КриптоАРМ или аналог: открываете файл подписи, программа показывает подписанта и статус.
  • ✅ Утилита проверки от вашего удостоверяющего центра.

Если сервис пишет, что подпись верна и сертификат действовал на момент подписания, файлы можно отправлять.

Проверка в самой 1С перед выгрузкой

В списке подписей присоединённого файла есть команда проверки. Запустите её до сохранения: 1С пересчитает подпись по текущей версии файла и обновит статус в строке. Если статус «неверна», выгружать бессмысленно — сначала найдите подписанную версию.

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

Что приложить к выгруженной подписи

  • 📎 Исходный файл — тот самый, без пересохранения и конвертации.
  • 📎 Файл подписи .p7s для каждого подписанта.
  • 📎 По запросу — сертификат .cer, если получатель проверяет без доступа к интернету.

Архивируйте всё одним ZIP-файлом: почтовые сервисы иногда меняют имена вложений, и пару «файл + подпись» потом трудно сопоставить.

Ошибки при извлечении подписи и что с ними делать

Диагностика: выберите симптом

Сравнение способов и частые вопросы

СпособКому подходитСколько файловРиски
Сохранение с подписью из карточкиЛюбому пользователю1–10Нет
Регистр через «Все функции»Администратору для поискаПросмотрСлучайно удалить запись
Код БСППрограммистуСотниОшибка в каталоге, права сервера
Пакет ЭДОБухгалтеру по ЭДОПо документуОтправить не тот исходник
КриптоПроВладельцу ключаСертификат, контейнерУтечка ключа
Можно ли извлечь подпись из печатной формы, сохранённой в PDF?
Нет. Печатная форма — это новый файл, его никто не подписывал. Подпись есть только у того файла, который подписали в 1С.
Чем откреплённая подпись отличается от присоединённой?
Откреплённая (.p7s) хранится отдельно, исходный файл не меняется. Присоединённая содержит файл внутри себя. 1С по умолчанию создаёт и сохраняет откреплённые подписи.
Остаётся ли подпись действительной, если сертификат уже истёк?
Да, если сертификат был действителен в момент подписания. Сервисы проверки показывают это отдельно от текущего статуса сертификата.
Можно ли выгрузить подписи сразу по всем документам за период?
Из стандартного интерфейса — только по одному объекту. Для пакетной выгрузки нужна обработка с запросом к регистру подписей и вызовом кода выше в цикле.
Нужен ли ключ подписи, чтобы сохранить файл .p7s?
Нет. Сохранение и проверка готовой подписи работают без токена. Ключ нужен только чтобы поставить новую подпись.

Источники

  • Федеральный закон от 06.04.2011 № 63-ФЗ «Об электронной подписи»