В процессе эксплуатации систем на базе «1С:Предприятие» специалисты часто сталкиваются с ситуацией, когда выпущенное вендором исправление (патч) после установки отзывается. Это может произойти по разным причинам: обнаружение критических ошибок в самом патче, изменение законодательства или выпуск кумулятивного обновления, включающего этот код. Однако иногда после удаления отозванного патча в системе начинают проявляться ошибки, и специалисту необходимо проанализировать содержимое этого расширения, чтобы понять логику внесенных изменений. Разберем подробно, как можно получить доступ к коду отозванного патча, если он уже удален из базы и прямых ссылок на него больше нет.
Прежде чем приступать к сложным техническим манипуляциям с кэшем или системными файлами, проанализируем стандартные возможности взаимодействия с поставщиком программного обеспечения. Рассмотрим основные пути:
.cfe.Когда платформа 1С скачивает патчи через встроенный механизм автоматического обновления, файлы не сразу попадают в базу данных. Сначала они загружаются в локальные временные директории пользователя. Проанализируем файловую структуру, где могут сохраниться следы удаленного исправления.
Рассмотрим путь к папке, в которой хранятся загруженные расширения: %LOCALAPPDATA%\1C\1cv8\Common\1CExtCapp. В этой директории платформа создает подкаталоги, именами которых являются уникальные идентификаторы (GUID). Внутри этих папок лежат файлы с расширением .cfe.
Разберем по шагам процесс поиска:
.cfe являются бинарными, в них часто можно встретить текстовые префиксы объектов или имя самого патча (например, EF_00123456).%TEMP%. Иногда дистрибутивы обновлений распаковываются именно туда перед интеграцией в конфигурацию.У каждого исправления в системе 1С есть уникальный номер, начинающийся с префикса EF_. Если мы знаем этот номер, мы можем попытаться восстановить файл. Посмотрим на алгоритм действий:
Выясним номер патча. Сделать это можно через Журнал регистрации. Проанализируем события за период, когда патч устанавливался или удалялся. В комментариях к событиям изменения состава расширений будет фигурировать его имя. Также полезно заглянуть в служебный регистр сведений Удаленные исправления (доступен через "Функции для технического специалиста"), если ваша конфигурация построена на БСП.
Зная номер, например EF_10203040, можно попробовать найти его на специализированных ресурсах или форумах, где администраторы делятся архивами патчей. Важно понимать, что физическое удаление файла с серверов обновлений 1С происходит не мгновенно после отзыва. В некоторых случаях прямая ссылка на файл остается рабочей еще некоторое время.
Если сам файл .cfe найти не удалось, проанализируем косвенные данные, которые помогут восстановить картину происходящего. Рассмотрим использование системных логов:
Журнал регистрации: Хотя он не содержит программного кода, в нем фиксируются объекты, которые изменялись. Если патч вносил изменения в данные, вы увидите, какие наборы записей или документы были модифицированы служебными процедурами патча.
Технологический журнал (ТЖ): Это наиболее мощный инструмент. Если в момент работы патча в системе был включен сбор ТЖ с определенными настройками, мы можем увидеть в логах вызовы процедур и функций, которые были перехвачены расширением. Рассмотрим пример настройки logcfg.xml для отслеживания вызовов:
<log location="C:\LOGS\1C" history="24">
<event>
<eq property="Name" value="CALL"/>
</event>
<property name="All"/>
</log>
Анализируя такие логи, можно увидеть, что управление передавалось в методы, принадлежащие расширению EF_..., и даже восстановить передаваемые параметры, что поможет понять причину возникшей ошибки.
Разберем наиболее надежный способ, который, к сожалению, требует предусмотрительности. Как показывает практика опытных администраторов, хранение только файлов конфигурации .cf недостаточно для полноценного расследования инцидентов.
Проанализируем стратегию безопасного обновления:
Если у вас сохранилась копия базы месячной давности, процесс восстановления прост: разверните ее локально, перейдите в Администрирование — Обслуживание — Обновление программы — Установленные исправления (патчи), выберите нужное исправление и сохраните его на диск как обычное расширение .cfe.
Рассмотрим важный организационный момент. Часто пользователи удаляют отозванные патчи только потому, что при запуске программы появляется предупреждающее окно об отключенных расширениях. Проанализируем ситуацию: вместо удаления лучше просто снять флаг "Активно" в списке расширений. В этом случае код патча останется в базе данных, он не будет влиять на работу системы, но вы всегда сможете зайти в конфигуратор и просмотреть его программные модули для поиска причин возникших коллизий. Помните, что удаление патча из списка — это безвозвратная операция для текущей информационной базы.
Таким образом, даже если патч был отозван и удален, у специалиста остается широкий инструментарий для анализа: от проверки локального кэша и системных журналов до обращения к архивам партнеров 1С. Системный подход к хранению резервных копий и внимательное отношение к служебным регистрам БСП позволяют минимизировать риски при работе с автоматическими исправлениями.