В практике разработки на платформе 1С:Предприятие 8.3 часто возникает задача автоматизации резервного копирования. Однако начинающие специалисты нередко сталкиваются с ситуацией, когда код, написанный самостоятельно или с помощью нейросетей, не выполняет ожидаемых действий. Рассмотрим типичную проблему: регламентное задание запущено, ошибок в журнале регистрации нет (или они неинформативны), но файл .dt в целевой директории не появляется. Разберем по шагам, почему так происходит и как реализовать задачу правильно.
Проанализируем ситуацию, когда код создается на основе предположений, а не документации. В приведенном примере из обсуждения на форуме код пытается вызвать метод ЖурналРегистрации.ВыгрузитьИнформационнуюБазу(). Важно понимать: во встроенном языке 1С не существует метода для прямой выгрузки базы в формат .dt. Платформа 1С разделяет среду исполнения (предприятие) и среду администрирования (конфигуратор).
Разберем основные причины неработоспособности такого подхода:
ДиалогВыбораФайла или ОписаниеОповещения внутри регламентного задания недопустимо. Регламентные задания выполняются на сервере в неинтерактивном режиме, где нет графического интерфейса и пользователя, который мог бы нажать кнопку выбора папки.usr1cv8). У этой учетной записи часто нет прав на запись в произвольные папки на диске или сетевые ресурсы.Выясним, как на самом деле происходит выгрузка в .dt. Эта операция выполняется только через запуск конфигуратора. Чтобы автоматизировать этот процесс изнутри 1С, мы должны использовать функцию ЗапуститьПриложение(), передав ей путь к исполняемому файлу платформы и специальные ключи.
Рассмотрим пример кода, который можно использовать в серверном модуле для запуска процесса выгрузки:
Процедура ВыполнитьВыгрузкуЧерезКонфигуратор(ПутьКФайлуБэкапа) Экспорт
ПутьКПрограмме = "C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe";
ПараметрыЗапуска = "DESIGNER /S""ServerName\BaseName"" /N""Admin"" /P""Password"" /DumpIB """ + ПутьКФайлуБэкапа + """ /Out ""C:\Logs\backup.log""";
// Запуск приложения в невидимом режиме
ЗапуститьПриложение(ПутьКПрограмме + " " + ПараметрыЗапуска, , Истина);
КонецПроцедуры
Проанализируем используемые ключи командной строки:
DESIGNER — запуск в режиме конфигуратора./S или /F — путь к серверной или файловой базе соответственно./N и /P — имя пользователя и пароль с правами администратора./DumpIB — команда на создание файла выгрузки./Out — путь к текстовому файлу, куда запишется результат выполнения (очень важно для отладки).Важное ограничение: Для выполнения выгрузки в формат .dt база должна находиться в монопольном режиме. Если в системе есть активные пользователи, запуск конфигуратора с ключом /DumpIB завершится ошибкой. В регламентном задании необходимо предварительно программно завершить все сеансы.
Если вы работаете в современной типовой конфигурации (УТ 11, БП 3.0, ERP), в ней уже реализованы механизмы резервного копирования. Посмотрим, как это устроено в подсистеме «Администрирование». Вместо написания собственного кода, мы можем воспользоваться встроенными обработками.
Рассмотрим преимущества использования БСП:
Проанализируем ситуацию с точки зрения надежности данных. Опытные администраторы 1С крайне не рекомендуют использовать .dt в качестве единственного средства резервного копирования в рабочих (production) средах. И вот почему:
.dt — это транспортный формат. При его создании платформа считывает данные из таблиц СУБД. Если в базе есть физические повреждения таблиц, .dt может создаться с ошибками или вовсе не загрузиться обратно..dt, каждый раз выгружается вся база целиком.Разберем, как профессионально организовать сохранение данных в зависимости от типа вашей информационной базы:
Для файловых баз: Лучшим решением будет простое копирование файла 1Cv8.1CD. Это можно делать с помощью планировщика задач Windows или специализированного ПО, такого как Cobian Backup. Перед копированием обязательно нужно убедиться, что все пользователи вышли из базы.
Для клиент-серверных баз: Единственно верный способ — использование средств СУБД (SQL Server Management Studio или pg_dump для PostgreSQL). Настройте Maintenance Plan в SQL-сервере. Это позволит делать бэкапы «на лету», без отключения пользователей, и обеспечит максимальную скорость восстановления.
Подведем итог. Если вам все же необходимо реализовать выгрузку .dt именно через регламентное задание 1С, убедитесь, что:
ЗапуститьПриложение.МенеджерКластераИнформационнойБазы./Out и анализируете его на предмет ошибок.