Где 1С хранит электронную подпись и как сохранить её в файл
Содержание
Чтобы извлечь подпись из 1С, откройте присоединённый файл или документ, который подписывали, и выполните команду сохранения вместе с электронной подписью. Программа запишет на диск сам файл и рядом отдельный файл подписи с расширением .p7s. Этот файл и есть подпись: его принимают сервисы проверки, суд и контрагент.
Типичная ситуация: налоговая или контрагент просит прислать договор «с подписью отдельным файлом». Договор подписан в 1С два месяца назад, а где лежит подпись, никто не помнит. Ниже — все рабочие пути: из интерфейса, через служебный регистр, кодом, из контейнера КриптоПро и при переносе между базами.
Что на самом деле лежит в базе 1С
Прежде чем что-то доставать, полезно понять, что именно 1С хранит. От этого зависит, какой способ вам подходит.
- 📄 Откреплённая подпись — двоичные данные в формате CMS (PKCS#7). Именно её сохраняют в
.p7s. - 🪪 Сертификат подписанта — открытая часть, вшита в саму подпись. Её можно выгрузить в
.cer. - 🕒 Служебные сведения — дата подписания, кто подписал, комментарий, результат последней проверки.
- 🔑 Закрытого ключа в базе нет. Он живёт на токене, в контейнере КриптоПро или в облачном сервисе подписи.
Достать из 1С закрытый ключ нельзя никаким способом. Если задача — подписывать на другом компьютере, нужен перенос контейнера ключа, а не выгрузка из базы. Этому посвящён отдельный раздел ниже.
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, Документооборот) подписи объектов и присоединённых файлов хранятся в регистре сведений ЭлектронныеПодписи. В подсистеме ЭДО подписи входят в пакет электронного документа и хранятся вместе с его файлами.
| Что нужно получить | Где это в 1С | Формат на выходе |
|---|---|---|
| Подпись под файлом | Карточка присоединённого файла | .p7s |
| Подписи всех файлов объекта | Регистр ЭлектронныеПодписи или код | .p7s |
| Сертификат подписанта | Подпись или справочник сертификатов | .cer |
| Закрытый ключ | Не в 1С — в контейнере | контейнер КриптоПро |
Как сохранить файл вместе с подписью из интерфейса
Самый быстрый и безопасный путь. Ничего не меняет в базе и подходит рядовому пользователю.
Подпись под присоединённым файлом
- Откройте документ или элемент справочника, к которому прикреплён подписанный файл.
- Нажмите на кнопку со скрепкой или откройте список присоединённых файлов из командной панели формы.
- Выделите файл. У подписанного файла в списке стоит значок подписи.
- В меню команд файла выберите сохранение вместе с электронной подписью.
- Укажите каталог. Если подписей несколько, программа предложит отметить нужные.
На диске появятся два файла: Договор.pdf и Договор.pdf.p7s или похожее имя. При нескольких подписях — несколько файлов подписи, по одному на каждого подписанта.
Расширение файла подписи задаётся в настройках электронной подписи (по умолчанию p7s). Если контрагент ждёт .sig, достаточно переименовать файл: содержимое то же, формат CMS.
Просмотр подписи перед выгрузкой
Откройте карточку файла и перейдите на вкладку или в список «Электронные подписи». Там видно, кто подписал, когда и верна ли подпись. Двойной щелчок по строке открывает подробности подписи и сертификат. Из этой же формы подпись можно сохранить отдельно, без исходного файла.
Подпись электронного документа ЭДО
В документообороте с контрагентами подпись не лежит отдельно от документа. Откройте электронный документ (из учётного документа по ссылке ЭДО или из рабочего места обмена) и найдите в его командах выгрузку на диск. Получится пакет: файл документа в формате ФНС (.xml) и файлы подписей обеих сторон.
Подпись ЭДО ставится под XML-файл формата ФНС, а не под печатную форму. Если отправить контрагенту PDF и .p7s из пакета, проверка подписи покажет ошибку: подписан другой файл.
Регистр «Электронные подписи»: доступ без программиста
Когда файлов много или карточка не открывается, подписи можно найти напрямую в регистре. Конфигуратор здесь нужен только для разведки: в нём видно, как называется объект хранения, но данные он не показывает.
Шаг 1. Найдите объект хранения в Конфигураторе
- Откройте базу в режиме Конфигуратор.
- В дереве метаданных разверните
Регистры сведений. - Найдите регистр
ЭлектронныеПодписи. В его ресурсах есть двоичные данные подписи и отпечаток сертификата, в измерениях — подписанный объект.
В нетиповых или старых конфигурациях подпись может храниться в реквизите табличной части или в отдельном справочнике. Поиск по дереву метаданных по слову «Подпис» быстро это покажет.
Шаг 2. Откройте регистр в режиме Предприятия
- Включите отображение команды «Все функции»:
Главное меню → Сервис → Параметры → Отображать команду «Все функции». - Откройте
Главное меню → Все функции → Регистры сведений → Электронные подписи. - Отберите записи по подписанному объекту или по дате.
В списке видны подписант, дата и отпечаток сертификата. Сохранить двоичные данные из стандартного списка регистра нельзя: для этого нужна обработка или код из следующего раздела.
Не редактируйте и не удаляйте записи регистра вручную. Удалённая строка — это подпись, которую восстановить можно только из резервной копии базы.
Программная выгрузка подписей средствами БСП
Если нужно выгрузить подписи по сотне документов или встроить выгрузку в свою обработку, используйте программный интерфейс БСП. Он есть во всех типовых конфигурациях на её основе.
Получение подписей объекта
Функция ЭлектроннаяПодпись.УстановленныеПодписи возвращает массив структур. В каждой есть свойство Подпись — двоичные данные, которые и записываются в .p7s.
&НаСервере
Процедура ВыгрузитьПодписиНаСервере(ПодписанныйОбъект, Каталог)
Подписи = ЭлектроннаяПодпись.УстановленныеПодписи(ПодписанныйОбъект);
НомерПодписи = 0;
Для Каждого СвойстваПодписи Из Подписи Цикл
НомерПодписи = НомерПодписи + 1;
ИмяФайла = Каталог + ПолучитьРазделительПути()
+ СтрШаблон("подпись_%1.p7s", Формат(НомерПодписи, "ЧГ=0"));
СвойстваПодписи.Подпись.Записать(ИмяФайла);
КонецЦикла;
КонецПроцедуры
Здесь ПодписанныйОбъект — ссылка на присоединённый файл или объект, который подписывали. Процедура пишет файлы на диск сервера 1С. Каталог должен существовать, а у пользователя, от имени которого работает сервер, должны быть права на запись.
Как передать файл на компьютер пользователя
В клиент-серверной базе файлы с сервера пользователю не видны. Тогда на сервере кладите двоичные данные во временное хранилище, а на клиенте сохраняйте их:
&НаСервере
Функция АдресПервойПодписи(ПодписанныйОбъект, УникальныйИдентификатор)
Подписи = ЭлектроннаяПодпись.УстановленныеПодписи(ПодписанныйОбъект);
Если Подписи.Количество() = 0 Тогда
Возврат "";
КонецЕсли;
Возврат ПоместитьВоВременноеХранилище(Подписи[0].Подпись, УникальныйИдентификатор);
КонецФункции
&НаКлиенте
Процедура СохранитьПодпись(Команда)
Адрес = АдресПервойПодписи(Объект.Ссылка, УникальныйИдентификатор);
Если ЗначениеЗаполнено(Адрес) Тогда
НачатьПолучениеФайлаССервера(Адрес, "подпись.p7s");
КонецЕсли;
КонецПроцедуры
Метод НачатьПолучениеФайлаССервера покажет пользователю диалог сохранения. Работает в тонком клиенте и веб-клиенте.
Сертификат из подписи
Сертификат подписанта зашит в саму подпись. Платформенный объект МенеджерКриптографии умеет его достать методом ПолучитьСертификатыИзПодписи. Каждый полученный СертификатКриптографии выгружается в двоичные данные методом Выгрузить(), а их записывают в файл .cer.
Для этого менеджер криптографии должен быть создан под установленную на компьютере программу подписи (КриптоПро CSP или ViPNet CSP). В БСП это делается общими функциями подсистемы, вручную имя провайдера прописывать не нужно.
Если нужен только сертификат и он уже добавлен в 1С, выгрузка кода не требует: Администрирование → Общие настройки → Электронная подпись и шифрование → откройте список сертификатов → карточка сертификата → сохранение в файл.
Сертификат и ключ из контейнера КриптоПро
Часто «вытащить подпись из 1С» на деле значит «подписывать с другого компьютера». 1С здесь ни при чём: ключ лежит в контейнере на флешке, токене, в реестре или на диске.
Выгрузить сертификат (открытую часть)
- Запустите КриптоПро CSP, вкладка «Сервис».
- Нажмите «Просмотреть сертификаты в контейнере» и выберите контейнер.
- Откройте «Свойства» сертификата → вкладка «Состав» → «Копировать в файл».
- Выберите формат X.509 в кодировке DER и сохраните
.cer.
Этот файл можно отправить кому угодно: он не позволяет подписывать.
Скопировать контейнер с ключом
- В КриптоПро CSP на вкладке «Сервис» нажмите «Скопировать».
- Укажите исходный контейнер, введите новое имя и выберите носитель.
- Задайте пароль (ПИН) на новый контейнер.
- На новом компьютере установите сертификат из контейнера и добавьте его в 1С через настройки электронной подписи.
Ключ, выпущенный как неэкспортируемый, скопировать нельзя — так задумано. Для облачной подписи и ключей на защищённых токенах нужен новый сертификат или подключение токена к другому компьютеру.
Помните про ответственность: по 63-ФЗ владелец обязан хранить ключ в тайне. Копию контейнера не передавайте сотрудникам «на всякий случай».
Перенос подписей между базами 1С
Подписи привязаны к ссылкам объектов. При переносе важно, чтобы вместе с ними приехал байт в байт тот же подписанный файл. Иначе подпись станет «неверной».
| Способ | Что переносится | Когда подходит |
|---|---|---|
Выгрузка .dt и загрузка в новую базу | Вся база, включая подписи | Переезд целиком, копия для тестов |
| РИБ (распределённая база) | Записи регистра вместе с объектами | Филиалы с общей конфигурацией |
| Универсальный обмен через XML | Объекты и записи регистров по правилам | Разные базы одной конфигурации |
Файлы .p7s + исходники | Только нужные документы | Архив, передача в суд, аудит |
Для разовой передачи архива проще всего последний вариант: выгрузить файлы с подписями из интерфейса и положить рядом с исходниками. Подпись проверяется вне 1С любым сервисом проверки CMS.
Загрузка .dt полностью заменяет данные базы-приёмника. Делайте это только в пустую или тестовую базу.
Как проверить извлечённую подпись вне 1С
Получатель почти всегда проверяет подпись не в 1С. Проверьте сами, прежде чем отправлять.
- ✅ Сервис проверки подписи на портале Госуслуг: загружаете исходный файл и
.p7s. - ✅ КриптоАРМ или аналог: открываете файл подписи, программа показывает подписанта и статус.
- ✅ Утилита проверки от вашего удостоверяющего центра.
Если сервис пишет, что подпись верна и сертификат действовал на момент подписания, файлы можно отправлять.
Проверка в самой 1С перед выгрузкой
В списке подписей присоединённого файла есть команда проверки. Запустите её до сохранения: 1С пересчитает подпись по текущей версии файла и обновит статус в строке. Если статус «неверна», выгружать бессмысленно — сначала найдите подписанную версию.
Для проверки 1С нужна программа подписи на компьютере или на сервере, в зависимости от настроек. Если программы нет, проверка не выполнится, но сохранить файл с подписью всё равно можно.
Что приложить к выгруженной подписи
- 📎 Исходный файл — тот самый, без пересохранения и конвертации.
- 📎 Файл подписи
.p7sдля каждого подписанта. - 📎 По запросу — сертификат
.cer, если получатель проверяет без доступа к интернету.
Архивируйте всё одним ZIP-файлом: почтовые сервисы иногда меняют имена вложений, и пару «файл + подпись» потом трудно сопоставить.
Ошибки при извлечении подписи и что с ними делать
Администрирование → Общие настройки → Электронная подпись и шифрование и роли пользователя.Сравнение способов и частые вопросы
| Способ | Кому подходит | Сколько файлов | Риски |
|---|---|---|---|
| Сохранение с подписью из карточки | Любому пользователю | 1–10 | Нет |
| Регистр через «Все функции» | Администратору для поиска | Просмотр | Случайно удалить запись |
| Код БСП | Программисту | Сотни | Ошибка в каталоге, права сервера |
| Пакет ЭДО | Бухгалтеру по ЭДО | По документу | Отправить не тот исходник |
| КриптоПро | Владельцу ключа | Сертификат, контейнер | Утечка ключа |
Можно ли извлечь подпись из печатной формы, сохранённой в PDF?
Чем откреплённая подпись отличается от присоединённой?
Остаётся ли подпись действительной, если сертификат уже истёк?
Можно ли выгрузить подписи сразу по всем документам за период?
Нужен ли ключ подписи, чтобы сохранить файл .p7s?
Источники
- Федеральный закон от 06.04.2011 № 63-ФЗ «Об электронной подписи»