Как создать чистую базу 1С с заполненными справочниками из текущей базы?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Способ 1. Использование универсальной обработки выгрузки и загрузки данных XML

Классический способ переноса справочников в пустую базу — использование универсальной обработки платформы ВыгрузкаЗагрузкаДанныхXML. Этот инструмент предназначен строго для информационных баз с абсолютно идентичной конфигурацией метаданных (одинаковый релиз конфигурации).

Разберем по шагам алгоритм выполнения этой операции:

  1. Развернем новую пустую информационную базу из шаблона конфигурации или файла конфигурации (.cf), выгруженного из рабочей базы. Базы должны быть строго одной версии.
  2. Откроем исходную рабочую базу в режиме «Предприятие» и запустим обработку ВыгрузкаЗагрузкаДанныхXML.
  3. В дереве объектов снимем отметку со всей структуры и выделим только ветку Справочники. При необходимости снимем флажки с тех справочников, переносить которые не требуется.
  4. Обязательно включим в список выгрузки зависимые РегистрыСведений (контактная информация, паспортные данные физических лиц, ФИО физлиц, банковские счета по умолчанию, цены номенклатуры). Если этого не сделать, карточки контрагентов и номенклатуры окажутся пустыми или заполненными лишь частично.
  5. Сформируем XML-файл выгрузки и сохраним его на диске.
  6. Запустим пустую целевую базу, откроем ту же обработку на вкладке «Загрузка» и загрузим созданный файл.

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

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

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

Главные преимущества этого подхода:

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

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

  1. Типовая обработка «Свертка информационной базы». Если конфигурация содержит встроенный механизм свертки, настроим ее выполнение на текущую дату с полным удалением документов прошлого периода.
  2. Групповое изменение реквизитов. Выделим все виды документов, установим программную пометку на удаление, после чего запустим стандартную процедуру Удаление помеченных объектов.
  3. Программное удаление. Для быстрой и полной очистки конкретных журналов без контроля ссылочной целостности воспользуемся непосредственным удалением через код.

Посмотрим на пример программного удаления документов и очистки движений:


Выборка = Документы.РеализацияТоваровУслуг.Выбрать();
Пока Выборка.Следующий() Цикл
    ДокументОбъект = Выборка.ПолучитьОбъект();
    // Очищаем движения в регистрах
    ДокументОбъект.Движения.Записать();
    // Непосредственно удаляем документ из базы
    ДокументОбъект.Удалить();
КонецЦикла;

Способ 3. Создание и отвязка начального образа РИБ

Если в конфигурации предусмотрен план обмена с фильтрацией данных, разберем еще один надежный вариант переноса — создание начального образа распределенной информационной базы (РИБ).

  1. В рабочей базе на базе плана обмена создадим узел для подчиненной базы.
  2. Сформируем начальный образ подчиненного узла.
  3. Откроем полученную базу в режиме «1С:Предприятие».
  4. Отвяжем базу от главного узла, чтобы превратить ее в самостоятельную независимую базу.

Для программного отключения узла выполним в целевой базе следующий код:

ПланыОбмена.УстановитьГлавныйУзел(Неопределено);

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

Особенности и тонкости переноса пользователей

При переносе данных с помощью первого способа (через выгрузку XML) пользователи часто сталкиваются с тем, что после импорта войти под существующими логинами не удается. Выясним причину этой проблемы.

В платформе 1С список пользователей разделен на два уровня:

  1. Пользователи информационной базы (системная таблица платформы ПользователиИнформационнойБазы), где хранятся логин, хеш пароля, роли и способ аутентификации.
  2. Прикладной справочник (обычно Справочник.Пользователи), где хранятся подразделение, контактные данные, настройки пользователя.

Связь между ними осуществляется по уникальному идентификатору (GUID), который записывается в реквизит справочника ИдентификаторПользователяИБ. Простая выгрузка справочника не переносит сами учетные записи платформы.

Чтобы перенести пользователей полноценно, выполним одно из следующих действий:

  1. Используем специализированную внешнюю обработку (например, ВыгрузкаЗагрузкаПользователей.epf), которая выгружает как элементы справочника, так и объекты коллекции ПользователиИнформационнойБазы с сохранением GUID.
  2. В конфигурациях с БСП после переноса справочника запустим сеанс под администратором: система обнаружит расхождения и предложит сопоставить или заново создать системных пользователей платформы для каждого элемента справочника.
  3. Если пользователей немного, быстрее всего перенести только справочник Справочник.Пользователи, а затем в целевой базе в карточке каждого пользователя заново задать логин, пароль и назначить права доступа.
← На главную