Администрирование · 10 мин
Как открыть документ из другой базы 1С
Как открыть документ из другой базы 1С: COM-соединение, веб-сервисы, планы обмена и универсальная выгрузка. Пошаговые инструкции, код, типичные ошибки.
Задача открыть документ из другой базы 1С возникает регулярно: бухгалтерия работает в «1С:Бухгалтерии», менеджеры — в «1С:Управление торговлей», а документы нужно видеть и там, и там. Прямого способа «открыть чужой документ как файл» в платформе нет, потому что документ хранится не в виде отдельного файла, а в виде записей в таблицах базы данных. Поэтому используются обходные механизмы: программное подключение к другой базе, обмен данными или передача документа в файл.
Выбор способа зависит от трёх условий: нужен ли однократный просмотр или постоянный обмен, есть ли сетевой доступ между базами и совпадают ли конфигурации. Ниже разобраны все рабочие варианты — от простого открытия обработкой до настройки COM-соединения и планов обмена, с указанием ограничений и рисков каждого.
Определите, что именно вам нужно: просмотр, копия или постоянный доступ
Прежде чем выбирать инструмент, ответьте на три вопроса. Первый: документ нужен один раз (например, проверить реквизиты старой накладной из архивной базы) или требуется регулярный доступ? Второй: базы находятся в одной сети и доступны ли они по прямому пути или через сервер 1С? Третий: конфигурации одинаковые или разные — от этого зависит, совпадут ли типы документов.
Если нужен разовый просмотр или перенос нескольких документов — достаточно выгрузки в XML-файл. Если требуется, чтобы документ появлялся во второй базе автоматически, — настраивайте план обмена. Если нужно из одной базы программно читать данные другой (например, в отчёте или обработке) — используйте COM-соединение или HTTP-сервисы.
Как выбрать способ
Способ 1: выгрузка документа в XML и загрузка в другую базу
Самый простой и безопасный вариант — стандартная обработка «Выгрузка и загрузка данных XML», которая входит в поставку большинства типовых конфигураций и доступна на диске ИТС. Она сериализует объект со всеми ссылками в XML-файл, который затем загружается в другую базу той же конфигурации.
Порядок действий. Откройте обработку в базе-источнике через меню «Файл → Открыть». На вкладке «Выгрузка» отметьте нужный вид документа, добавьте отбор по конкретному документу (по номеру, дате или ссылке) и включите опцию выгрузки «по ссылкам» — тогда вместе с документом выгрузятся связанные контрагенты, номенклатура и договоры. Укажите файл и нажмите «Выгрузить данные».
В базе-приёмнике откройте ту же обработку, перейдите на вкладку «Загрузка», выберите файл и выполните загрузку. После загрузки найдите документ в журнале и проверьте, что все ссылочные поля заполнены, а суммы и табличные части совпадают с оригиналом.
- 1Откройте в базе-источнике обработку «Выгрузка и загрузка данных XML»
- 2На вкладке «Выгрузка» отметьте вид документа и задайте отбор по конкретному документу
- 3Включите выгрузку объектов по ссылкам, чтобы перенести связанные справочники
- 4Укажите имя файла и выполните выгрузку
- 5В базе-приёмнике откройте ту же обработку, вкладка «Загрузка», выберите файл
- 6Проверьте загруженный документ: ссылки, суммы, табличные части
Важное ограничение: обработка корректно работает только между базами с одинаковой конфигурацией и близкими релизами. Если конфигурации разные (например, из «Управления торговлей» в «Бухгалтерию»), структура объектов не совпадёт, и загрузка либо завершится ошибкой, либо создаст битые ссылки. Для разных конфигураций используйте обмен по правилам — обработку «Универсальный обмен данными в формате XML» с правилами конвертации.
Способ 2: открытие документа через COM-соединение
COM-соединение позволяет из кода одной базы подключиться к другой и работать с её объектами напрямую — читать документы, получать ссылки, вызывать методы. Способ подходит для клиент-серверных и файловых баз в одной сети, но требует, чтобы на машине, где выполняется код, была установлена платформа 1С той же версии.
Типовой код подключения к файловой базе выглядит так:
Коннектор = Новый COMОбъект("V83.COMConnector");
СтрокаПодключения = "File=""D:\Bases\Trade"";Usr=""Администратор"";Pwd=""123"";";
Соединение = Коннектор.Connect(СтрокаПодключения);
Документы = Соединение.Документы.РеализацияТоваровУслуг;
Выборка = Документы.Выбрать(НачалоДня(ДатаНачала), КонецДня(ДатаОкончания));
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Номер + " от " + Выборка.Дата + " — " + Выборка.СуммаДокумента);
КонецЦикла;
Для серверной базы строка подключения другая: Srvr="Server1C";Ref="TradeBase";Usr="...";Pwd="...";. После получения ссылки на документ можно читать любые его реквизиты и табличные части, обходя их через точку, как в обычном коде.
Учтите ограничения: COM-соединение работает только под Windows, заметно медленнее прямого доступа и потребляет дополнительную лицензию на сеанс. Кроме того, внешняя компонента V83.COMConnector должна быть зарегистрирована на компьютере — если возникает ошибка «Класс не зарегистрирован», выполните регистрацию командой regsvr32 для библиотеки comcntr.dll из каталога платформы.
Способ 3: план обмена для постоянной синхронизации
Если документы должны регулярно появляться во второй базе без ручных действий, правильный инструмент — план обмена. В типовых конфигурациях уже есть готовые планы: «Полный», «По организации», а также типовые синхронизации между популярными парами конфигураций (например, УТ и БП).
Настройка в типовой конфигурации выполняется через раздел «Администрирование → Синхронизация данных»: включите синхронизацию, создайте настройку, укажите вторую базу (прямое подключение, файл через каталог, FTP или электронную почту), задайте состав передаваемых данных и расписание. После первоначальной выгрузки документы будут передаваться автоматически по расписанию или по событию записи.
План обмена работает по принципу регистрации изменений: платформа запоминает, какие объекты изменились с момента последней выгрузки, и передаёт только их. Это экономит трафик, но требует аккуратности: если удалить узел обмена и создать заново, потребуется повторная начальная выгрузка.
Способ 4: доступ через веб-сервисы и HTTP
Когда базы находятся в разных сетях или одна из них работает под Linux либо в веб-клиенте, COM не подходит. В этом случае в базе-источнике публикуют HTTP-сервис или веб-сервис, который по запросу возвращает данные документа в формате JSON или XML. База-потребитель выполняет HTTP-запрос и разбирает ответ.
Пример запроса из кода:
Соединение = Новый HTTPСоединение("server", 80, "user", "pass");
Запрос = Новый HTTPЗапрос("/base/hs/docs/get?number=00000123&date=20260115");
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
Данные = ПрочитатьJSONИзСтроки(Ответ.ПолучитьТелоКакСтроку());
КонецЕсли;
Для публикации HTTP-сервиса потребуется веб-сервер (IIS или Apache) и настройка публикации базы. Это самый гибкий, но и самый трудоёмкий вариант: нужно разработать сам сервис, продумать аутентификацию и защиту от несанкционированного доступа. Не публикуйте сервис без авторизации — иначе данные базы станут доступны любому, кто узнает адрес.
Проверка результата и типичные ошибки
После переноса документа любым способом обязательно сверьте результат с оригиналом. Откройте документ в обеих базах и сравните номер, дату, контрагента, суммы, табличные части и проведённость. Если документ проведён, проверьте движения по регистрам — при загрузке без движений документ окажется просто записанным.
Как проверить результат
Все поля заполнены, элементы открываются
Поля пустые или показывают «Объект не найден»
Совпадают с оригиналом построчно
Расхождения в суммах или пропущенные строки
Документ проведён, движения на месте
Документ записан, но не проведён, движений нет
Совпадают с документом-источником
Номер переназначен автонумерацией, дата сбита
Частая проблема — «битые ссылки» вида «<Объект не найден>». Они появляются, когда документ загружен, а связанные справочники — нет. Решение: повторно выгрузить данные с включённой опцией выгрузки по ссылкам или дозагрузить недостающие элементы справочников.
Часто задаваемые вопросы
Можно ли открыть документ из другой базы просто двойным щелчком, как файл?
Нет. Документ в 1С — это не файл, а набор записей в таблицах базы данных. Открыть его можно только внутри информационной базы: либо перенеся в свою базу, либо подключившись к чужой базе программно, либо запустив саму ту базу и найдя документ в журнале.
Как перенести документ между разными конфигурациями, например из УТ в БП?
Используйте типовую синхронизацию данных (в обеих конфигурациях есть встроенная настройка обмена) или обработку «Универсальный обмен данными в формате XML» с правилами конвертации. Прямая выгрузка-загрузка XML между разными конфигурациями не сработает из-за различий в структуре объектов.
Почему COM-подключение выдаёт ошибку «Класс не зарегистрирован»?
Компонента V83.COMConnector не зарегистрирована в системе или версия платформы на компьютере не совпадает с версией целевой базы. Зарегистрируйте библиотеку comcntr.dll из каталога нужной версии платформы командой regsvr32 с правами администратора.
Будет ли работать COM-соединение на сервере под Linux?
Нет, COM — технология Windows. На Linux используйте HTTP-сервисы, веб-сервисы или обмен через файлы и планы обмена.
Как открыть документ из архивной базы, которая больше не используется?
Проще всего запустить саму архивную базу (добавить её в список информационных баз) и найти документ в соответствующем журнале. Если нужно перенести документ в рабочую базу — используйте выгрузку в XML с последующей загрузкой.
Можно ли настроить автоматическую передачу документов без программирования?
Да. Типовая синхронизация данных в разделе «Администрирование → Синхронизация данных» настраивается полностью через интерфейс: выбирается вторая база, состав данных и расписание. Программирование требуется только для нестандартных сценариев.
Что важно запомнить
Документ из другой базы 1С не открывается как файл — его переносят или читают программно. Для разовой задачи используйте выгрузку в XML, для постоянной — план обмена, для доступа из кода — COM-соединение или HTTP-сервис. После любого переноса проверяйте ссылки, суммы и движения документа.