Восстановление части данных из архива в рабочую базу данных






Когда случилась неприятная ситуация…
Ситуация первая. Ввели документ прошлым периодом. Слетела граница последовательности. Восстановили и обнаружили, что поплыли отчетные данные прошлых периодов.
Ситуация вторая. Кто-то нажал "что-то" и были удалены элементы справочников прошлого периода без контроля целостности. Теперь в документах и отчетах "битые" ссылки.
Эта статья о том, что можно сделать в подобной ситуации. Не волнуйтесь. ВСЕ БУДЕТ ХОРОШО.
Только качественный контент

Есть и другие ситуации, в которых часть данных изменена «случайно», а часть изменена в процессе работы пользователей. И нужно восстановить именно «случайно» измененную часть данных, а остальное оставить как есть.

Исходим из того, что у нас есть архив, из которого данные можно перенести. Соответственно первое, что нужно сделать — это найти и развернуть (восстановить) архив. А дальше есть варианты…

Вариант 1. Воспользоваться обработкой ВыгрузкаЗагрузкаДанныхXML81.epf с диска ИТС. Выбрать объекты, выгрузить и загрузить.«Охрана труда» для 1С:Предприятия 8.2

Резюме 1. В данном случае выбор объектов для переноса выполняется практически вручную. А перенес движений по конкретному виду документа за период возможно, но весьма, весьма трудоемко.


Вариант 2.
Настроить правила обмена с помощью конфигурации «Конвертация данных». Т.к. конфигурации рабочей базы и архивной скорее всего идентичные, то особых проблем с

настройкой правил обмена быть не должно. При загрузке можно прописать в обработчиках дополнительные условия, по которым принимать решение — загружать переданные из архивной базы данные или нет. Подробнее о конфигурации «Конвертация данных» можно почитать на диске ИТС или приобрести книгу http://v8.1c.ru/metod/books/book.jsp?id=121  

Резюме 2. Запрограммировать можно все. Поэтому в данном случае можно добиться очень высокого уровня автоматизации. Но есть небольшой недостаток: нужно уметь программировать…


Вариант 3.
Добавить план обмена «ВосстановлениеДанных» без РИБ с выключенной авторегистрацией для всех объектов в рабочей базе и в архиве. В модуле плана обмена прописать:

Функция ЗагрузитьИзмененияДанныхДляУзла(УзелОбмена, КоличествоЭлементовВТранзакцииНаЗагрузкуДанных = 0, ЧтениеXML) Экспорт
    Возврат
ПроцедурыОбменаДанными.ЗагрузитьИзмененияДляУзлаИзФайлаОбмена(УзелОбмена, КоличествоЭлементовВТранзакцииНаЗагрузкуДанных, ЧтениеXML);
КонецФункции

Функция ВыгрузитьИзмененияДанныхДляУзла(УзелОбмена, КоличествоЭлементовВТранзакцииНаВыгрузкуДанных, ЗаписьXML) Экспорт
    Возврат
ПроцедурыОбменаДанными.ВыгрузитьИзмененияДляУзлаВФайлОбмена(УзелОбмена, КоличествоЭлементовВТранзакцииНаВыгрузкуДанных, ЗаписьXML);
КонецФункции

Добавить узел приемник в архиве и узел источник в рабочей базе для плана обмена «ВосстановлениеДанных». С помощью обработки РегистрацияИзмененийДляОбмена зарегистрировать нужные элементы справочников, документов и регистров. Добавить настройки обмена данными в обоих базах. Выгрузить данные из архива. Загрузить данные в рабочую базу.

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

В прилагающихся файлах есть конфигурация с планом обмена ВосстановлениеДанных. При объединении конфигураций необходимо оставить галочку только на плане обмена ВосстановлениеДанных, а после объединения конфигураций в составе плана обмена ВосстановлениеДанных указать все объекты информационной базы с выключенной авторегистрацией. Для этого выбрать в меню Действия — Включить все, выбрать в меню Действия — Запретить авторегистрацию для всех.

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

Регистрация документов для обменов

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

 

16.12.2009 /Константинов Алексей Викторович/

