Почему при выгрузке начального образа РИБ создается файл .lnk и как это исправить?

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

При создании начального образа подчиненного узла распределенной информационной базы (РИБ) администраторы и разработчики 1С иногда сталкиваются со странным поведением мастера выгрузки. Вместо привычной файловой базы данных 1Cv8.1CD платформа создает файл ярлыка «1С предприятие.lnk» объемом несколько сотен мегабайт и служебный файл «1Cv8.1CD.cfl» нулевого размера. Выясним причину этой проблемы и рассмотрим способы ее устранения.

Причины возникновения проблемы

Проанализируем, почему платформа 1С:Предприятие ведет себя подобным образом при выгрузке файловой базы данных:

  1. Превышение допустимой длины пути (ограничение MAX_PATH): В операционных системах семейств Windows стандартное ограничение на длину пути к файлу составляет 260 символов. Если путь к целевой папке содержит много вложенных каталогов или длинные наименования папок, платформа 1С не может корректно сформировать итоговое имя файла информационной базы и сбивается на запись бинарных данных напрямую в имя выбранного ярлыка или файла.
  2. Особенности работы диалога выбора файла: Когда при выборе пути выгрузки пользователь случайно выделяет файл ярлыка или нажимает на него в проводнике, диалоговое окно передает платформе путь к объекту .lnk. В результате 1С записывает поток данных базы данных прямо внутрь этого ярлыка.
  3. Права доступа и временные папки: Перед окончательной записью в целевой каталог платформа формирует образ во временной папке пользователя или службы 1С. При использовании UNC-путей (вида \\Server\Share) или недостатке прав у фонового процесса сервера 1С выгрузка может завершаться со сбоем.

Файл с расширением .cfl нулевого размера является лишь временным служебным файлом блокировки совместного доступа. Наличие в нем 0 байт — нормальное явление, так как сами данные учета в него не записываются.

Решение 1: Сокращение вложенности папок и пути выгрузки

Самый простой и эффективный способ исправить ошибку — выгрузить начальный образ в каталог с коротким путем. Рассмотрим пошагово, как это сделать:

  1. Создадим в корне диска пустую папку с простым именем, например, C:\RIB_Base\ или D:\Exchange\Node1\.
  2. Запустим мастер создания начального образа РИБ заново.
  3. В поле выбора каталога укажем подготовленную папку с коротким путем. Убедимся, что внутри каталога не выделены никакие файлы.
  4. Запустим процесс выгрузки. После завершения в папке появится корректный файл базы данных 1Cv8.1CD.

Решение 2: Восстановление базы из сформированного .lnk файла

Поскольку файл 1С предприятие.lnk имеет большой объем (например, 400 МБ и более), внутри него уже содержится сформированная бинарная структура базы данных 1С. Выясним, как восстановить рабочий узел без повторной длительной выгрузки:

  1. Создадим новую пустую папку на диске.
  2. Переместим файл 1С предприятие.lnk в созданную папку.
  3. Переименуем файл 1С предприятие.lnk, изменив его имя и расширение на 1Cv8.1CD.
  4. Удалим исходный нулевой файл 1Cv8.1CD.cfl (платформа создаст новый файл блокировки автоматически при запуске).
  5. Добавим полученный каталог в список информационных баз 1С:Предприятия и запустим его.

Решение 3: Альтернативные методы создания узла РИБ

Для крупных информационных баз выгрузка через интерактивный мастер может занимать много времени или завершаться по таймауту. Разберем альтернативные подходы к разворачиванию подчиненной базы.

Вариант А. Программное создание образа

Мы можем программно сформировать начальный образ с помощью встроенного языка 1С, избегая интерактивных диалоговых окон Windows. Для этого используется метод ПланыОбмена.СоздатьНачальныйОбраз():


УзелРИБ = ПланыОбмена.Полный.НайтиПоКоду("Узел01");
СтрокаПодключения = "File=""C:\RIB_Base"";";

ПланыОбмена.СоздатьНачальныйОбраз(УзелРИБ, СтрокаПодключения);

Вариант Б. Создание базы путем клонирования

Рассмотрим порядок действий при полном копировании центральной базы:

  1. Делаем полную копию центральной базы данных (через файл .dt, копирование 1Cv8.1CD или средствами СУБД).
  2. Разворачиваем копию как отдельную информационную базу.
  3. Запускаем базу-копию и отвязываем ее от главного узла. Для этого можно использовать метод ПланыОбмена.УстановитьГлавныйУзел():

// Отключаем привязку к главному узлу
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);

// Назначаем текущий узел и устанавливаем связь с центром
УзелЦентр = ПланыОбмена.Полный.НайтиПоКоду("ЦБ");
ПланыОбмена.УстановитьГлавныйУзел(УзелЦентр);

Также отвязать базу от главного узла можно через запуск Конфигуратора с ключом командной строки /ResetMasterNode.

← На главную