Как создать начальный образ РИБ в формате .dt?

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

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

Зачем нужен формат .dt для начального образа?

Рассмотрим основные причины, по которым формат .dt предпочтительнее стандартного .1CD при развертывании подчиненных узлов:

  1. Минимизация размера: Начальный образ, созданный через СоздатьНачальныйОбраз, часто содержит избыточные индексы и кэш. Выгрузка в .dt и последующая загрузка позволяют «схлопнуть» базу, оптимизировав её объем для передачи по каналам связи.
  2. Универсальность развертывания: Файл выгрузки можно легко загрузить как в файловый, так и в клиент-серверный вариант (SQL) информационной базы, не заботясь о различиях в структуре хранения данных на этапе подготовки образа.
  3. Удаленное администрирование: Если у администратора нет прямого доступа к дискам сервера для копирования тяжелых файлов .1CD, использование .dt через консоль управления или скрипты становится единственным рабочим вариантом.

Способ 1. Программное создание образа через встроенный язык

Проанализируем, как реализовать создание образа непосредственно из кода конфигурации. Для этого используется метод ПланыОбмена.СоздатьНачальныйОбраз(). Выясним, как управлять процессом создания через параметры.

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


// Определяем узел, для которого создается образ
УзелОбъекта = ПланыОбмена.РегиональныеОфисы.НайтиПоКоду("ОФ001");

// Формируем строку соединения для новой файловой базы
ПутьКБазе = "File=""C:\Temp\NewNodeDB"";";

// Создаем начальный образ
Попытка
    ПланыОбмена.СоздатьНачальныйОбраз(УзелОбъекта, ПутьКБазе);
    Сообщить("Начальный образ успешно создан в каталоге C:\Temp\NewNodeDB");
Исключение
    Сообщить("Ошибка при создании образа: " + ОписаниеОшибки());
КонецПопытки;

Важный нюанс: если в строке соединения указать параметры SQL-сервера (например, Srvr="ServerName";Ref="BaseName";), система попытается создать базу сразу на сервере. Однако, если прямого доступа к SQL нет, мы используем файловый вариант как промежуточный этап.

Способ 2. Автоматизация выгрузки в .dt через командную строку

Чтобы не выполнять действия вручную, разберем алгоритм автоматизации «в один клик». Мы можем последовательно запустить создание образа и его немедленную выгрузку в формат .dt с помощью пакетного файла (.bat или .cmd).

Рассмотрим последовательность команд для пакетного файла:

  1. Создание файлового образа: Используем ключ /CreateInitialImage.
  2. Выгрузка в .dt: Сразу после создания запускаем конфигуратор новой базы с ключом /DumpIB.
  3. Очистка: Удаляем временный файл .1CD для экономии места.

Пример скрипта для автоматизации:


:: 1. Создание начального образа из центральной базы
"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /S "Server\CentralBase" /N "Admin" /P "Pass" /CreateInitialImage "C:\Exchange\NodeImage.1CD" -NodeCode "001"

:: 2. Выгрузка созданного образа в формат .dt
"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /F "C:\Exchange\NodeImage.1CD" /N "Admin" /P "Pass" /DumpIB "C:\Exchange\NodeImage.dt" /Out "C:\Exchange\log.txt"

:: 3. Удаление временной файловой базы
del "C:\Exchange\NodeImage.1CD" /Q

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

Технические нюансы и ограничения

Разберем подробнее критические моменты, которые могут возникнуть при использовании данного подхода:

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

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

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

Альтернатива: Автономные рабочие места

Если создание образов через .dt и прямая работа с файлами на сервере вызывают сложности из-за настроек безопасности, рассмотрим технологию «Автономных рабочих мест». Это современная надстройка над механизмом РИБ, которая позволяет создавать начальный образ и обмениваться данными через веб-сервисы или протоколы HTTP/FTP. В этом случае получение образа происходит в виде архива непосредственно через интерфейс программы, что снимает вопрос доступа к дисковой подсистеме сервера.

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

← На главную