Создание начального образа распределенной информационной базы (РИБ) — процедура стандартная, но крайне капризная, особенно когда речь идет о файловом варианте работы 1С:Предприятие. Если объем вашей базы превышает 1–2 ГБ, штатный механизм часто дает сбой: процесс может длиться часами, а в финале диалоговое окно выбора пути сохранения файла просто не появляется или «зависает» без видимых причин. Разберем, почему это происходит и как гарантированно создать периферийную базу, даже если стандартный метод отказывается работать.
Проанализируем техническую сторону процесса. Когда мы запускаем создание начального образа, система выполняет несколько ресурсоемких операций:
%TEMP%). При объеме основной базы в 2 ГБ временный файл может раздуться до 4–6 ГБ из-за перестроения индексов и служебных таблиц.C: недостаточно места (даже если вы сохраняете образ на другой диск), процесс прервется без ошибки. Также антивирусы часто блокируют запись гигантских файлов в системные папки, считая это подозрительной активностью.Прежде чем прибегать к радикальным мерам, попробуем «облегчить» задачу штатному механизму. Рассмотрим шаги по подготовке:
Во-первых, выполним Тестирование и исправление (ТИИ). Нам обязательно нужны пункты Реиндексация таблиц и Сжатие таблиц информационной базы. Это удалит «мусор» из файла 1Cv8.1CD и уменьшит его физический размер.
Во-вторых, очистим папку Temp на локальном компьютере и убедимся, что на системном диске свободно не менее трех объемов вашей базы. Отключим на время процедуры антивирусное сканирование в реальном времени.
Если штатное создание образа через меню «Планы обмена» так и не завершилось успехом, воспользуемся проверенным «хакерским» методом. Суть его заключается в превращении полной копии центральной базы в подчиненную. Разберем этот алгоритм по шагам.
Шаг 1. Создание физической копии. Просто скопируйте файл 1Cv8.1CD центральной базы в новую папку, где будет располагаться ваша периферийная база. Это избавляет систему от необходимости долгой выгрузки данных через временные файлы.
Шаг 2. Очистка признака главного узла. Если вы просто откроете эту копию, она будет считать себя центральной. Чтобы превратить её в «чистую» заготовку, нам нужно убедиться, что в ней не установлена связь с главным узлом. В некоторых случаях (если база уже была узлом) связь нужно разорвать. Для этого в новой базе выполним код:
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
Шаг 3. Программная установка связи. Теперь самое важное — нужно указать этой базе, кто является её «родителем». Выясним код или ссылку центрального узла в плане обмена. Выполним следующий код в режиме «Предприятие» (через консоль кода или созданную обработку):
// Получаем ссылку на узел, который является центральным в нашей схеме РИБ
УзелЦентр = ПланыОбмена.Почта.НайтиПоКоду("ЦБ");
// Устанавливаем этот узел как главный для текущей базы
ПланыОбмена.УстановитьГлавныйУзел(УзелЦентр);
Сообщить("База успешно преобразована в подчиненный узел РИБ");
После выполнения этой команды база мгновенно меняет свой статус. В заголовке окна появится префикс подчиненного узла.
Поскольку мы сделали полную копию, в периферийной базе оказались данные, которые ей не положены (например, документы других магазинов). Проанализируем, как привести базу в порядок:
Для очистки регистрации используем следующий подход:
ПланыОбмена.УдалитьРегистрациюИзменений(УзелЦентр);
При использовании метода копирования файла 1CD мы получаем идеальное совпадение всех внутренних идентификаторов (GUID). Это огромное преимущество перед методом выгрузки/загрузки через XML. Выясним, почему это важно: если в базе есть предопределенные элементы (например, конкретные статьи затрат или типы цен, созданные в конфигураторе), при несовпадении GUID обмен будет постоянно выдавать ошибки коллизий или создавать дубли, которые невозможно удалить штатными средствами.
Рассмотрим еще один способ, который помогает избежать проблем с графическим интерфейсом Windows. Мы можем запустить создание образа через конфигуратор в пакетном режиме. Это более стабильно для баз объемом 2 ГБ и выше.
Пример команды для запуска из командной строки:
1cv8.exe DESIGNER /F "C:\MyBase\CentralDB" /CreateDistributeInfoBase "КодПериферийногоУзла" "C:\MyBase\NewPeryph.1CD"
Этот метод работает «молча» и часто завершается успешно там, где диалоговые окна режима «Предприятие» терпят неудачу.
Если штатный механизм создания начального образа в 1С:Предприятие 8 не справляется с объемом данных:
C: и папку %TEMP%.ПланыОбмена.УстановитьГлавныйУзел() — это самый быстрый и надежный способ для баз любого объема.