← Назад к вопросам

Обмен между УТ и БП с нестандартными объектами

2.7 Senior🔥 81 комментариев
#Интеграции и обмены#Конфигурации и типовые#Стандарты разработки

Условие

Настройте обмен данными между конфигурациями "Управление торговлей" (УТ) и "Бухгалтерия предприятия" (БП) с учётом нестандартных доработок.

Требования:

  1. Синхронизация справочника контрагентов с дополнительными реквизитами
  2. Передача документов реализации с нетиповыми табличными частями
  3. Обработка конфликтов при двунаправленном обмене
  4. Логирование ошибок обмена

Задание

Опишите:

  • Какие правила конвертации нужно создать
  • Как обрабатывать нестандартные реквизиты
  • Стратегию разрешения конфликтов

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Обмен между УТ и БП с нестандартными объектами

1. Правила конвертации

Создайте следующие таблицы:

а) Справочник отображений объектов (Справочник.ОтображениеУтБп):

  • УтОбъект (Ссылка на объект УТ)
  • БпОбъект (Ссылка на объект БП)
  • ХешДанных (для обнаружения изменений)
  • ВремяСинхронизации

б) Регистр ошибок обмена:

  • Дата
  • ТипОшибки
  • Описание
  • Исток (УТ/БП)
  • Получатель
  • Разрешено

2. Обработка нестандартных реквизитов

Процедура ОбработатьКонтрагента(УтК, БпК)
    БпК.Наименование = УтК.Наименование;
    БпК.ИНН = УтК.ИНН;
    
    // Дополнительные реквизиты
    Если НайтиДопРеквизит("ЛимитКредита") <> Неопределено Тогда
        НовойРеквизит = БпК.ДополнительныеРеквизиты.Добавить();
        НовойРеквизит.Свойство = НайтиДопРеквизит("ЛимитКредита");
        НовойРеквизит.Значение = УтК.ЛимитКредита;
    КонецЕсли;
    
    БпК.Записать();
КонецПроцедуры

Процедура ОбработатьРеализацию(УтД, БпД)
    БпД.Партнер = НайтиЭквивалент(УтД.Контрагент);
    БпД.Товары.Очистить();
    
    Для каждого СтрокаУт Из УтД.ТоварыУслуги Цикл
        СтрокаБп = БпД.Товары.Добавить();
        СтрокаБп.Номенклатура = НайтиЭквивалент(СтрокаУт.Номенклатура);
        СтрокаБп.Количество = СтрокаУт.Количество;
        СтрокаБп.Цена = СтрокаУт.Цена;
        
        // Нестандартные данные
        Если БпД.Товары.Колонки.Найти("КомиссияПроцент") <> Неопределено Тогда
            СтрокаБп.КомиссияПроцент = СтрокаУт.КомиссияПроцент;
        КонецЕсли;
    КонецЦикла;
    
    БпД.Записать();
КонецПроцедуры

3. Стратегия разрешения конфликтов

Трёхуровневый подход:

  1. Автоматическое разрешение — по приоритету (УТ > БП)
  2. Хеш-сравнение — если хеши совпадают, данные синхронны
  3. Ручное разрешение — критичные конфликты требуют одобрения
Процедура ОбработатьКонфликт(УтДн, БпДн, Стратегия)
    Выбор Стратегия
        Случай "УтПриоритет"
            БпДн = УтДн;
        Случай "БпПриоритет"
            УтДн = БпДн;
        Случай "ПоследнийВыигрывает"
            Если УтДн.ОтметкаВремени > БпДн.ОтметкаВремени Тогда
                БпДн = УтДн;
            Иначе
                УтДн = БпДн;
            КонецЕсли;
        Случай "МанипуляцияПользователя"
            ЗаписатьКонфликт(УтДн, БпДн);
    КонецВыбора;
КонецПроцедуры

Логирование ошибок

Все ошибки должны логироваться в регистр сведений с информацией об исходе и способе разрешения.

Обмен между УТ и БП с нестандартными объектами | PrepBro