В практике администрирования и поддержки решений на платформе 1С часто возникает задача разделения единой информационной базы на несколько частей. Обычно это связано с ростом объема данных, замедлением работы системы или необходимостью передать архивную часть учета в другое подразделение. В нашей статье мы подробно разберем, как разделить базу данных объемом около 600 МБ (в формате .dt) на два периода: 2014–2017 гг. и 2017–2019 гг.
Для базы такого небольшого объема сложные схемы с программированием или привлечением дорогостоящих специалистов избыточны. Мы проанализируем три основных метода решения этой задачи, детально разберем пошаговый алгоритм для каждого из них, а также ответим на сложный методологический вопрос о «переходящих» документах и проводках.
Перед тем как приступить к любым манипуляциям с базой данных, необходимо обезопасить себя от потери информации. Выполним следующие подготовительные действия:
Администрирование — Выгрузить информационную базу.... Сохраним полученный файл .dt в надежное место.Теперь рассмотрим методы разделения баз данных.
---
Этот метод является наиболее методологически верным, поскольку он гарантирует сохранность бухгалтерских и управленческих остатков в новой базе на начало нового периода, а также сохраняет неизменной историю в архивной базе.
Мы не можем просто удалить документы прошлых лет (2014–2016 гг.) из этой базы. Если мы это сделаем, то на 1 января 2017 года у нас будут нулевые остатки на банковских счетах, пустые склады и отсутствие взаиморасчетов с контрагентами. Нам необходимо выполнить процедуру свертки.
Разберем процесс свертки по шагам:
Администрирование — Обслуживание — Свертка информационной базы (в зависимости от конфигурации путь может быть: НСИ и администрирование — Сервис — Свертка информационной базы).Ввод остатков по всем разделам учета.Администрирование — Удаление помеченных объектов. Выберем автоматический режим и удалим все старые документы.Конфигуратор, перейдем в Администрирование — Тестирование и исправление, установим флажок Сжатие таблиц информационной базы и запустим процесс. Это физически освободит место на диске и ускорит работу новой базы.В архивной базе остатки на конец периода рассчитывать не нужно — она должна остаться простым историческим хранилищем. Наша задача здесь — просто удалить все документы, которые были созданы после 31.12.2017.
Выполним это по шагам:
Групповое изменение реквизитов (раздел Администрирование — Обслуживание — Корректировка данных).Дата — Больше или равно — 01.01.2018 00:00:00.Дополнительные параметры и установим флажок Показывать служебные реквизиты.ПометкаУдаления и установим его в значение Да. Нажмем кнопку Изменить реквизиты. Все документы за период 2018–2019 гг. получат пометку на удаление.
Выборка = Документы.РеализацияТоваровУслуг.Выбрать(Дата("20180101000000"), Дата("20191231235959"));
Пока Выборка.Следующий() Цикл
ОбъектДок = Выборка.ПолучитьОбъект();
Если Не ОбъектДок.ПометкаУдаления Тогда
ОбъектДок.УстановитьПометкуУдаления(Истина);
КонецЕсли;
КонецЦикла;
Удаление помеченных объектов и удалим ненужные документы за 2018–2019 гг.Тестирования и исправления со сжатием таблиц в Конфигураторе.---
Если конфигурации абсолютно идентичны по структуре метаданных (то есть обе базы обновлены до одного релиза), мы можем применить встроенный механизм обмена XML-данными. Нам не нужно писать сложные правила в «Конвертации данных».
Рассмотрим порядок действий:
ВыгрузкаЗагрузкаДанныхXML.epf для вашей версии платформы.ВыгрузкаЗагрузкаДанныхXML.epf через Файл — Открыть.Выгрузка выберем период (например, с 01.01.2014 по 31.12.2017). Отметим галочками документы и справочники, которые требуется перенести.Выгружать объекты по ссылкам. Это предотвратит появление «битых ссылок» (объектов вида <Объект не найден>), так как программа автоматически подтянет все справочники и связанные документы, на которые ссылаются выгружаемые данные.Загрузка выберем полученный файл. Все данные за указанный период перенесутся без потери связей.---
В ходе обсуждения участники упоминали создание Распределенной информационной базы (РИБ) с последующей отвязкой узлов. Проанализируем этот метод подробнее.
В типовых конфигурациях 1С (Бухгалтерия, ERP, Управление торговлей) стандартный механизм создания РИБ поддерживает фильтрацию данных только в разрезе Организаций или Подразделений/Складов. Фильтрация «из коробки» по периодам (годам) в стандартных планах обмена не предусмотрена.
Для реализации этого метода системному администратору или программисту пришлось бы заходить в Конфигуратор, изменять правила регистрации объектов в плане обмена и писать код для фильтрации по дате документа. Учитывая небольшой размер базы (600 МБ), данный метод является избыточно сложным, трудоемким и не рекомендуется к использованию.
---
Проанализируем важный вопрос: «А если дата документа попадает в первый период (2014–2017), а его движение во второй (2017–2019), в какую базу его закидывать?»
В платформе 1С документ и его движения (проводки по бухгалтерскому учету или записи в регистрах накопления) всегда жестко связаны одной и той же датой. Ситуация, когда сам документ проведен 31 декабря 2016 года, а его проводки записаны 1 января 2017 года, технически невозможна.
Однако часто возникает логическая связь документов (так называемые «переходящие цепочки»). Например, накладная на отгрузку товаров выписана в декабре 2016 года, а оплата по ней пришла в январе 2017 года. Как с этим работать при разделении баз?
Выгружать объекты по ссылкам, если вы выгружаете оплату за 2017 год, которая ссылается на неоплаченный договор или накладную за 2016 год, эти связанные объекты автоматически перенесутся в новую базу. Ссылочная целостность базы не пострадает.---
Выяснив все технические детали, мы рекомендуем использовать следующий алгоритм действий:
Этот подход убережет вас от ошибок ссылочной целостности, сэкономит время и не потребует написания сложного программного кода.