Как организовать перенос накладных между базами КА и БП на одном сервере?

Программист 1С v8.3 (Управляемые формы) 1С:Комплексная автоматизация Управленческий учет Торговля и дистрибуция
← На главную

Перенос данных между конфигурациями 1С:Комплексная автоматизация (КА) и 1С:Бухгалтерия предприятия (БП) — это классическая задача автоматизации. Когда базы расположены на одном физическом или виртуальном сервере, мы получаем преимущество в виде высокой скорости передачи данных и отсутствия необходимости в сложных сетевых настройках. Давайте разберем наиболее эффективные подходы к решению этой задачи.

1. Использование типовых механизмов обмена

Прежде чем приступать к написанию собственного кода, всегда следует рассмотреть готовые решения, встроенные в платформу. Для актуальных версий 1С:ERP, 1С:УТ 11 и 1С:КА существует типовой обмен с 1С:Бухгалтерией.

  1. Проверьте настройки обмена в разделе «Администрирование». Часто обмен уже настроен на использование формата EnterpriseData.
  2. Используйте готовые правила регистрации объектов. Вы можете настроить «фильтры» для документов, чтобы в бухгалтерскую базу передавались только необходимые накладные, не перегружая систему лишними данными.
  3. Если функционала не хватает, можно расширить существующие правила, не снимая конфигурацию с поддержки.

2. Реализация через Конвертацию Данных (КД2 или КД3)

Если типового функционала недостаточно, использование КД2 (Конвертация Данных) является «золотым стандартом». Процесс выглядит следующим образом:

3. Автоматизация через COM-соединение

Поскольку базы находятся на одном сервере, мы можем использовать прямое подключение через V83.COMConnector. Этот метод позволяет одной базе «видеть» данные другой без выгрузки промежуточных файлов.

Рассмотрим структуру реализации такого обмена:


// Создание COM-соединения к базе БП
COMConnector = Новый COMObject("V83.COMConnector");
БазаПриемник = COMConnector.Connect("Srvr=""Сервер1С"";Ref=""Бухгалтерия"";Usr=""Логин"";Pwd=""Пароль""");

// Пример передачи данных
ДокументПриемник = БазаПриемник.Документы.РеализацияТоваровУслуг.СоздатьДокумент();
ДокументПриемник.Дата = ТекущаяДата();
ДокументПриемник.Контрагент = БазаПриемник.Справочники.Контрагенты.НайтиПоНаименованию("Название");
// Заполнение табличной части
СтрокаТЧ = ДокументПриемник.Товары.Добавить();
СтрокаТЧ.Номенклатура = БазаПриемник.Справочники.Номенклатура.НайтиПоНаименованию("Товар");
ДокументПриемник.Записать();

Важное примечание: при работе через COM-соединение обязательно реализуйте логирование ошибок в регистр сведений, чтобы в случае сбоя понимать, на каком этапе прервался процесс.

4. Использование Web-сервисов или HTTP-сервисов

Хотя вы упоминали, что не хотели бы «поднимать Web», стоит заметить, что это наиболее современный и масштабируемый способ. С помощью HTTP-сервисов вы можете передавать данные в формате JSON. Это работает быстрее, чем COM-соединение, и менее чувствительно к обновлениям платформы.

Разберем, почему это удобно:

Итоговые рекомендации по выбору способа

  1. Если объем данных небольшой и нужно быстрое решение — используйте COM-соединение. Это просто в реализации, не требует внешних инструментов и легко автоматизируется регламентными заданиями.
  2. Если базы планируется развивать и связывать в сложную систему — смотрите в сторону КД3 или разработки собственного HTTP-сервиса.
  3. Всегда используйте расширения конфигурации для написания кода обмена. Это позволит вам беспрепятственно обновлять типовые конфигурации КА и БП в будущем, не боясь «сломать» обмен.

Проанализировав ситуацию, мы рекомендуем начать с настройки типового обмена, а если он не покрывает ваши потребности, использовать COM-соединение как самый доступный способ для баз, расположенных на одном сервере.

← На главную