вторник, 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С, помогут сохранить хорошее настроение в работе при любых неприятностях.

14 комментариев:

  1. ох какой оргазм я только что испытал!!! завтра заказчику везти обработку а свет моргнул и работа за неделю едва не ушла коту под хвост. Спасибо большое.

    ОтветитьУдалить
  2. А почему бы просто не делать резервные копии? Причем регулярно, а?
    (Я в курсе, что это так скучно, но зато безопасно!)

    ОтветитьУдалить
  3. Не каждый же час бэкапить. А за час можно много хорошего наваять такого, что потом уже не восстановить ((

    ОтветитьУдалить
  4. так и быть отпишусь тут... существует такая программа
    Ontrack EasyRecovery Professional 6.21.03 Portable
    в общем там есть режим восстановление данных advanced recovery ТАК вот берете выбираете файл вашей обработки, и просто запускаете восстановление.. и ВУА-ля ваша обработка снова ПЫШИТ здоровьем и открывается...

    ОтветитьУдалить
    Ответы
    1. Это то, что спасло меня сегодня. Большое спасибо. К сожалению, успела открыть файл конфигуратором, темпы затерлись. Сложная обработка, неделя работы, к субботе должна быть отлажена безупречно.

      Удалить
    2. работал весь день с обработкой, вечером создал резервную копию (как обычно), затем еще делал доработки. Некоторое время спустя, после кофе-брейка, обработка стала открываться с той же ошибкой: Неверный формат хранилища данных.
      Советы автора не смогли помочь. Два дня тяжелого труда...... я пребывал в глубоком отчаянии..... пока не пришли они!.. - Ontrack EasyRecovery Professional 6.21.03 Portable
      выбрал advanced recovery, затем диск где у меня обработки хранятся, затем выбрал страдальческую обработку с резервной копией, Далее, и вуаля! Обработка и архив восстановились полностью!
      Теперь я снова улыбаюсь и настроение на ура ))))) чего и всем желаю

      Удалить
    3. Ты просто благодетель. Спасибо)

      Удалить
  5. Супер!!! Ваша статья меня спасла. Огромное спасибо

    ОтветитьУдалить
  6. Есть еще одна вещь- Dropbox. Только сегодня восстановил копию автоматически сохраненную за 1мин до сбоя...

    ОтветитьУдалить
  7. Если бы разработчики нормальную запись и работу с внешними файлами сделали, то подобных проблем не было бы. У меня свет 3 дня мигает. В первый раз работа двух дней пропала. Девелоперы ху....

    ОтветитьУдалить
  8. Я тоже востановил с помощью Ontrack EasyRecovery Professional 6.21.03 Portable Функция advanced recovery

    ОтветитьУдалить
  9. Нихрена Ontrack EasyRecovery не сработал. Все равно тоже самое - "Ошибка при выполнении файловой операции"
    10 часов работы коту под хвост... Пойду, убьюсь об стенку.

    ОтветитьУдалить
  10. Спасибо за отличную статью, удалось восстановить через переименование временного файла!! Причем уже после запуска платформы, по странному стечению обстоятельств платформа наделала еще несколько tmp в разных подкаталогах TEMP, один из файлов оказался живой!

    ОтветитьУдалить
  11. Спасибо за статью и за коменты особенно - восстановил Ontrack EasyRecovery

    ОтветитьУдалить