16 Comments

  1. PowerBoy

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

    http://infostart.ru/public/20683/

    Reply
  2. CheBurator

    «Ситуация вторая. Кто-то нажал «что-то» и были удалены элементы справочников прошлого периода без контроля целостности.» — это композитора надо убивать…

    Reply
  3. alexk-is

    (2) Чаще всего это пользователь с полными правами, я бы сказал даже с абсолютными. Например, главный бухгалтер. Т.к. за организацию процесса учета отвечает он (она), то в его ведении любые манипуляции с базой данных, вплоть до удаления базы. Собственно и ответственность за эти действия тоже. У всех бывают «нечаянные» ошибки. А людям нужно давать второй шанс. Особенно тем, кто оплачивает твои счета…

    Зачем далеко ходить, вот http://infostart.ru/forum/forum14/topic29834/

    Reply
  4. CheBurator

    (3) бред. причем полнейший. свидетельствующий о глобальных проблемах. Бух может обладать полными правами (но не должен). Бух при необходимости может — если это нужно — удалить базу. Но выполнять действия, которые приводят к «недостоверным» данным, приводящим к проблемам С РАБОТОЙ В БАЗЕ — это уже не «любые манипуляции»… Пользователь с такими правами должен понимать сущность своих действий и прочие последствия своих действий… А за «нечаянные» ошибки — ну так такая ошибка один раз может быть… и, лично я, не верю в «нечаянные ошибки» — все нечаянные ошибки с которыми я сталкивался — оказывались либо халатным отношением к выполняемым обязанностям, либо неквалифицированностью пользователей, допущенных к операциям, к которым в силу их НЕвалификации даже подходить нельзя…

    …конечно же все вышесказанное — глубокое имхо…

    Reply
  5. CheBurator

    (4) возможно, к (4) надо добавить соображение о том, что такие нечаянные ошибки вызваны недостаточностью финансирования штатных единиц в фирме… очень часто владельцы бизнеса относятся по типу «ну как-нибудь.. так…» — вот и делают… как-нибудь..так… ненчаянно.. ну я попробовала, а оно.. вот….

    Reply
  6. alexk-is

    Может и так. Но когда проблема возникнет, то кроме вопроса «Кто виноват» встанет вопрос «Что делать». Хотелось бы быть во всеоружии, а не мучатся головной болью.

    Reply
  7. KapasMordorov
    Резюме 1. В данном случае выбор объектов для переноса выполняется практически вручную. А перенес движений по конкретному виду документа за период возможно, но весьма, весьма трудоемко. По нескольку раз придется заполнять списки регистраторов для регистров.

    Флажок «Выгружать с документом все его движения».

    Для выбора объектов для переноса есть возможность применить запрос.

    Замечательный инструмент.

    Хотя вариант 3 мне нравится больше. В нем перенос можно сделать точнее, но при этом писать код для регистрации.

    Reply
  8. arteast

    Я немного доработал Ваше творение (Регистрация документов для обмена) под себя. Если пригодится Вам или кому ещё можно взять отсюда

    Reply
  9. Istur

    (0) Ты не мог бы добавить свою обработку также в раздел «Каталог → УПРАВЛЕНИЕ ДАННЫМИ, ОБРАБОТКА → Обмен данными»?

    Reply
  10. Istur

    (8) Добавь пожалуйста свою разработку с того сайта на infostart

    Reply
  11. wjickey

    (2) CheBurator, целиком поддерживаю. Нельзя давать бухгалтерам прав больше, чем положено. Не все бухгалтера при приеме на работу проходят проверку проф-пригодности и в отличие от водителей никто не предоставляет справки из ПНД.

    Reply
  12. wjickey

    Я сторонник универсальности и противник «вскрытия пациента» без надобности. Гораздо более гуманно использовать в совокупности «Вариант 1» и «Вариант 2». Работаю над автоматизацией процесса отбора ссылок для переноса. Как буду готов — выложу.

    Reply
  13. NovSL

    Однако все так просто. Честно завидую людям, которые так просто решили проблему, до которой сам не додумался. Огромное спасибо за идею. Сегодня же реализую

    Reply
  14. fomix

    (8) arteast, При попытке скачать пишет: Произошла ошибка: файл не найден!

    Reply
  15. arteast

    Хм..может удалили уже за столько то времени, скажите Вашу почту — я вышлю на неё.

    Reply
  16. EugenLiquor

    Довольно таки хороший способ, автору спасибо за него, но я предпочитаю пользоватся другой обработкой, она гораздо проще в использовании и процессе восстановления!

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *