Перенос документов между разными конфигурациями 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.03.0) с сохранением истории документов.
  • 📂 Объединение баз — слияние данных после поглощения компании или разделения бизнес-направлений.
  • 🧪 Создание тестового окружения — копирование реальных документов в пессочницу для отладки.
  • 🔄 Восстановление после сбоя — перенос документов из резервной копии в рабочую базу после потери данных.
  • 📊 Аналитика в другой системе — выгрузка документов для обработки в 1С:Консолидация или сторонних BI-инструментах.

Важно понимать, что не все документы можно перенести "как есть". Например, Заказ покупателя из 1С:Управление торговлей содержит реквизиты, которых нет в 1С:Бухгалтерии (например, Менеджер или Склад отгрузки). В таких случаях требуется либо преобразование структуры, либо перенос только критичных данных (даты, суммы, контрагенты).

⚠️ Внимание: Если вы переносите документы между конфигурациями с разными планами счетов (например, из 1С:БП 2.0 в 1С:ERP), предварительно сверьте соответствие счетов бухгалтерского учёта. Автоматическое сопоставление может привести к искажению проводок!
📊 Какую конфигурацию 1С вы используете чаще всего?
1С:Бухгалтерия
1С:Управление торговлей
1С:Зарплата и Управление Персоналом
1С:ERP
Другую

2. Метод 1: Ручной перенос через XML (для единичных документов)

Самый простой, но трудоёмкий способ — выгрузка документа в XML из исходной базы и загрузка в целевую. Подходит для единичных документов или небольших пакетов (до 50 штук). Основное преимущество — полный контроль над данными: вы можете вручную отредактировать XML-файл перед загрузкой.

Инструкция:

  1. Откройте документ в исходной базе, нажмите Файл → Сохранить как… и выберите формат XML (Данные).
  2. В целевой базе создайте новый документ того же типа, затем нажмите Файл → Открыть… и выберите сохранённый XML.
  3. Если структура документов совпадает, данные подгрузятся автоматически. При расхождениях — появится окно с предупреждениями.

Ограничения метода:

  • 🚫 Не работает для документов с вложенными табличными частями (например, Счёт-фактура с позициями товаров).
  • 🔄 Требует ручного сопоставления справочников (например, если в новой базе другой ИНН контрагента).
  • ⏳ Занимает много времени при большом объёме данных.

☑️ Подготовка к ручному переносу

Выполнено: 0 / 4

3. Метод 2: Универсальный обмен через "Конвертацию данных 3.0"

Самый надёжный способ для массового переноса — использование типовой обработки Конвертация данных 3.0 (входит в поставку большинства конфигураций на платформе 8.3.20+). Она позволяет:

  • 🔄 Переносить документы пакетами (например, все Поступления товаров за квартал).
  • 🔧 Настраивать правила преобразования полей (например, переводить Склад из одной базы в Место хранения другой).
  • 📂 Сохранять связи между объектами (например, привязку Заказа покупателя к Реализации).

Пошаговая инструкция:

  1. В исходной базе откройте Администрирование → Обмен данными → Конвертация данных 3.0.
  2. Создайте новое правило обмена, укажите источник (текущая база) и приёмник (целевая база).
  3. В настройках выберите типы документов для переноса (например, Счёт на оплату, Реализация товаров).
  4. Запустите Выгрузку данных из исходной базы, затем Загрузку в целевую.

Преимущества метода:

  • Автоматизация — можно настроить регулярный обмен.
  • 🛠️ Гибкость — поддерживает преобразование структур.
  • 📋 Логирование — ведётся протокол ошибок.
⚠️ Внимание: При переносе документов с проводками (например, Поступление на расчётный счёт) проверьте соответствие Плана счетов в обеих базах. Если счета не совпадают, проводки могут не сформироваться!
Метод переноса Скорость Сложность настройки Подходит для
Ручной XML Низкая Просто Единичные документы
Конвертация данных 3.0 Высокая Средняя Массовый перенос
Выгрузка/загрузка через DT Средняя Сложно Технические специалисты
Внешние обработки Зависит от кода Высокая Нетривиальные задачи

4. Метод 3: Выгрузка/загрузка через формат DT (для технических специалистов)

Формат DT (Data Transfer) — это бинарный формат обмена, который используется для переноса данных между базами 1С без потерь. В отличие от XML, он сохраняет все ссылки и метаданные, что критично для сложных документов (например, Акт сверки с большим количеством движений).

