В процессе работы с электронным документооборотом (ЭДО) в различных программах на платформе 1С:Предприятие 8, включая 1С:Бухгалтерию государственного учреждения 2.0 (БГУ 2.0), особенно после обновления информационных баз до новых релизов, например, 2.0.100.36, пользователи могут столкнуться с критической проблемой. Эта ошибка проявляется при попытке подписания исходящих электронных документов и звучит следующим образом: "Сертификат не признан квалифицированным на дату проверки ДД.ММ.ГГГГ ЧЧ:ММ по причине: • ключ электронной подписи не действует на дату проверки". Столь досадная ситуация не только задерживает, но и полностью блокирует отправку важных документов, требующих электронной подписи. В рамках этой статьи мы подробно рассмотрим природу данной ошибки, выясним ее ключевые причины и представим пошаговые инструкции по ее эффективному устранению, используя как официальные исправления, так и программные методы.
Для того чтобы эффективно решить проблему, мы должны сначала понять ее корень. Основная причина этой ошибки связана с изменениями в законодательстве Российской Федерации, касающимися использования квалифицированных электронных подписей (КЭП), и последующим обновлением логики проверки сертификатов в программных продуктах 1С. В частности, Приказ ФСБ России от 2 февраля 2024 года № 50, который вступил в силу 1 сентября 2024 года, установил новые требования к структуре квалифицированных сертификатов, обязывая их содержать информацию о сроке действия закрытого ключа. Это означает, что не только сам сертификат должен быть действителен, но и связанный с ним закрытый ключ должен иметь определенный, неистекший период активности.
После обновления модулей 1С-ЭДО, которые входят в состав новых релизов конфигураций (таких как БГУ 2.0.100.36, Бухгалтерия предприятия 3.0, 1С:Документооборот), программа начинает более строго проверять все сертификаты на соответствие этим новым требованиям. Эта проверка применяется даже к тем сертификатам, которые были выданы до вступления изменений в силу. Если в сертификате по какой-либо причине отсутствует, некорректно определен или неверно интерпретируется срок действия закрытого ключа, система 1С-ЭДО генерирует сообщение об ошибке, указывающее на "недействительность ключа электронной подписи на дату проверки".
Технически, проблема обычно локализована в функции КриптографияБЭДКлиентСервер.КлючЭлектроннойПодписиДействуетНаДату. Эта функция, отвечающая за проверку активности закрытого ключа, в определенных условиях может некорректно обрабатывать ситуацию, когда дата окончания его действия не заполнена или отсутствует в стандартной структуре сертификата. Это особенно актуально для некоторых старых форматов сертификатов или специфических удостоверяющих центров, которые могли не включать эту информацию в явном виде. В таких случаях программа ошибочно считает ключ недействительным, хотя по факту он может быть полностью рабочим и активным.
Наиболее рекомендуемым и, как правило, самым быстрым способом устранения данной ошибки является установка официальных исправлений, которые регулярно выпускаются фирмой "1С". Разработчики оперативно реагируют на подобные критические ошибки, связанные с изменениями в законодательстве и технологиях, выпуская специализированные патчи.
Для данной проблемы одним из ключевых и наиболее часто решающих является патч с идентификатором EF_00_00673631. Этот патч специально разработан для корректировки логики некорректной проверки действующих сертификатов в модулях 1С-ЭДО. Важно учитывать, что для самых последних версий конфигурации 1С:Бухгалтерия государственного учреждения 2.0 данный патч может быть уже интегрирован в релиз, и его отдельная установка не потребуется. Однако для других конфигураций, например, 1С:Бухгалтерия предприятия 3.0, 1С:Документооборот или предыдущих версий БГУ, его установка может быть критически необходимой.
Мы можем получить патчи через официальный портал 1С:ИТС или через встроенный механизм обновления в самой программе.
Для установки патча мы рекомендуем использовать штатные механизмы, предусмотренные в программе 1С. Обычно доступ к ним осуществляется через главное меню: "Администрирование" -> "Обслуживание" -> "Обновление программы" -> "Установка исправлений (патчей)". В этом разделе мы сможем увидеть список доступных патчей и выполнить их установку.
Мы настоятельно рекомендуем включить опцию автоматической загрузки и установки исправлений (патчей) в программе 1С. Патчи представляют собой небольшие расширения конфигурации (.epd-файлы), которые оперативно исправляют ошибки и, что немаловажно, автоматически удаляются из системы при выходе нового релиза конфигурации, в котором данная ошибка уже устранена на уровне основной поставки. Такой подход обеспечивает максимальную актуальность и стабильность работы вашей системы.
После успешной установки патча EF_00_00673631 и обязательного перезапуска программы 1С, мы должны выполнить проверку, чтобы убедиться в устранении ошибки. Для этого откроем любой электронный документ, который ранее вызывал ошибку, перейдем на вкладку "ПОДПИСИ", найдем ФИО подписанта, нажмем правой кнопкой мыши и выберем пункт меню "Проверить электронные подписи". Если патч был применен корректно и решил проблему, ошибка "Сертификат не признан квалифицированным..." должна исчезнуть, и статус подписи должен отображаться как "Действительна".
Иногда пользователи сталкиваются с ситуацией, когда патч установлен, но проблема по-прежнему сохраняется. В подобных случаях нам необходимо провести более глубокую диагностику. Мы можем столкнуться с тем, что патч по какой-то причине неактивен или его код не выполняется. Патчи, подобно обычным расширениям конфигурации, могут требовать определенных условий для своей корректной работы, например, отключения безопасного режима, если они вносят глубокие изменения в базовые функции системы. Чтобы убедиться, что код из патча действительно выполняется, мы можем установить точку останова в измененной функции КлючЭлектроннойПодписиДействуетНаДату и в режиме отладки проследить, какой именно код срабатывает – из основной конфигурации или из установленного патча.
Если после всех этих действий патч не срабатывает, возможно, существует конфликт с другими установленными расширениями или уникальными особенностями вашей конфигурации. В такой ситуации мы можем рассмотреть альтернативное решение.
В тех случаях, когда установка официальных патчей не приносит желаемого результата, или если вы предпочитаете иметь полный контроль над изменениями, вносимыми в систему, мы можем применить программное исправление через механизм расширений конфигурации. Этот метод позволяет скорректировать логику проверки сертификата без прямого изменения основной конфигурации, что является очень хорошей практикой, так как облегчает дальнейшие обновления и сопровождение.
Как мы уже выяснили, основная проблема заключается в некорректной обработке функции КриптографияБЭДКлиентСервер.КлючЭлектроннойПодписиДействуетНаДату в ситуациях, когда дата окончания действия закрытого ключа не заполнена в сертификате. Мы можем добавить в эту функцию дополнительную проверку, которая учтет такие сценарии.
Для начала нам потребуется открыть конфигуратор 1С:Предприятия. Если у вас еще нет подходящего расширения, мы создадим новое. Для этого в меню "Конфигурация" выберем "Расширения конфигурации" и нажмем "Добавить". Если расширение уже существует, мы можем использовать его.
Внутрь нашего расширения нам необходимо добавить объект "Общий модуль" с именем КриптографияБЭДКлиентСервер. Для этого в дереве объектов расширения (в окне конфигурации расширения) найдем раздел "Общие" -> "Общие модули", нажмем правой кнопкой мыши и выберем "Добавить". Укажем точное имя модуля КриптографияБЭДКлиентСервер.
Далее, в свойствах этого добавленного общего модуля в расширении, нам необходимо убедиться, что установлены флажки "Вызов сервера" и "Клиент (обычное приложение)" или "Клиент (управляемое приложение)", в зависимости от того, как вызывается функция. Это обеспечит доступность функций модуля.
Теперь нам нужно получить доступ к исходному коду функции КлючЭлектроннойПодписиДействуетНаДату из основного модуля. Для этого в расширении найдем наш общий модуль КриптографияБЭДКлиентСервер, откроем его и добавим текст функции. Для возможности изменения этой функции через расширение, нам необходимо установить для нее директиву препроцессора &ИзменениеИКонтроль. Это явно указывает системе 1С, что данная функция в расширении переопределяет одноименную функцию в основной конфигурации.
Изначальный вид функции в конфигурации может выглядеть примерно так:
Функция КлючЭлектроннойПодписиДействуетНаДату(Сертификат, ДатаПроверки, Контекст) Экспорт
ПериодКлюча = ПериодДействияКлючаЭлектроннойПодписи(Сертификат, Контекст);
Возврат ЗначениеЛежитНаПромежутке(ДатаПроверки, Отрезок(ПериодКлюча.ДатаНачала, ПериодКлюча.ДатаОкончания));
КонецФункции
Мы должны скопировать этот код в наш модуль расширения и модифицировать его.
Наша цель — добавить в функцию проверку на заполненность даты окончания периода действия ключа. Если эта дата не заполнена, это может свидетельствовать о том, что ключ считается бессрочным или его срок действия определяется внешними системами, и в таких случаях мы должны считать ключ действующим, возвращая Истина. Это предотвратит ложное срабатывание ошибки.
Модифицированный код функции, который мы разместим в нашем расширении, будет выглядеть следующим образом:
&ИзменениеИКонтроль("КлючЭлектроннойПодписиДействуетНаДату")
Функция ИспрКлючЭлектроннойПодписиДействуетНаДату(Сертификат, ДатаПроверки, Контекст) Экспорт
ПериодКлюча = ПериодДействияКлючаЭлектроннойПодписи(Сертификат, Контекст);
// #Вставка - Добавляем ключевую проверку на заполненность даты окончания действия ключа
Если Не ЗначениеЗаполнено(ПериодКлюча.ДатаОкончания) Тогда
// Если дата окончания не заполнена, считаем ключ действующим.
// Это позволяет обойти проблему с сертификатами, где эта информация отсутствует
// или неверно интерпретируется.
Возврат Истина;
КонецЕсли;
// #КонецВставки
// Если дата окончания заполнена, выполняем стандартную проверку
Возврат ЗначениеЛежитНаПромежутке(ДатаПроверки, Отрезок(ПериодКлюча.ДатаНачала, ПериодКлюча.ДатаОкончания));
КонецФункции
После того как мы внесли эти изменения в код, нам необходимо сохранить расширение и обновить конфигурацию базы данных, чтобы изменения вступили в силу.
Для того чтобы расширение, изменяющее поведение базовых функций конфигурации, могло работать корректно, очень часто требуется отключить безопасный режим для данного расширения. Мы можем это сделать в режиме "Предприятие". Для этого нам нужно перейти в раздел "Администрирование" -> "Печатные формы, отчеты и обработки" -> "Расширения". В списке установленных расширений найдем наше, выделим его и снимем флажок "Безопасный режим".
Очень важно: Отключение безопасного режима для расширения должно быть выполнено с полным пониманием рисков. Это действие предоставляет расширению более широкие права доступа к данным и функционалу системы. Мы должны быть абсолютно уверены в безопасности и корректности кода, который мы добавляем, чтобы избежать потенциальных уязвимостей или нежелательных побочных эффектов.
Если после применения расширения и отключения безопасного режима проблема все еще остается, мы рекомендуем выполнить трассировку и отладку. Откроем конфигуратор, установим точку останова прямо внутри измененной функции КлючЭлектроннойПодписиДействуетНаДату в нашем расширении. Затем в режиме "Предприятие" попробуем подписать документ. В результате мы должны увидеть, что выполнение программы останавливается на нашей точке останова, подтверждая, что выполняется именно код из нашего расширения, а не из основной конфигурации. Это поможет нам убедиться, что расширение успешно переопределило базовую функцию и наш код анализируется.
В дополнение к основным решениям, связанным с патчами или программным кодом, существует ряд дополнительных аспектов, которые мы должны обязательно проверить. Эти шаги помогут исключить другие возможные причины возникновения ошибки "Сертификат не признан квалифицированным на дату проверки" и обеспечить максимально стабильную работу ЭДО. При необходимости гибко управлять датами подписания документов во внутреннем документообороте этой конфигурации можно использовать обработку для установки произвольной даты подписи во внутреннем ЭДО БГУ 2.0.
Как мы подробно рассмотрели, ошибка "Сертификат не признан квалифицированным на дату проверки" в программах 1С при работе с ЭДО является достаточно распространенной и часто возникает после обновления конфигураций, особенно с учетом ужесточения требований к квалифицированным электронным подписям. Мы выяснили, что наиболее надежными и эффективными решениями являются либо установка официального патча EF_00_00673631, либо, как альтернативный и более контролируемый метод, применение программного исправления через механизм расширения конфигурации с модификацией функции КриптографияБЭДКлиентСервер.КлючЭлектроннойПодписиДействуетНаДату. Мы настоятельно рекомендуем всегда проверять все сопутствующие факторы, такие как срок действия самого сертификата, его статус отзыва, правильность настроек криптопровайдера, корректность системной даты и времени, а также доступность сертификата для конкретного пользователя. Следуя предложенным в этой статье рекомендациям и шагам, мы сможем эффективно устранить данную проблему и восстановить бесперебойный и надежный электронный документооборот в вашей программе 1С, обеспечивая соответствие всем законодательным требованиям.