вторник, 30 декабря 2008 г.

Восстановление внешних обработок

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

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

Все таки компьютер нужно включить, как бы вы злы на него не были.
Первое, что НЕ нужно ни в коем случае делать - это запускать 1С. Вам нужно убедится любыми доступными средствами в работоспособности своей обработки. Можно использовать плагин или просто посмотреть на содержимое внешней обработки
Если содержимое примерно такое которое изображено на рисунке, это статья однозначно для Вас.

Для того что бы понять, почему нельзя запускать платформу, вкратце расскажу как устроена работа платформы.

Все данные конфигурации или любые другие конструкции, которые определяют логику работы конфигурации обработки, оказываться во временном каталоге пользователя TMP.
Данные(файлы) платформы в каталоге пользователя имеют следующую маску v8_*.tmp
Рассмотрим, что же происходит при запуске внешней обработки на выполнение.
Вся обработка копируется в каталог временных фалов(чтобы не тянуть распакованные данные черт знает откуда). После чего уже распаковывается результатом распаковки будет появление еще как минимум n+m+1 фалов (где:
  • m-количество форм;
  • n-количество макетов).
Почти аналогичные действия выполняет v8Unpack. После выполнения следующего батника.
V8Unpack -unpack %1 %1.und FOR %%1 IN (%1.und\*.data) DO ..\bin\V8Unpack.exe -undeflate %%1 %%1.und

Вот эти файлы и есть наша последняя надежда. При первом запуске платформы все фалы из временного каталог с выше описанной маской удаляются. Если вы все таки успели запустить платформу тогда вам нужно обзавестись программой которая восстанавливает удаленные данные с диска по определенной маске имени файла.

В общем считаем что эти фалы у Вас есть.
  1. Копируйте их в другую папку(отличную от TMP).
  2. Запустите платформу
  3. Сортируйте по возрастанию размера и начиная с самого большого фала:
  • переименовывайте фалы с загадочных имен v8_*.tmp в v8_*.epf
  • пробуйте открыть их с использованием 1С (в 90% случаев вы найдете свою обработку я обычно :) ориентируюсь по размеру предыдущего бекапа).
Если все таки вы попали в эти несчастные 10% вы должны примерно знать что написано в тех модулях которые вы пытаетесь восстановить.
Открываем опять же все эти файлы и ищем наши тексты.
Если вы их нашли и у Вас есть какая-нибудь старая копия своей обработки. Тогда:
  1. Распакуйте обработку (как было написано выше).
  2. Замените необходимые формы, модули;
  3. Запакуйте обработку использую следующий текст батника (FOR %%I IN (%1\*.und_n) DO ..\bin\V8Unpack.exe -deflate %%I %1\%%~nI
    ..\bin\V8Unpack.exe -pack %1.und %1_n.epf)


В общем в любом случае от этих проблем Вас смогут избавить UPS и Backup. А знания о том как и что работает, на разных уровнях абстракции, платформы 1С, помогут сохранить хорошее настроение в работе при любых неприятностях.