Как использовать:

  1. В исходной базе выполните команду:
    ВыгрузитьДанные("C:\temp\documents.dt", РежимВыгрузкиДанных.ВыгружатьВсюИнформацию);
  2. В целевой базе загрузите данные:
    ЗагрузитьДанные("C:\temp\documents.dt", РежимЗагрузкиДанных.СоздаватьНовые);

Особенности метода:

  • 🔧 Требует доступа к конфигуратору и знаний 1С:Предприятие.
  • 📦 Переносит все связанные объекты (например, справочники, регистры).
  • ⚠️ Может перезаписывать данные в целевой базе — используйте с осторожностью!
💡

Перед выгрузкой в DT проверьте размер будущего файла. Если он превышает 2 ГБ, разбейте перенос на части (например, по месяцам).

5. Метод 4: Использование внешних обработок (для нестандартных задач)

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


// Получаем документ из исходной базы

Заказ = Документы.ЗаказПокупателя.НайтиПоНомеру("000123");

// Создаём новый документ в целевой базе

НовыйЗаказ = Документы.ЗаказПокупателя.СоздатьДокумент();

НовыйЗаказ.Дата = Заказ.Дата;

НовыйЗаказ.Контрагент = СоответствиеКонтрагентов[Заказ.Контрагент]; // Сопоставляем справочники

НовыйЗаказ.СуммаДокумента = Заказ.СуммаДокумента;

// Переносим табличную часть

Для Каждого Строка Из Заказ.Товары Цикл

НоваяСтрока = НовыйЗаказ.Товары.Добавить();

НоваяСтрока.Номенклатура = СоответствиеНоменклатуры[Строка.Номенклатура];

НоваяСтрока.Количество = Строка.Количество;

КонецЦикла;

НовыйЗаказ.Записать();

Преимущества кастомизированных обработок:

  • 🎯 Точное управление — можно переносить только нужные поля.
  • 🔄 Преобразование данных — например, конвертация валют или округление сумм.
  • 📊 Логирование — добавление отладочной информации.
⚠️ Внимание: При написании собственных обработок учитывайте блокировки транзакций. Если перенос прервётся на середине, в целевой базе могут остаться "битые" документы. Всегда используйте конструкцию НачатьТранзакцию() / ЗафиксироватьТранзакцию()!
Пример кода для переноса с преобразованием валют

Если в исходной базе суммы в долларах, а в целевой нужны рубли, добавьте перед записью документа строку: НовыйЗаказ.СуммаДокумента = Заказ.СуммаДокумента * КурсВалют.ПолучитьКурс(Заказ.Валюта, Заказ.Дата);

6. Метод 5: Обмен через веб-сервисы (для распределённых систем)

Если базы 1С расположены на разных серверах или нужно организовать регулярный обмен, оптимальное решение — настройка веб-сервисов. Этот метод требует:

  • 🌐 Настройки HTTP-сервиса в исходной базе.
  • 🔌 Подключения к сервису из целевой базы.
  • 📡 Публикации базы на веб-сервере (например, Apache или IIS).

Пример настройки:

  1. В исходной базе опубликуйте веб-сервис:
    ОпубликоватьВебСервис("/ws/Documents", "ОбменДокументами");
  2. В целевой базе создайте 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 отключите ненужные реквизиты в настройках правила обмена.

Что делать, если после переноса документ не проводится?

Причины могут быть разные:

  1. Отсутствуют обязательные реквизиты (проверьте заполненность полей, отмеченных звёздочкой).
  2. Не хватает прав у пользователя (попробуйте провести документ от имени администратора).
  3. Разбиты ссылки на справочники (например, нет номенклатуры или контрагента).
  4. Ошибки в проводках (проверьте логи проведения в Журнале регистрации).

Для диагностики включите режим отладки (Сервис → Параметры → Отладка) и посмотрите подробное сообщение об ошибке.

Как перенести документы вместе с историей изменений?

История изменений (кто и когда редактировал документ) хранится в регистре сведений ИсторияДокументов. Чтобы перенести её:

  1. Выгрузите данные регистра через Конвертацию данных 3.0 или DT.
  2. Убедитесь, что в целевой базе включено ведение истории (Администрирование → Настройки программы → История изменений).

Альтернатива — использовать журнал регистрации, но он не сохраняет детальную историю по полям.

Можно ли автоматизировать перенос документов по расписанию?

Да, для этого подходят:

  • Регламентные задания (внутри 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"ОбменДанными.ВыполнитьОбмен()"