При работе с электронными листками нетрудоспособности (ЭЛН) в устаревших, но поддерживаемых конфигурациях, таких как 1С:Управление производственным предприятием (УПП) ред. 1.3 или 1С:Зарплата и управление персоналом (ЗУП) ред. 2.5, пользователи часто сталкиваются с критической ошибкой при попытке отправить данные в фонд. Ошибка проявляется в виде системного сообщения: Не удалось установить соединение с сервером... Ошибка работы с Интернет: внутренняя ошибка сервера (500).
В этой статье мы подробно проанализируем причины возникновения данной проблемы, разберем программные ошибки в коде 1С и изучим правильную настройку криптографической защиты для успешного взаимодействия с СФР (бывший ФСС).
Рассмотрим техническую сторону вопроса. Ошибка 500 (Internal Server Error) со стороны сервера фонда часто означает, что сервер получил запрос, который он не может корректно обработать. В случае с 1С это часто связано с некорректным формированием структуры XML-пакета или использованием устаревших адресов веб-сервисов.
Разберем ситуацию на примере модуля ОбменСведениямиОПособияхСФСС. В определенных версиях программы при вызове метода ОтправитьДляОбработки формировалось сообщение, в котором пространство имен (namespaces) или структура тегов не соответствовала актуальным требованиям шлюза приема ФСС. Проблема была официально признана разработчиками 1С под номером 10229278.
Как решить:
ОбменСведениямиОПособияхСФСС из исправленного релиза в текущую рабочую базу. Поскольку блок зарплаты в УПП базируется на коде ЗУП 2.5, эти модули во многом идентичны.Фонд периодически меняет шлюзы приема данных. Например, переход с версии /ws-insurer-crypto-v11/ на /ws-insurer-crypto-v20/ блокирует работу старых версий программ. В тексте ошибки можно заметить путь к сервису: если вы видите обращение к FileOperationsLnPort по старому адресу, сервер фонда вернет ошибку 500, так как старый обработчик на его стороне может быть отключен или работать некорректно с новыми типами сертификатов.
Проанализируем фрагмент кода, который отвечает за выбор адреса сервиса в модуле ОбменСведениямиОПособияхСФСС:
// Пример логики выбора версии сервиса (упрощенно)
Если ВерсияФормата = "2.0" Тогда
АдресСервиса = "/ws-insurer-crypto-v20/FileOperationsLnService";
Иначе
АдресСервиса = "/ws-insurer-crypto-v11/FileOperationsLnPort";
КонецЕсли;
Обновление конфигурации автоматически меняет эти ссылки на актуальные, соответствующие требованиям СФР.
Часто ошибка 500 возникает из-за невозможности сервера расшифровать ваше сообщение. Это происходит, если сообщение зашифровано на ключе, который сервер фонда считает недостоверным. Выясним, как правильно проверить сертификаты:
certmgr.msc. Удалим старые, дублирующиеся и просроченные сертификаты фонда из папок «Личное» и «Другие пользователи».Современные требования безопасности СФР подразумевают использование протокола TLS 1.2 с российскими криптоалгоритмами. Рассмотрим, почему это вызывает ошибку 500:
Если ваша операционная система (например, Windows Server 2008 или Windows 7 без обновлений) не поддерживает TLS 1.2 «из коробки» или версия КриптоПро CSP ниже 4.0, то на этапе установления защищенного соединения (handshake) происходит сбой. Веб-сервер фонда может прервать соединение, что в 1С отобразится как внутренняя ошибка сервера.
Рекомендации по настройке:
КриптоПро CSP (рекомендуется 5.0).Панель управления -> Свойства браузера -> Дополнительно. Должны быть включены флажки TLS 1.1 и TLS 1.2.Проанализируем ситуацию, когда 1С работает в режиме «клиент-сервер». Ошибка 500 может возникать из-за того, что сервер 1С не имеет доступа к закрытому ключу сертификата организации.
Когда вы нажимаете кнопку «Отправить», код может выполняться на стороне сервера (в фоновом задании). Если сертификат установлен только в профиле пользователя Windows, сервер 1С (работающий под учетной записью USR1CV8) его просто «не видит». В этом случае необходимо установить сертификат с привязкой к закрытому ключу в хранилище «Локальный компьютер» или непосредственно под учетной записью службы 1С.
Подведем итог и составим четкий план действий для системного администратора и программиста 1С:
Агент сервера 1С:Предприятия (если используется серверный вариант) и клиентское приложение 1С.Соблюдение этих шагов позволит устранить ошибку 500 и восстановить нормальный обмен сведениями о пособиях с Социальным фондом России.