Противоядие от ошибочного массового заполнения регистра сведений — или — как всё вернуть обратно, но только для этого регистра….



Бывает так, что ошибка в коде обработки или в данных приводит к некорректному заполнению регистров сведений с независимой записью. В моей практике работы с регистром сведений "Значения дополнительных реквизитов" была ошибка в данных на загрузку. Ошибочные записи заметили, когда данные уже были загружены. Как быть в таком случае? Как вернуть всё обратно?
Если есть резервная копия базы, то можно очень просто вернуть всё на место для этого регистра не трогая остальные данные! Конечно, то что проделано руками пользователей в этом регистре с момента создания резервной копии до момента перезагрузки регистра — потеряется(((, но это неизбежность.

Для сохранения в файл записей регистра необходимо:

  1. Развернуть резервную копию и запустить эту обработку.
  2. Выбрать регистр сведений для выгрузки в файл.
  3. Выбрать файл, куда будут выгружены все записи регистра и нажать [Выполнить]

Для замены всех записей регистра на записи из файла необходимо:

  1. Запустить обработку в «живой» базе. Лучше на всякий случай сделать это монопольно, а ещё лучше сначала на копии, а потом в «живой».
  2. Выбрать регистр сведений для загрузки записей из файла.
  3. Установить переключатель в положение «Загрузить из файла». Если необходимо, то можно загружать в транзакции.
  4. Выбрать файл из которого будут загружаться записи.
  5. Нажать кнопку [Выполнить].

6 Comments

  1. recon

    C виду не плохо, но зачем изобретать велосипед если есть более функциональная обработка «Выгрузказагрузка данных XML» с диска ИТС ?

    Reply
  2. Igor030370

    (1) recon, да, Вы совершенно правы. Чёт я ступил… надо снимать с публикации

    видно когда понял, что заполнил регистр ошибочными данными ум помрачился ) Помню, что сварганил по принципу ЗначениеВФайл()….ЗначениеИзФайла() и быстренько вернул всё обратно, вот велосипед и получился…

    Reply
  3. kapustinag

    Предлагаю оставить, не снимать с публикации.

    Да, «ВыгрузкаЗагрузкаДанныхXML.epf» может очень многое. Но она — опасное оружие в неумелых руках, и может очень многое испортить. А эта обработка сделает только то, что ей сказали сделать. Ничего лишнего.

    Как пример, чтобы не быть голословным:

    — с помощью «ВыгрузкаЗагрузкаДанныхXML.epf» восстанавливался 1 (один) документ из резервной копии.

    — документ был непроведенный, помеченный на удаление. Галка «Выгружать с документом все его движения» была отключена.

    — были сняты галки на всех других типах объектов, и на всех «объектах по ссылкам».

    — полученный xml-файл был проверен визуально в текстовом редакторе. Там действительно был только один объект — этот самый документ. Никаких движений по регистрам, никаких объектов по ссылкам.

    — При загрузке НЕ НАЖИМАЛИСЬ галки «отключить итоги».

    А теперь — результат:

    — В процессе загрузки обработка зачем-то отключила итоги, затем загрузила документ успешно, затем стала включать итоги. И нарвалась на блокировку, так как в базе были работающие пользователи. В конце концов свалилась по ошибке «Превышено время ожидания запроса на блокировку», так и не включив итоги.

    Reply
  4. luns

    (2) в (3) верно говорят.

    помню давно как то, была подобная ситуация.

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

    мало ли…

    Reply
  5. quebracho

    Можно через COM, если база не на Аляске, и не только регистры… По УИД сопоставлять.

    Reply
  6. apostal86

    (3) kapustinag, тогда для Вас обработка по включению итогов для регистров. На инфостарте можно много таких найти

    Reply

Leave a Comment

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