Как восстановить базу 1С, если файл 1CD весит 0 байт после вируса, и перенести данные из узлов РИБ?

Системный администратор 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет IT и автоматизация бизнеса
← На главную

Ситуация, когда основной файл файловой базы данных 1Cv8.1CD внезапно становится размером 0 байт, обычно свидетельствует о вредоносной активности (скрипты-вайперы или сбойные шифровальщики-вымогатели). Злоумышленники открывают файл на запись, обнуляют его длину и сохраняют пустую заглушку. Стандартные утилиты восстановления удаленных файлов в таком случае часто оказываются бессильны, так как физического удаления объекта в файловой системе не происходило.

Разберем по шагам, какие способы позволяют спасти информацию, если последняя резервная копия устарела, но в сети сохранились теневые копии или работающие периферийные узлы распределенной информационной базы (РИБ).

Шаг 1. Проверка системных теневых копий и скрытых каталогов

Перед тем как переходить к сложным манипуляциям с базами, проанализируем локальные накопители на наличие автоматически созданных снимков состояния тома (Volume Shadow Copy):

  1. Использование утилит для теневых копий: Запустим специализированное ПО (например, ShadowExplorer) или откроем свойства папки с базой в проводнике Windows на вкладке Предыдущие версии. Если служба теневого копирования была активна, можно выгрузить состояние файла 1Cv8.1CD на момент последней точки восстановления.
  2. Проверка каталога System Volume Information: В некоторых случаях снимки файлов базы сохраняются в системном каталоге. Чтобы получить к нему доступ, системному администратору необходимо настроить права доступа во вкладке безопасности папки.
  3. Поиск временных файлов: Проверим системные папки временных данных (%TEMP%, каталоги кэша платформы 1С). В процессе интенсивной работы пользователей там могут сохраняться временные файлы таблиц, из которых в критических ситуациях можно извлечь часть информации.

Шаг 2. Восстановление данных из узлов РИБ (Распределенной информационной базы)

Если файл базы полностью утерян, а последняя резервная копия была сделана неделю назад, наличие периферийных узлов (РИБ) позволяет полностью или частично восстановить актуальные данные за утерянный период. Рассмотрим два основных сценария работы с распределенной базой.

Сценарий А. Превращение периферийной базы в центральную

Если в распределенной базе использовался полный план обмена (все документы и справочники без фильтрации по организациям передавались во все узлы), периферийная база содержит 100% актуальной информации. В таком случае быстрее всего «отвязать» периферийный узел от главного и сделать его новой центральной базой.

Разберем, как снять признак подчиненного узла:

  1. Запустим платформу 1С в режиме Конфигуратор или 1С:Предприятие с параметром командной строки: 1cv8.exe /ResetMasterNode
  2. Либо воспользуемся внешней обработкой, выполнив программный код для отключения главного узла: ПланыОбмена.УстановитьГлавныйУзел(Неопределено);

После выполнения этой команды база станет независимым главным узлом. Далее от нее можно заново создать и настроить подчиненные узлы для остальных филиалов.

Сценарий Б. Накатывание изменений из периферийной базы в недельную копию

Если в РИБ настроен выборочный обмен (с фильтрами по складам, организациям или подразделениям), периферийная база не содержит всех данных системы. В этом случае восстановим недельную копию центральной базы и принудительно выгрузим в нее все изменения, накопленные в периферийных базах за прошедшую неделю.

Поскольку автоматический обмен не передает старые данные, так как считает их уже отправленными, зарегистрируем изменения вручную.

1. Регистрация изменений без перепроведения документов:

Не требуется перепроводить документы вручную или групповой обработкой — это может нарушить последовательность партий или запрет редактирования закрытых периодов. Достаточно зарегистрировать объекты к обмену с помощью встроенного механизма:


УзелОбмена = ПланыОбмена.Полный.НайтиПоКоду("ЦБ"); // Указываем код центрального узла
Если ЗначениеЗаполнено(УзелОбмена) Тогда
    // Регистрируем все документы определенного типа за нужный период
    Выборка = Документы.РеализацияТоваровУслуг.Выбрать(НачалоДня(ТекущаяДата() - 7 * 86400));
    Пока Выборка.Следующий() Цикл
        ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Выборка.Ссылка);
    КонецЦикла;
КонецЕсли;

Для типовых конфигураций (например, 1С:Управление торговлей 10.3, 1С:Бухгалтерия) удобнее воспользоваться штатной обработкой Регистрация изменений для обмена, где можно выделить нужные типы метаданных или документы за выбранный период и нажать кнопку регистрации.

2. Исправление ошибки номеров сообщений обмена:

При попытке загрузить файл обмена в старую копию базы 1С выдаст ошибку: «Номер сообщения меньше или равен ранее принятому». Это происходит потому, что в восстановленной резервной копии счетчики пакетов откатились назад.

Чтобы восстановить синхронизацию, скорректируем номера сообщений в узле обмена через обработку или окно настройки обмена данными:


УзелОбъект = УзелОбмена.ПолучитьОбъект();
// Сбрасываем или выставляем номер в соответствии с отправляемым пакетом
УзелОбъект.НомерПринятого = 0;
УзелОбъект.НомерОтправленного = 0;
УзелОбъект.Записать();

После обнуления счетчиков в центральном узле обмен успешно примет файл выгрузки из периферийной базы и актуализирует все измененные справочники и документы.

Шаг 3. Использование журнала регистрации для ручного ввода

Если периферийных баз не было, а часть документов все же утеряна, проверим целостность журнала регистрации (файлы 1Cv8.lgd или каталог 1Cv8.lgf). Если журнал уцелел, откроем его через Конфигуратор -> Администрирование -> Журнал регистрации и отфильтруем события создания и проведения документов за последнюю неделю. Это позволит оперативно восстановить состав документов, суммы, контрагентов и номенклатуру без необходимости вспоминать первичную документацию вручную.

← На главную