8.х ОБМЕН Проблема при конвертации из БП в УТ

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем ХочуСпец, 12 мар 2009.

  1. TopicStarter Overlay
    ХочуСпец
    Offline

    ХочуСпец Опытный в 1С

    Регистрация:
    17 ноя 2008
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
    При конвертации из БП8 в УТ8 использую типовой план обмен, но работае он немного некоретно. Попробую объяснить почему:
    Для правила конвертации КОНТРАГЕНТЫ в типовом плане обмена добавлены два правила конвертации св-в ПОКУПАТЕЛЬ, ПОСТАВЩИК (источник у этих св-в не заполнен, так как в БП этих галочек у контрагента нет).
    Для этих правил конвертации св-в в обработчике ПЕРЕД ВЫГРУЗКОЙ добавлены соответственно:

    для ПОКУПАТЕЛЬ

    Код:
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Контрагент", Источник.Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 1
    |	ДоговорыКонтрагентов.Ссылка
    |ИЗ
    |	Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
    |ГДЕ
    |	ДоговорыКонтрагентов.Владелец = &Контрагент
    |	И (ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем)
    |	ИЛИ ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СКомиссионером))
    |";
    
    РезультатЗапроса = Запрос.Выполнить();
    Значение = НЕ РезультатЗапроса.Пустой();
    

    для ПОСТАВЩИК:

    Код:
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Контрагент", Источник.Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 1
    |	ДоговорыКонтрагентов.Ссылка
    |ИЗ
    |	Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
    |ГДЕ
    |	ДоговорыКонтрагентов.Владелец = &Контрагент
    |	И (ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПоставщиком)
    |	ИЛИ ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СКомитентом))
    |";
    
    РезультатЗапроса = Запрос.Выполнить();
    Значение = НЕ РезультатЗапроса.Пустой();
    
    В базе БП существует контрагент, а у него один договор с видом С ПОСТАВЩИКОМ.
    В базе УТ же существует тот же контрагент (синхронизация по ИНН) тоже с одним договором но другого вида: С ПОКУПАТЕЛЕМ.
    Логично что при выгрузке/загрузке В базе УТ у данного контрагента должен добавиться договор с видом: С ПОСТАВЩИКОМ и проставится обе галочки ПОКУПАТЕЛЬ и ПОСТАВЩИК, но в реальности в УТ у этого контрагента галочка ПОКУПАТЕЛЬ убирается, а галочка ПОСТАВЩИК проставляется! Если посмотреть на вышеуказанный код, то вполне все логично: при выгрузке система находит договор с видом: С ПОСТАВЩИКОМ галочку ПОКУПАТЕЛЬ "убирает", а галочку ПОСТАВЩИК "проставляет".
    Прошу совета как изменить правила, чтобы для данного примера проставились и ПОСТАВЩИК и ПОКУПАТЕЛЬ!
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Так ответ ПОЧЕМУ заключается в:
    Код:
    Значение = НЕ РезультатЗапроса.Пустой();
    
  3. TopicStarter Overlay
    ХочуСпец
    Offline

    ХочуСпец Опытный в 1С

    Регистрация:
    17 ноя 2008
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
    Извините, если честно не понял (
  4. TopicStarter Overlay
    ХочуСпец
    Offline

    ХочуСпец Опытный в 1С

    Регистрация:
    17 ноя 2008
    Сообщения:
    53
    Симпатии:
    0
    Баллы:
    26
    Здесь ведь проблема в том что нельзя обратиться из КД к базе данных приемника
  5. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Событие ПРИ ЗАГРУЗКЕ никто не отменял

Поделиться этой страницей