Перенос документов между разными конфигурациями 1С:Предприятие — задача, с которой рано или поздно сталкивается каждый специалист.hether вы мигрируете с 1С:Бухгалтерии 7.7 на 1С:ERP 2.5, объединяете базы после реорганизации компании или просто нужно дублировать документ в тестовой среде — без грамотного подхода процесс может обернуться потерянными данными, разбитыми ссылками или часами ручной правки. В этой статье разберём все актуальные методы переноса — от ручного копирования через XML до автоматизированных обменов с использованием Конвертации данных 3.0, а также расскажем, как избежать типичных ошибок, о которых умалчивают даже опытные программисты.
Особенность задачи в том, что конфигурации 1С часто имеют разную структуру метаданных: например, в 1С:УТ 11 и 1С:КА 2.4 один и тот же документ "Реализация товаров" может храниться в разных справочниках с уникальными реквизитами. Поэтому универсального решения "одной кнопкой" не существует — выбор метода зависит от версии платформы, типа документов и требований к целостности данных после переноса. Мы рассмотрим варианты для платформ 8.3.20+, но большинство подходов работают и на более ранних версиях (с оговорками).
1. Когда требуется перенос документов между конфигурациями?
На практике есть 5 типичных сценариев, при которых возникает необходимость переноса:
- 🔄 Миграция на новую конфигурацию — переход с устаревшей версии (например, 1С:Бухгалтерия 2.0 → 3.0) с сохранением истории документов.
- 📂 Объединение баз — слияние данных после поглощения компании или разделения бизнес-направлений.
- 🧪 Создание тестового окружения — копирование реальных документов в пессочницу для отладки.
- 🔄 Восстановление после сбоя — перенос документов из резервной копии в рабочую базу после потери данных.
- 📊 Аналитика в другой системе — выгрузка документов для обработки в 1С:Консолидация или сторонних BI-инструментах.
Важно понимать, что не все документы можно перенести "как есть". Например, Заказ покупателя из 1С:Управление торговлей содержит реквизиты, которых нет в 1С:Бухгалтерии (например, Менеджер или Склад отгрузки). В таких случаях требуется либо преобразование структуры, либо перенос только критичных данных (даты, суммы, контрагенты).
⚠️ Внимание: Если вы переносите документы между конфигурациями с разными планами счетов (например, из 1С:БП 2.0 в 1С:ERP), предварительно сверьте соответствие счетов бухгалтерского учёта. Автоматическое сопоставление может привести к искажению проводок!
2. Метод 1: Ручной перенос через XML (для единичных документов)
Самый простой, но трудоёмкий способ — выгрузка документа в XML из исходной базы и загрузка в целевую. Подходит для единичных документов или небольших пакетов (до 50 штук). Основное преимущество — полный контроль над данными: вы можете вручную отредактировать XML-файл перед загрузкой.
Инструкция:
- Откройте документ в исходной базе, нажмите
Файл → Сохранить как…и выберите форматXML (Данные). - В целевой базе создайте новый документ того же типа, затем нажмите
Файл → Открыть…и выберите сохранённый XML. - Если структура документов совпадает, данные подгрузятся автоматически. При расхождениях — появится окно с предупреждениями.
Ограничения метода:
- 🚫 Не работает для документов с вложенными табличными частями (например,
Счёт-фактурас позициями товаров). - 🔄 Требует ручного сопоставления справочников (например, если в новой базе другой
ИНН контрагента). - ⏳ Занимает много времени при большом объёме данных.
☑️ Подготовка к ручному переносу
3. Метод 2: Универсальный обмен через "Конвертацию данных 3.0"
Самый надёжный способ для массового переноса — использование типовой обработки Конвертация данных 3.0 (входит в поставку большинства конфигураций на платформе 8.3.20+). Она позволяет:
- 🔄 Переносить документы пакетами (например, все
Поступления товаровза квартал). - 🔧 Настраивать правила преобразования полей (например, переводить
Складиз одной базы вМесто хранениядругой). - 📂 Сохранять связи между объектами (например, привязку
Заказа покупателякРеализации).
Пошаговая инструкция:
- В исходной базе откройте
Администрирование → Обмен данными → Конвертация данных 3.0. - Создайте новое правило обмена, укажите источник (текущая база) и приёмник (целевая база).
- В настройках выберите типы документов для переноса (например,
Счёт на оплату,Реализация товаров). - Запустите
Выгрузку данныхиз исходной базы, затемЗагрузкув целевую.
Преимущества метода:
- ⚡ Автоматизация — можно настроить регулярный обмен.
- 🛠️ Гибкость — поддерживает преобразование структур.
- 📋 Логирование — ведётся протокол ошибок.
⚠️ Внимание: При переносе документов с проводками (например,Поступление на расчётный счёт) проверьте соответствиеПлана счетовв обеих базах. Если счета не совпадают, проводки могут не сформироваться!
| Метод переноса | Скорость | Сложность настройки | Подходит для |
|---|---|---|---|
| Ручной XML | Низкая | Просто | Единичные документы |
| Конвертация данных 3.0 | Высокая | Средняя | Массовый перенос |
| Выгрузка/загрузка через DT | Средняя | Сложно | Технические специалисты |
| Внешние обработки | Зависит от кода | Высокая | Нетривиальные задачи |
4. Метод 3: Выгрузка/загрузка через формат DT (для технических специалистов)
Формат DT (Data Transfer) — это бинарный формат обмена, который используется для переноса данных между базами 1С без потерь. В отличие от XML, он сохраняет все ссылки и метаданные, что критично для сложных документов (например, Акт сверки с большим количеством движений).
Как использовать:
- В исходной базе выполните команду:
ВыгрузитьДанные("C:\temp\documents.dt", РежимВыгрузкиДанных.ВыгружатьВсюИнформацию); - В целевой базе загрузите данные:
ЗагрузитьДанные("C:\temp\documents.dt", РежимЗагрузкиДанных.СоздаватьНовые);
Особенности метода:
- 🔧 Требует доступа к конфигуратору и знаний 1С:Предприятие.
- 📦 Переносит все связанные объекты (например, справочники, регистры).
- ⚠️ Может перезаписывать данные в целевой базе — используйте с осторожностью!
Перед выгрузкой в DT проверьте размер будущего файла. Если он превышает 2 ГБ, разбейте перенос на части (например, по месяцам).
5. Метод 4: Использование внешних обработок (для нестандартных задач)
Если типовой функционал не подходит (например, нужно перенести документы с изменением структуры или фильтрацией по реквизитам), можно написать собственную обработку на встроенном языке 1С. Пример кода для переноса документа ЗаказПокупателя:
// Получаем документ из исходной базы
Заказ = Документы.ЗаказПокупателя.НайтиПоНомеру("000123");
// Создаём новый документ в целевой базе
НовыйЗаказ = Документы.ЗаказПокупателя.СоздатьДокумент();
НовыйЗаказ.Дата = Заказ.Дата;
НовыйЗаказ.Контрагент = СоответствиеКонтрагентов[Заказ.Контрагент]; // Сопоставляем справочники
НовыйЗаказ.СуммаДокумента = Заказ.СуммаДокумента;
// Переносим табличную часть
Для Каждого Строка Из Заказ.Товары Цикл
НоваяСтрока = НовыйЗаказ.Товары.Добавить();
НоваяСтрока.Номенклатура = СоответствиеНоменклатуры[Строка.Номенклатура];
НоваяСтрока.Количество = Строка.Количество;
КонецЦикла;
НовыйЗаказ.Записать();
Преимущества кастомизированных обработок:
- 🎯 Точное управление — можно переносить только нужные поля.
- 🔄 Преобразование данных — например, конвертация валют или округление сумм.
- 📊 Логирование — добавление отладочной информации.
⚠️ Внимание: При написании собственных обработок учитывайте блокировки транзакций. Если перенос прервётся на середине, в целевой базе могут остаться "битые" документы. Всегда используйте конструкцию НачатьТранзакцию() / ЗафиксироватьТранзакцию()!
Пример кода для переноса с преобразованием валют
Если в исходной базе суммы в долларах, а в целевой нужны рубли, добавьте перед записью документа строку:
НовыйЗаказ.СуммаДокумента = Заказ.СуммаДокумента * КурсВалют.ПолучитьКурс(Заказ.Валюта, Заказ.Дата);
6. Метод 5: Обмен через веб-сервисы (для распределённых систем)
Если базы 1С расположены на разных серверах или нужно организовать регулярный обмен, оптимальное решение — настройка веб-сервисов. Этот метод требует:
- 🌐 Настройки
HTTP-сервисав исходной базе. - 🔌 Подключения к сервису из целевой базы.
- 📡 Публикации базы на веб-сервере (например, Apache или IIS).
Пример настройки:
- В исходной базе опубликуйте веб-сервис:
ОпубликоватьВебСервис("/ws/Documents", "ОбменДокументами"); - В целевой базе создайте
HTTPСоединениеи вызовите метод сервиса:SOAPЗапрос = Новый SOAPЗапрос("http://server/ws/Documents?wsdl");Ответ = SOAPЗапрос.Выполнить("ПолучитьДокументы", Параметры);
Преимущества:
- 🔄 Автоматизация — можно настроить обмен по расписанию.
- 🛡️ Безопасность — поддерживается авторизация по логину/паролю или сертификатам.
- 🌍 Удалённая работа — не требует прямого доступа к файлам базы.
Веб-сервисы — единственный надёжный способ для обмена между базами в разных городах или странах. Однако требует навыков администрирования серверов.
7. Типичные ошибки и как их избежать
Даже опытные специалисты сталкиваются с проблемами при переносе документов. Вот TOP-5 ошибок и способы их предотвращения:
- 🔗 Разбитые ссылки — если в целевой базе нет справочника (например,
Номенклатура), документ не проведётся. Решение: Предварительно перенесите все справочники или настройте автоматическое создание отсутствующих элементов. - 💰 Искажённые суммы — при переносе документов в другой валюте или с другим количеством знаков после запятой. Решение: Используйте округление или приведение к единой валюте.
- 📅 Конфликт дат — если документ переносится в закрытый период. Решение: Проверяйте настройки периодов в целевой базе.
- 🔑 Проблемы с правами — недостаточные права у пользователя для создания документов. Решение: Выполняйте перенос от имени администратора.
- 📊 Потеря движений — если документ имеет проводки или движения по регистрам.
Решение: Используйте
Конвертацию данных 3.0илиDT.
Ещё одна распространённая проблема — дублирование документов. Например, при повторном переносе может создаться копия документа с тем же номером. Чтобы избежать этого, настройте уникальные идентификаторы (например, по номеру и дате) или используйте механизм ПоискПоРеквизитам.
8. FAQ: Ответы на частые вопросы
Можно ли перенести документы между базами разных версий платформы (например, 8.2 и 8.3)?
Да, но с оговорками. Для переноса между 8.2 и 8.3 используйте промежуточный формат (например, XML или DT). Прямой обмен через Конвертацию данных 3.0 может не работать из-за различий в метаданных. Также учтите, что некоторые реквизиты в 8.3 могут отсутствовать в 8.2 (например, ВидДокумента).
Как перенести только часть реквизитов документа?
Используйте внешнюю обработку или Конвертацию данных 3.0 с настройкой правил. В обработке можно явно указать, какие поля копировать:
НовыйДокумент.Дата = ИсходныйДокумент.Дата;
НовыйДокумент.Контрагент = ИсходныйДокумент.Контрагент;
// Поле "Сумма" не переносим
В Конвертации данных 3.0 отключите ненужные реквизиты в настройках правила обмена.
Что делать, если после переноса документ не проводится?
Причины могут быть разные:
- Отсутствуют обязательные реквизиты (проверьте заполненность полей, отмеченных звёздочкой).
- Не хватает прав у пользователя (попробуйте провести документ от имени администратора).
- Разбиты ссылки на справочники (например, нет номенклатуры или контрагента).
- Ошибки в проводках (проверьте логи проведения в
Журнале регистрации).
Для диагностики включите режим отладки (Сервис → Параметры → Отладка) и посмотрите подробное сообщение об ошибке.
Как перенести документы вместе с историей изменений?
История изменений (кто и когда редактировал документ) хранится в регистре сведений ИсторияДокументов. Чтобы перенести её:
- Выгрузите данные регистра через
Конвертацию данных 3.0илиDT. - Убедитесь, что в целевой базе включено ведение истории (
Администрирование → Настройки программы → История изменений).
Альтернатива — использовать журнал регистрации, но он не сохраняет детальную историю по полям.
Можно ли автоматизировать перенос документов по расписанию?
Да, для этого подходят:
- Регламентные задания (внутри 1С): настройте автоматический запуск обработки обмена.
- Внешние планировщики (например, Windows Task Scheduler): запускайте
1cv8.exeс параметрами для выполнения обмена. - Веб-сервисы: если базы находятся на разных серверах.
Пример команды для планировщика:
"C:\Program Files\1cv8\8.3.20.1500\bin\1cv8.exe" DESIGNER /S"server\base" /N"Admin" /P"password" /Execute"ОбменДанными.ВыполнитьОбмен()"