Копируем документы: внутри базы, в файл и между базами
Содержание
«Скопировать документ » в 1С означает одно из трёх, и способ зависит от задачи:
- сделать ещё один такой же документ в той же базе — выделите строку в списке и нажмите
F9; - выгрузить документы в файл (Excel, табличный документ) — команда
Ещё → Вывести список; - перенести документы в другую базу той же конфигурации — универсальная обработка «Выгрузка и загрузка данных XML».
Чаще всего под копированием понимают именно перенос между базами. Он сложнее остальных: тянет за собой справочники, табличные части, вложения и аккуратное сопоставление ссылок. Разберём все три варианта по порядку — от быстрой копии до полноценного переноса.
Какой способ подходит вашей задаче
Прежде чем щёлкать кнопки, определитесь, что на самом деле нужно получить. От этого зависит и инструмент, и объём работы.
F9. Откроется непроведённая копия — поправьте реквизиты и проведите.Ещё → Вывести список в табличный документ, затем сохраните в .xlsx или скопируйте ячейки через буфер обмена..xml в одной базе и загрузите в другой. Сначала справочники, потом документы.Копия документа внутри текущей базы
Самый частый случай — когда нужен документ, почти не отличающийся от уже введённого. Повторно забивать реквизиты не надо.
- Откройте журнал или список документов нужного вида (например,
Продажи → Реализация (акты, накладные)). - Встаньте на строку с документом-образцом.
- Нажмите
F9— либо кнопку копирования на командной панели списка, либо командуЕщё → Скопировать. - Откроется новый документ с теми же данными. Дата подставится текущая, номер присвоится при записи.
- Поправьте, что нужно, и запишите.
Копия наследует и табличную часть — строки товаров, услуг, ставки НДС переносятся целиком. Это и есть главный смысл приёма: шапку и таблицу не вводят заново.
Копирование работает одинаково в списках документов, в журналах, где показаны документы разных видов, и в справочниках. В журнале 1С копирует тот вид документа, на строке которого вы стоите. Отдельной команды «сделать сразу несколько копий» в типовых конфигурациях нет — документы копируются по одному. Если одинаковых документов нужно много, удобнее один раз сделать копию-образец и дальше копировать уже её.
Копия создаётся непроведённой. Если провести её не глядя, в учёте задвоятся движения — лишние проводки и записи в регистрах. Проводите копию только после того, как проверили реквизиты.
Не путайте копирование с командой Создать на основании. Она делает документ другого вида на базе текущего (например, счёт-фактуру на основании реализации), а не дубль того же документа.
Выгрузка документов в файл: список и табличный документ
Когда данные документов нужны вне 1С — для сверки, отчёта руководителю, загрузки в стороннюю программу, — их выгружают в табличный документ, а оттуда в Excel.
- Откройте список документов и настройте видимые колонки — в выгрузку попадёт то, что показано на экране.
- Выполните команду
Ещё → Вывести список. - В окне выбора укажите «Табличный документ» и нажмите «ОК».
- Получите таблицу со строками списка. Сохраните её:
Файл → Сохранить как, тип файла.xlsxили.mxl.
Через буфер обмена ещё быстрее: выделите нужные ячейки в табличном документе, нажмите Ctrl+C и вставьте в Excel по Ctrl+V. Форматирование и значения перенесутся как есть.
При сохранении есть выбор формата. .xlsx открывается в Excel и подходит для передачи данных наружу. .mxl — родной формат табличного документа 1С: он сохраняет оформление, но открывается только в 1С. Для выгрузки в стороннюю программу берите .xlsx.
Так же работают печатные формы. Любая печатная форма открывается как табличный документ, поэтому её можно сохранить в Excel или скопировать по ячейкам.
Если выгрузка списка в файл нужна регулярно и с расчётами (итоги, группировки, отбор по нескольким условиям), разовый Вывести список неудобен. Под это лучше настроить отдельный отчёт — так данные будут собираться в нужном виде за пару кликов, без ручной правки в Excel.
Вывести список переносит только видимые колонки — это реквизиты шапки, а не документы целиком. Табличные части (строки товаров) сюда не попадут. Для полного переноса документов используйте XML — об этом ниже.
Перенос в другую базу: обработка «Выгрузка и загрузка данных XML»
Для переноса между базами одинаковой конфигурации (например, из тестовой копии БП 3.0 в рабочую БП 3.0) используют универсальную внешнюю обработку
«Выгрузка и загрузка данных XML» — файл с расширением .epf.
Порядок работы:
- Откройте обработку:
Файл → Открыть, выберите файл.epf. Понадобятся полные права (как правило, администратора). - На вкладке выгрузки отметьте нужные объекты. Документы можно ограничить отбором — по периоду, организации, виду документа.
- Укажите имя файла выгрузки
.xmlи запустите выгрузку. - Во второй базе откройте ту же обработку, перейдите на вкладку загрузки, укажите полученный
.xmlи выполните загрузку.
Перед загрузкой в рабочую базу обязательно сделайте резервную копию. Штатного отката загрузки нет: если что-то пойдёт не так, вернуть базу можно только из копии.
Отдельно обратите внимание на объекты, на которые ссылаются документы. В обработке есть опция выгружать объекты вместе со связанными — теми справочниками, на которые есть ссылки в документе. Если её включить, контрагенты, номенклатура и склады уедут вместе с документами, и строки не окажутся пустыми. Без неё эти справочники придётся выгружать отдельным проходом.
Ключевое ограничение — структура метаданных в обеих базах должна совпадать. Если конфигурации различаются даже релизом, часть объектов может не загрузиться. Поэтому перед переносом полезно сверить релизы обеих баз и при расхождении сначала обновить приёмник до той же версии.
Когда базы нужно синхронизировать не разово, а постоянно, разовая выгрузка не подходит. Настройте регулярный обмен в разделе Администрирование (в части конфигураций этот раздел называется НСИ и администрирование) — пункт синхронизации данных. Это уже не копирование, а двусторонний обмен по расписанию.
Программный перенос и внешние обработки
Разовой обработки хватает не всегда. Если отбор сложный (например, документы по конкретному проекту за несколько лет) или выгрузка нужна регулярно, пишут собственную внешнюю обработку.
Логика такой обработки обычно одна из двух:
- Через файл. Запросом или перебором отобрать документы и сериализовать их в XML. За сериализацию отвечают
СериализаторXDTOи методы записи XML — объект превращается в XML-представление, которое потом читается в базе-приёмнике. - Через прямое соединение. Подключиться ко второй базе внешним соединением (
V83.COMConnector), создать там объекты, заполнить реквизиты и табличные части, записать. Требует одинаковой структуры и аккуратной подстановки ссылок на справочники.
У прямого соединения есть свои тонкости: обе базы должны быть доступны одновременно, а на компьютере — установлена подходящая версия платформы. По скорости вариант через файл обычно предсказуемее, особенно на больших объёмах.
Писать такое с нуля стоит, только когда готовые средства не закрывают задачу. В большинстве случаев проще взять ту же обработку выгрузки XML: она уже решает и сериализацию, и сопоставление ссылок между базами, которое вручную легко сделать с ошибками.
Прежде чем садиться за код, проверьте типовые механизмы обмена конфигурации. Часто нужная выгрузка уже встроена, и внешняя обработка не понадобится.
Табличные части и присоединённые файлы
С документом внутри 1С переносится не только шапка. Это отличает полноценный перенос от выгрузки списка в Excel.
Табличные части. Обработка XML выгружает документ целиком — строки товаров, услуг, ставки и суммы едут вместе с ним. Отдельно табличные части выгружать не нужно.
Ссылочные значения в строках. А вот сама номенклатура, контрагенты, склады, договоры в строках — это отдельные объекты. Если их нет в базе-приёмнике, строки загрузятся с пустыми ссылками. Поэтому справочники переносят до документов.
Присоединённые файлы. Сканы и вложения хранятся отдельно — в справочниках присоединённых файлов, а сами файлы лежат либо внутри информационной базы, либо в томах на диске (раздел настроек работы с файлами). При выгрузке документа вложения автоматически не уедут. Чтобы перенести их:
- выгрузите соответствующие справочники присоединённых файлов вместе с документами;
- если файлы хранятся в томах на диске — перенесите и содержимое томов, иначе ссылки останутся, а файлов не будет.
Рабочий порядок переноса получается такой: сначала справочники (организации, контрагенты, номенклатура, договоры), затем документы, в конце — присоединённые файлы, если они нужны.
Дубли и ссылочная целостность после переноса
Главная ловушка переноса — задвоение справочников. Обработка сопоставляет объекты по внутреннему идентификатору (ссылке), а не по названию.
Если один и тот же контрагент заведён в обеих базах вручную, идентификаторы у него разные. После переноса документов 1С не распознает, что это одно лицо, и создаст второго контрагента — дубль. Документы при этом разойдутся по двум карточкам.
Как этого избежать:
- переносите общие справочники одним комплектом из базы-источника, а не заводите их заново в приёмнике;
- если ведёте обе базы параллельно — держите общий справочник в одной из них ведущим.
Если дубли уже появились, их убирает обработка поиска и удаления дублей в разделе администрирования: она находит похожие элементы и заменяет все ссылки на один оставленный. Удалять дубли вручную, просто пометив на удаление, нельзя — ссылки в документах повиснут.
Предопределённые значения — например, ставки НДС или типовые виды операций — обычно сопоставляются по имени и не задваиваются. Проблема именно с теми справочниками, которые пользователи заводят руками: контрагенты, номенклатура, договоры, физлица.
Отдельно проверьте ссылочную целостность. Откройте несколько перенесённых документов и посмотрите, заполнены ли контрагент, номенклатура, суммы. Пустые поля — признак того, что нужный справочник не доехал. Если таких документов много, быстрее повторить выгрузку недостающих справочников и загрузить документы заново поверх — сопоставление по идентификатору не создаст второй экземпляр уже загруженного документа.
Частые вопросы
Можно ли скопировать проведённый документ так, чтобы копия тоже сразу была проведена?
F9 всегда создаётся непроведённой — это защита от случайного задвоения движений. Проверьте реквизиты и проведите копию вручную.Перенесутся ли движения по регистрам при выгрузке XML?
Чем «Вывести список» отличается от выгрузки XML?
Вывести список даёт таблицу видимых колонок для Excel — это, по сути, отчёт о документах, а не сами документы. Выгрузка XML переносит документы целиком, с реквизитами и табличными частями, в другую базу 1С.