Как реализовать нестандартный обмен данными между УТ 11 и БП 3.0 с визуализацией расхождений?

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

Стандартный механизм обмена данными между 1С:Управление торговлей 11 (УТ) и 1С:Бухгалтерия предприятия 3.0 (БП), основанный на использовании Enterprise Data (ED), не всегда удовлетворяет требованиям бизнеса. Часто возникают задачи, когда бухгалтеру требуется не просто автоматический перенос всех данных, а интерактивный инструмент: с визуализацией списка документов, возможностью выбора конкретных позиций для загрузки и наглядным отображением расхождений между уже существующими документами в обеих базах.

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

Метод 1: Использование COM-соединения для интерактивной визуализации

Традиционный подход, часто применяемый опытными разработчиками, заключается в использовании COM-соединения (V83.COMConnector). Этот метод позволяет из базы-приемника (БП) напрямую обращаться к базе-источнику (УТ), выполнять там запросы и получать данные в режиме реального времени.

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

  1. Установка соединения: В обработке на стороне БП создается объект COMConnector, через который инициируется сеанс в УТ.
  2. Получение списка документов: Мы выполняем запрос в базе УТ через созданное соединение. Получаем метаданные: номера, даты, суммы и ссылки.
  3. Сопоставление данных: На стороне БП мы ищем аналогичные документы (например, по ГУИД или по номеру и дате) и выводим их в таблицу значений с колонками "Сумма в УТ" и "Сумма в БП".
  4. Визуализация: Подсвечиваем строки, где суммы или ключевые реквизиты расходятся, предоставляя пользователю возможность отметить нужные документы галочками.

Рассмотрим пример кода для инициализации соединения и выполнения простейшего запроса через COM:


// Инициализация соединения
ПараметрыСоединения = "Srvr=""ServerName"";Ref=""TradeBase"";Usr=""Admin"";Pwd=""Password"";";
Коннектор = Новый COMОбъект("V83.COMConnector");
Попытка
    БазаИсточник = Коннектор.Connect(ПараметрыСоединения);
Исключение
    Сообщить("Ошибка подключения: " + ОписаниеОшибки());
    Возврат;
КонецПопытки;

// Выполнение запроса в базе источнике
ЗапросУТ = БазаИсточник.NewObject("Запрос");
ЗапросУТ.Текст = 
    "ВЫБРАТЬ
    |   РеализацияТоваровУслуг.Ссылка,
    |   РеализацияТоваровУслуг.Номер,
    |   РеализацияТоваровУслуг.Дата,
    |   РеализацияТоваровУслуг.СуммаДокумента
    |ИЗ
    |   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    |   РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон";
    
ЗапросУТ.УстановитьПараметр("ДатаНач", ДатаНачала);
ЗапросУТ.УстановитьПараметр("ДатаКон", ДатаОкончания);
РезультатЗапроса = ЗапросУТ.Выполнить().Выгрузить();

Важный нюанс: При работе с УТ 11 через COM следует помнить о разделении сущностей Партнеры и Контрагенты. В УТ 11 управленческий учет ведется по партнерам, а юридический — по контрагентам. При загрузке в БП необходимо четко сопоставлять данные именно со справочником контрагентов, иначе возникнет дублирование нормативно-справочной информации (НСИ).

Метод 2: Гибридный подход через Enterprise Data (ED)

Многие разработчики критикуют COM за низкую скорость при больших объемах данных и "прожорливость" в плане лицензий. Альтернативным и более современным подходом является использование формата Enterprise Data, но с кастомной обработкой визуализации.

Проанализируем ситуацию: стандартный обмен работает по принципу "выгрузил всё — загрузил всё". Чтобы сделать его интерактивным, мы можем реализовать следующую схему:

  1. Выгрузка метаданных: Из УТ выгружается облегченный XML-файл (или JSON), содержащий только заголовки документов и их контрольные суммы.
  2. Загрузка в интерактивную форму: В БП создается обработка, которая читает этот файл и строит дерево документов.
  3. Точечный запрос данных: При выборе пользователем конкретного документа, БП отправляет запрос в УТ (например, через HTTP-сервис) на получение полной структуры XDTO этого объекта.
  4. Программная загрузка: Мы используем типовые модули БСП для разбора формата Enterprise Data, что гарантирует правильное заполнение всех движений и реквизитов.

Этот метод позволяет избежать "изобретения велосипеда" при заполнении табличных частей сложных документов, таких как РеализацияТоваровУслуг или ПоступлениеТоваровУслуг, сохраняя при этом полный контроль над процессом со стороны пользователя.

Метод 3: Использование тестовой транзакции для сравнения

Если необходимо реализовать визуализацию расхождений максимально быстро, можно рассмотреть метод "тестовой загрузки". Разберем его по шагам:

  1. Открываем транзакцию в базе БП.
  2. Запускаем типовой механизм загрузки данных из файла или через COM.
  3. После загрузки объекта в память (но до фиксации транзакции) программно сравниваем реквизиты нового объекта и того, что уже был в базе.
  4. Формируем отчет о расхождениях (например, "Изменилась ставка НДС" или "Сумма увеличилась на 100 руб.").
  5. Отменяем транзакцию (ОтменитьТранзакцию()), чтобы не вносить изменения в базу без подтверждения пользователя.
  6. Выводим результат сравнения на форму.

Такой подход позволяет использовать мощь типовых правил конвертации данных (КД 3.0), не внедряясь в сложную логику формирования документов вручную.

Технические сложности при работе с УТ 11

Выясним причины, по которым простая адаптация старых обменов (например, из УТ 10.3) под УТ 11 не всегда эффективна:

Для качественной реализации обмена рекомендуется активно использовать функции БСП. Например, для сопоставления объектов полезно задействовать механизмы из подсистемы ОбменДанными, в частности, работу с уникальными идентификаторами и регистрацию изменений на узлах обмена.

Подводя итог, можно сказать: если ваша цель — создать максимально прозрачный и управляемый инструмент для бухгалтера, лучшим выбором будет создание интерактивной панели управления обменом в БП 3.0. Она может работать через COM для быстрого получения списков, но саму загрузку объектов лучше делегировать типовым механизмам Enterprise Data или тщательно отлаженным правилам, учитывающим всю специфику метаданных современных версий 1С.

← На главную