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






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

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

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

Вариант 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 не будет опубликован. Обязательные поля помечены *