Перемещение файлов в системе 1С:Предприятие — задача, с которой сталкиваются и бухгалтеры, и программисты, и администраторы. В зависимости от контекста под "перемещением" могут понимать разные операции: перенос файлов базы данных между серверами, сохранение вложений документов в другую директорию, экспорт/импорт внешних обработок или даже миграцию данных между информационными базами. В этой статье мы разберём все актуальные способы перемещения файлов в 1С, включая ручные методы через интерфейс и автоматизированные сценарии с использованием встроенного языка.
Особенность работы с файлами в 1С заключается в том, что система оперирует не только физическими файлами на диске (например, .dt, .epf, .erf), но и виртуальными объектами — вложениями документов, внешними обработками или хранилищами конфигураций. Поэтому перед выбором метода важно чётко определить, какой именно тип файла требуется переместить и с какой целью. Например, перенос файловой базы на другой сервер технически отличается от сохранения вложения из документа "Счёт-фактура" в сетевую папку.
Статья будет полезна:
- 🔧 Администраторам 1С, которые переносят базы между серверами или настраивают резервное копирование.
- 💻 Программистам 1С, пишущим обработки для автоматического экспорта/импорта файлов.
- 📊 Пользователям, которым нужно сохранить вложения из документов или перенести внешние отчёты.
- 🔄 Интеграторам, обменивающимся файлами между 1С и другими системами (например, Excel, Word, CRM).
1. Перемещение файлов базы данных (физические файлы .1CD, .DT)
Если речь идёт о переносе самой информационной базы (например, с локального компьютера на сервер или в облако), то работа ведётся с физическими файлами базы. В зависимости от формата хранения это могут быть:
- 📁
.1CD— файл базы для 1С:Предприятие 8.3 (файловый вариант). - 🗃️
.DT— файл данных для старых версий (до 8.2). - 🔄 Папка с набором файлов (например, для SQL-варианта или постановочной базы).
Основные сценарии:
- Ручной перенос — копирование файлов через Проводник Windows или
robocopy. - Автоматизированный перенос — через скрипты или задачи Планировщика Windows.
- Перенос на SQL-сервер — миграция с файлового варианта на клиент-серверный.
⚠️ Внимание: При ручном копировании файлов базы .1CD или .DT обязательно останавливайте службу 1С:Предприятия (через ОС → Службы или команду net stop "1C:Enterprise 8.3 Server Agent"). В противном случае файл может быть заблокирован, а база — повреждена.
Остановить службу 1С:Предприятие|Создать резервную копию текущей базы|Проверить свободное место на целевом диске|Скопировать файлы (не перемещать!)|Проверить права доступа на целевом сервере|Запустить службу 1С и протестировать базу-->
| Способ переноса | Когда использовать | Плюсы | Минусы |
|---|---|---|---|
| Ручное копирование через Проводник | Маленькие базы (до 10 ГБ), разовые операции | Простота, не требует дополнительных инструментов | Риск ошибок, нет контроля целостности |
robocopy (командная строка) |
Большие базы (от 10 ГБ), регулярные переносы | Поддерживает многопоточность, контроль ошибок | Требует знания командной строки |
| Конфигуратор 1С (выгрузка/загрузка) | Перенос между разными версиями 1С | Сохраняет структуру данных, проверяет совместимость | Долго для больших баз |
| Скрипты на PowerShell/Python | Автоматизация регулярных переносов | Гибкость, логирование, уведомления | Требует навыков программирования |
2. Перемещение вложений из документов 1С
Вложения в документах (например, сканы договоров, акты, спецификации) хранятся в базе в виде двоичных данных. Их можно сохранить на диск, перенести в другой документ или экспортировать в сетевую папку. Рассмотрим все варианты.
Самый простой способ — ручное сохранение через интерфейс:
- Откройте документ с вложением (например,
Договор контрагента). - Найдите поле
ФайлыилиВложения(зависит от конфигурации). - Кликните правой кнопкой по файлу →
Сохранить как.... - Выберите папку и подтвердите сохранение.
Для массового экспорта вложений (например, всех сканов за месяц) потребуется внешняя обработка или скрипт на встроенном языке. Пример кода для выгрузки вложений из документов ПоступлениеТоваров:
Процедура ВыгрузитьВложения()
КаталогВыгрузки = "C:\Export\Вложения\";
Если НЕ КаталогСуществует(КаталогВыгрузки) Тогда
СоздатьКаталог(КаталогВыгрузки);
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПоступлениеТоваровСсылка КАК Ссылка,
| ПоступлениеТоваров.Файлы КАК Файлы
|ИЗ
| Документ.ПоступлениеТоваров КАК ПоступлениеТоваров";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Для Каждого Файл Из Выборка.Файлы Цикл
ИмяФайла = КаталогВыгрузки + Выборка.Ссылка.Номер + "_" + Файл.Имя;
Файл.Записать(ИмяФайла);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
⚠️ Внимание: При работе с вложениями через код учитывайте ограничения прав доступа. Если у пользователя нет прав на чтение документа, он не сможет экспортировать его вложения, даже если скрипт выполняется в Конфигураторе.
Если вложения хранятся в базе как ссылки (а не двоичные данные), их можно перенести простым копированием файлов по путям, указанным в свойстве ПолноеИмяФайла объекта ХранилищеДвоичныхДанных.
3. Перемещение внешних обработок и отчётов (.epf, .erf)
Внешние обработки (.epf) и отчёты (.erf) — это файлы, которые подключаются к 1С для расширения функционала. Их перемещение обычно связано с:
- 🔄 Переносом между базами (например, с тестовой на рабочую).
- 📂 Резервным копированием перед обновлением конфигурации.
- 🔧 Обменом между пользователями или отделами.
Способы перемещения:
- Через интерфейс 1С:
- Откройте
Файл → Открыть.... - Выберите внешнюю обработку.
- Нажмите
Сохранить как...и укажите новую папку.
- Откройте
- Через Конфигуратор:
- Перейдите в
Конфигуратор → Файл → Открыть.... - Выберите обработку, кликните правой кнопкой →
Сохранить во внешний файл.
- Перейдите в
- Программно: Используйте метод
ЗаписатьВнешнююОбработку()илиЗаписатьВнешнийОтчёт().
Пример кода для сохранения всех подключённых обработок в папку:
Процедура СохранитьВсеОбработки()
Каталог = "C:\Export\Обработки\";
Если НЕ КаталогСуществует(Каталог) Тогда
СоздатьКаталог(Каталог);
КонецЕсли;
Обработки = ВнешниеОбработки.ПолучитьСписок();
Для Каждого Обработка Из Обработки Цикл
Путь = Каталог + Обработка.Имя + ".epf";
Обработка.Записать(Путь);
КонецЦикла;
КонецПроцедуры
Что делать, если обработка не подключается после переноса?
Если после перемещения внешняя обработка не открывается или выдаёт ошибку "Не является обработкой 1С", проверьте:
1. Версию платформы — обработка может быть написана для другой версии 1С (например, 8.3.20 vs 8.3.22).
2. Целостность файла — попробуйте открыть его в блокноте: если видны символы вместо двоичного кода, файл повреждён.
3. Права доступа — у пользователя должны быть права на подключение внешних обработок (настраивается в ролях).
4. Конфигурацию — некоторые обработки привязаны к конкретным объектам метаданных, которых может не быть в новой базе.
4. Перемещение файлов через обмен данными (XML, JSON, Excel)
Если задача — экспортировать данные из 1С в файл (например, для передачи в другую систему), используются стандартные механизмы обмена:
- 📄 Выгрузка в XML — универсальный формат для обмена между базами 1С.
- 📊 Экспорт в Excel — для аналитики или ручной обработки.
- 🔗 JSON — для интеграции с веб-сервисами.
Пример выгрузки справочника Номенклатура в Excel:
Процедура ВыгрузитьНоменклатуруВExcel()
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Код");
Таблица.Колонки.Добавить("Наименование");
Таблица.Колонки.Добавить("Артикул");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Код,
| Наименование,
| Артикул
|ИЗ
| Справочник.Номенклатура";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Код = Выборка.Код;
НоваяСтрока.Наименование = Выборка.Наименование;
НоваяСтрока.Артикул = Выборка.Артикул;
КонецЦикла;
Excel = Новый ExcelДокумент;
Excel.ЗаписатьТаблицу(Таблица);
Excel.Записать("C:\Export\Номенклатура.xlsx");
КонецПроцедуры
Для обмена между базами 1С чаще используется XML. Стандартный механизм:
- Откройте
Администрирование → Обмен данными. - Выберите узел обмена и нажмите
Выгрузить данные. - Укажите файл для сохранения (обычно
.xmlили.zip).
Для регулярного обмена настройте планы обмена в конфигураторе. Это позволит автоматизировать выгрузку/загрузку файлов по расписанию без ручного вмешательства.
5. Перемещение файлов через API и веб-сервисы
Для интеграции 1С с внешними системами (например, CRM, ERP, маркетплейсами) используются HTTP-сервисы и REST API. В этом случае файлы (например, прайс-листы, акты, накладные) передаются в виде:
- 📎 Вложений в JSON (кодировка
base64). - 📤 Ссылок на файлы (если файлы загружены на сервер).
- 📥 Прямой загрузки через
multipart/form-data.
Пример отправки файла на сервер через HTTP-запрос:
Процедура ОтправитьФайлНаСервер(ПутьКФайлу, URL)
HTTPСоединение = Новый HTTPСоединение(URL);
Запрос = Новый HTTPЗапрос();
Запрос.УстановитьТелоИзФайла(ПутьКФайлу);
Запрос.УстановитьЗаголовок("Content-Type", "application/octet-stream");
Ответ = HTTPСоединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния <> 200 Тогда
Сообщить("Ошибка отправки: " + Ответ.КодСостояния);
Иначе
Сообщить("Файл успешно отправлен!");
КонецЕсли;
КонецПроцедуры
⚠️ Внимание: При работе с API учитывайте ограничения по размеру файлов. Например, некоторые сервисы не принимают файлы больше 50 МБ через POST-запросы. В таких случаях используйте:
- 🔗 Предварительную загрузку файла на облачное хранилище (например, Yandex Диск, Google Drive) с последующей отправкой ссылки.
- 📦 Архивирование файла перед отправкой (например, в
ZIP).
6. Автоматизация перемещения файлов (регламентные задания, скрипты)
Для регулярного перемещения файлов (например, ежедневного резервного копирования или выгрузки отчётов) используйте:
- 🕒 Регламентные задания в 1С.
- 🖥️ Скрипты на PowerShell/Bash.
- 🤖 Внешние обработки с таймером.
Пример настройки регламентного задания для архивации базы:
- Откройте
Администрирование → Регламентные задания. - Создайте новое задание с типом
Выполнение кода. - Укажите расписание (например, ежедневно в 23:00).
- В поле
Кодвставьте скрипт для архивации:
Процедура АрхивироватьБазу() Экспорт
ПутьКБазе = "C:\Bases\MyBase\";
ПутьАрхива = "D:\Backup\MyBase_" + Формат(ТекущаяДата(), "ДФ=yyyyMMdd") + ".zip";
КоманднаяСтрока = "powershell -command ""Compress-Archive -Path '" + ПутьКБазе + "*' -DestinationPath '" + ПутьАрхива + "' -Force""";
ЗапуститьПриложение(КоманднаяСтрока);
КонецПроцедуры
Для более сложных сценариев (например, перемещение файлов между серверами) используйте PowerShell-скрипты с планировщиком задач. Пример скрипта для копирования файлов с проверкой:
# PowerShell-скрипт для резервного копирования файлов 1С
$SourcePath = "C:\Bases\1C\"
$DestPath = "\\BackupServer\1C\"
$LogFile = "C:\Logs\1C_Backup.log"
Проверка доступности целевой папки
if (-not (Test-Path $DestPath)) {
Add-Content $LogFile "Ошибка: целевая папка $DestPath недоступна!"
exit 1
}
Копирование файлов с логированием
try {
Copy-Item -Path "$SourcePath*.1CD" -Destination $DestPath -Force -ErrorAction Stop
Add-Content $LogFile "Резервное копирование выполнено успешно: $(Get-Date)"
}
catch {
Add-Content $LogFile "Ошибка копирования: $_"
}
Для критически важных баз настройте уведомления о результатах резервного копирования (например, через email или Telegram-бот). Это позволит оперативно реагировать на сбои.
7. Типичные ошибки и их решение
При перемещении файлов в 1С пользователи часто сталкиваются с следующими проблемами:
| Ошибка | Причина | Решение |
|---|---|---|
Файл используется другим процессом |
База не закрыта или заблокирована службой 1С | Остановите службу 1С:Предприятие или закройте все сеансы |
Недостаточно прав для записи |
Пользователь не имеет прав на целевую папку | Настройте права доступа или запустите операцию от имени администратора |
Файл повреждён (при открытии базы) |
Ошибка при копировании или прерванный процесс | Восстановите базу из резервной копии или используйте chdbfl.exe |
Не является обработкой 1С |
Файл .epf повреждён или несовместим |
Проверьте версию платформы и целостность файла |
Ошибка подключения к серверу (при обмене) |
Неверные настройки соединения или сетевые проблемы | Проверьте hosts, брандмауэр и параметры подключения |
⚠️ Внимание: Если после перемещения файлов база 1С не открывается с ошибкой Файл базы данных повреждён, не пытайтесь восстановить её вручную — используйте утилиту chdbfl.exe (входит в комплект 1С) или обратитесь к специалисту. Неправильные действия могут привести к полной потере данных без возможности восстановления.
Как восстановить базу с помощью chdbfl.exe?
1. Закройте все сеансы 1С.
2. Откройте командную строку от имени администратора.
3. Перейдите в папку с утилитой (обычно C:\Program Files\1cv8\8.3.x.xxx\bin\).
4. Выполните команду:
chdbfl.exe ПутьКФайлуБазы.1CD /F /IBName "ИмяБазы" /IBDir "ПутьКПапкеБазы"
5. Если утилита выдаст ошибки, повторите команду с ключом /C для глубокой проверки.
FAQ: Частые вопросы по перемещению файлов в 1С
Можно ли перемещать файлы базы 1С (.1CD) просто перетаскиванием в Проводнике?
Технически да, но это опасно, если база открыта в 1С или работает фоновая служба. Лучше:
- Остановить службу 1С:Предприятие.
- Скопировать файлы (не вырезать!).
- Проверить целостность базы после переноса.
Для больших баз (от 10 ГБ) используйте robocopy с ключом /Z для возобновляемого копирования.
Как перенести вложения из одного документа 1С в другой?
Есть два способа:
- Ручной:
- Откройте исходный документ.
- Сохраните вложение на диск (
ПКМ → Сохранить как...). - Откройте целевой документ и загрузите файл обратно.
- Программный: Используйте код:
ЦелевойДокумент.Файлы.Добавить(Источник.Файлы[0]);
Почему после переноса внешняя обработка не работает в новой базе?
Частые причины:
- 🔧 Разные версии платформы (обработка написана для 8.3.20, а база на 8.3.18).
- 📋 Отсутствуют требуемые объекты метаданных (например, справочник, к которому обращается обработка).
- 🔒 Ограничения прав — у пользователя нет доступа к функционалу обработки.
Решение: проверьте совместимость в Конфигураторе (Сравнить конфигурации) и обновите обработку при необходимости.
Как автоматизировать выгрузку отчётов в Excel каждый день?
Настройте регламентное задание:
- Создайте обработку с кодом выгрузки (см. раздел 4).
- Добавьте задание в
Администрирование → Регламентные задания. - Укажите расписание (например, ежедневно в 18:00).
Для отправки отчётов по email добавьте в код строку:
Почта = Новый Почта;
Почта.Отправить("email@example.com", "Отчёт за " + ТекущаяДата(), "", ПутьКФайлу);
Что делать, если при переносе базы появилась ошибка "Файл не является файлом базы данных"?
Это означает, что файл повреждён. Действия:
- Восстановите базу из последней резервной копии.
- Если копии нет, используйте
chdbfl.exe: - Если утилита не помогла, обратитесь в службу поддержки 1С с логами ошибок.
chdbfl.exe ПутьКФайлу.1CD /C
⚠️ Не пытайтесь открыть повреждённую базу в 1С — это может усугубить проблему!