Введение: Знакомая боль
Если в вашей компании с Честным Знаком работают несколько подразделений - менеджеры, склады, магазины - вы точно сталкивались с ситуацией, когда автоматизированные процессы внезапно встают. Причина почти всегда одна: истек срок действия токена.
Встроенный в 1С механизм уведомлений помогает, но не решает проблему полностью. Ответственные сотрудники могут быть в отпуске, заболеть или просто забыть нажать заветную кнопку. Человеческий фактор сводит на нет всю эффективность автоматизации.
Я нашел способ полностью исключить эту проблему, заставив 1С автоматически продлевать токены по расписанию.
В чем подвох? Почему в большинстве случаев не подходят регламентные задания
Казалось бы, что может быть проще - создать регламентное задание для обновления токена. Однако здесь мы сталкиваемся с архитектурным ограничением, которое возникает в самом распространенном сценарии.
Когда электронная подпись выпущена на конкретного сотрудника (менеджера, кладовщика, бухгалтера), она обычно находится на его рабочем месте - в виде токена, USB-ключа или установлена в личное хранилище сертификатов Windows.
А вот в чем проблема:
-
Регламентные задания выполняются на сервере 1С, который физически не имеет доступа к личным сертификатам пользователей на их рабочих компьютерах.
-
Процедуры работы с сертификатами через стандартные механизмы 1С требуют клиентского подключения к тому месту, где физически находится ключ.
Конечно, технически можно установить сертификат непосредственно на сервер, но на практике это часто неприемлемо по соображениям безопасности - немногие сотрудники согласятся "отдать" свою электронную подпись для установки в серверную.
Поэтому мое решение предлагает обходной путь: запускать клиент 1С от имени нужного пользователя по расписанию. В этом случае процесс получает доступ к сертификатам так же, как если бы пользователь работал в программе самостоятельно, обновляет токены и завершает работу.
Такой подход идеально подходит для ситуаций, когда электронная подпись должна остаться у сотрудника, но его забывчивость не должна парализовать работу всей компании.
Суть решения: Краткий обзор
Я создал конфигурационное расширение, которое:
-
Хранит настройки по токенам, которые нужно обновлять.
-
Запускается по расписанию (например, через Планировщик задач Windows) с специальным параметром командной строки.
-
Открывает 1С, выполняет процедуру обновления всех указанных токенов и завершает работу.
-
Работает с основными конфигурациями: УТ, КА, ERP, УНФ, Розница, Бухгалтерия.
Техническая реализация внутри 1С
1. Расширение и его настройки
Решение поставляется в виде конфигурационного расширения. После его установки в базе появляется справочник "Настройка автообновления токенов".
Доступ к которому доступен по кнопке "Настройки автообновления" на форме "Токены авторизации"

Настройка справочника:

В этом справочнике для каждого токена указываются:
-
Организация - организация чей токен обновляем.
-
Ответственный - пользователь, чей сертификат используется.
-
Пароль от токена - пароль пользователя, указывается при необходимости.
-
Тип токена - ИС МП или СУЗ.
-
Производственный объект - для токена типа СУЗ.

2. Механизм запуска
1С необходимо запускать с пользовательским параметром /C UpdateToken. Логика работы следующая: система перебирает все записи в справочнике настроек, для каждой формирует и подписывает запрос на обновление токена, используя указанные сертификат и пароль, отправляет запрос в Честный Знак и сохраняет полученный новый токен в базе. После обработки всех токенов 1С автоматически закрывается.
Пошаговая инструкция по внедрению
Шаг 1: Установка расширения
-
Установите конфигурационное расширение в вашу базу 1С.
-
Важно! В параметрах запуска базы необходимо отключить "Безопасный режим" и "Защиту от опасных действий".
Шаг 2: Настройка пользователя и прав
-
Создайте или назначьте пользователя 1С, от имени которого будет происходить обновление. У этого пользователя должен быть физически доступен сертификат (установлен в системе или быть в хранилище сертификатов Windows).
-
Назначьте этому пользователю роль "ОТЧЗ_ОсновнаяРоль", которая поставляется с расширением и дает право обновлять токены.
-
Заполните справочник "Настройка автообновления токенов", указав все необходимые токены и связав их с ответственным пользователем.
Шаг 3: Настройка автоматического запуска через Планировщик задач Windows
Для автоматизации создаем задачу в Планировщике задач Windows. Задача будет запускать скрипт, который откроет 1С с нужными параметрами.
Самый удобный способ - использовать VBS-скрипт:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "cmd /c chcp 1251 > nul && ""C:\Program Files (x86)\1cv8\common\1cestart.exe"" enterprise /S Сервер\ИмяБазы /N ""ИмяПользователяДляОбновления"" /P ""ПарольПользователя"" /DisableStartupMessages /AppAutoCheckVersion /AppAutoCheckMode /C ""UpdateToken""", 0, False
Set WshShell = Nothing
-
/S Сервер\ИмяБазы- укажите вашу строку подключения, для файловой базы используем параметр/F путь к каталогу -
/N "ИмяПользователяДляОбновления"- пользователь 1С с ролью "ОТЧЗ_ОсновнаяРоль" -
/P "ПарольПользователя"- его пароль. Внимание к безопасности! (см. ниже) -
/C "UpdateToken"- наш ключевой параметр, который запускает процесс обновления
Альтернатива — BAT-файл:
chcp 1251 > nul "C:\Program Files (x86)\1cv8\common\1cestart.exe" enterprise /S Сервер\ИмяБазы /N "ИмяПользователяДляОбновления" /P "ПарольПользователя" /DisableStartupMessages /AppAutoCheckVersion /AppAutoCheckMode /C "UpdateToken"
Создайте задачу в Планировщике задач Windows, которая будет запускать этот скрипт (VBS или BAT) по вашему расписанию.
У нас это делается два раза в день (в 9:00 и 18:00), чтобы обеспечить надежный запас по времени.
Важные нюансы и вопросы безопасности
-
Хранение паролей. Пароль от пользователя 1С в скрипте и пароль от токена в базе — это уязвимое место.
-
Обработка ошибок. В текущей реализации при ошибке обновления какого-либо токена 1С просто завершит работу. Для диагностики проблем вам потребуется вручную запустить обновление токена непосредственно в 1С, где будет отображена конкретная ошибка (например, "Недействительный сертификат", "Нет доступа в интернет", "Неверный пароль" и т.д.)
Решение проверено на практике и работает в основных конфигурациях 1С, где требуется работа с Честным Знаком.
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.24.43
- 1С:Комплексная автоматизация 2, релизы 2.5.24.43
- 1С:ERP Управление предприятием 2, релизы 2.5.24.43
- Управление нашей фирмой, редакция 3.0, релизы 3.0.1.230
- Розница, редакция 3.0, релизы 3.0.10.210
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.184.26
Вступайте в нашу телеграмм-группу Инфостарт