8.х ОБМЕН КД 2: Создание вложенных правил

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем SirStefan, 16 сен 2010.

  1. TopicStarter Overlay
    SirStefan
    Offline

    SirStefan Опытный в 1С

    Регистрация:
    20 апр 2010
    Сообщения:
    79
    Симпатии:
    0
    Баллы:
    26
    Подскажите как перенести из 7.7 в КА КонтактныхЛицКонтрагентов? нигде не могу найти пример правил. Суть: есть
    ПКО РС.КонтактнаяИнформация
    Объект (в данном случае ссылка на Спр.КонтактныеЛицаКонтрагентов)
    Вид
    Тип
    Представление

    ПКО Спр.КонтактныеЛицаКонтрагентов
    КонтактноеЛицо (ссылка на Спр.КонтактныеЛица)
    Владелец
    Наименование

    ПКО Спр.КонтактныеЛица
    Наименование
    Код

    Т.е. При выгрузке контактной инфы нужно, чтобы сперва создался объект, а при его создании, чтобы сперва сформировалось контактное лицо.

    ПВД РС.КонтактнаяИнформация выглядит примерно так
    Код:
    Спр = СоздатьОбъект("Справочник.Контрагенты");
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент() = 1 Цикл
    Если Спр.ЭтоГруппа() = 1 Тогда Продолжить КонецЕсли;
    Если (СокрЛП(Спр.Телефон) <> "") Тогда
    ВходящиеДанные = СоздатьОбъект("СписокЗначений");
    ВходящиеДанные.ДобавитьЗначение(Спр.ТекущийЭлемент(), "Владелец");
    ВходящиеДанные.ДобавитьЗначение(Спр.Код, "Код");
    ВходящиеДанные.ДобавитьЗначение(Спр.Наименование, "Наименование");
    ВходящиеДанные.ДобавитьЗначение("МобильныйТелефонКонтактногоЛицаКонтрагента", "Вид");
    ВходящиеДанные.ДобавитьЗначение("Телефон", "Тип");
    ВходящиеДанные.ДобавитьЗначение(Спр.Телефон, "Представление");
    ВыгрузитьПоПравилу(,, ВходящиеДанные,, "РС_КонтактнаяИнформация");
    КонецЕсли;
    КонецЦикла;
    
    
    У всех элементов стоят галочки "Получить из входящих данных"
    У "Объект" и "КонтактноеЛицо" в правиле "Перед выгрузкой" прописано
    Код:
    Значение = 1;
    ИсходящиеДанные = ВходящиеДанные;
    
    Но не работает. Если не ставить "Значение = 1;" - то объект вообще не создает, в xml - пусто. Если так, как указал выше - в xml есть все данные. Но загружает только 1 элемент, хотя пишет, что загружены все.

    Что делаю не так?

    P.S. Случай когда Объект вида "Спр.Контрагент" и на него можно просто передать ссылку работает прекрасно. А вот тут, когда предварительно нужно создать эти элементы - засада :angry:
  2. Andy13
    Offline

    Andy13 Опытный в 1С

    Регистрация:
    1 мар 2010
    Сообщения:
    244
    Симпатии:
    2
    Баллы:
    29
    А вот не надо ничего писать в обработчиках. ВходящиеДанные передаются в ПКО (ПКС) без всяких дополнительных указаний.
  3. TopicStarter Overlay
    SirStefan
    Offline

    SirStefan Опытный в 1С

    Регистрация:
    20 апр 2010
    Сообщения:
    79
    Симпатии:
    0
    Баллы:
    26
    Ну например без "Значение = 1;" у меня правило вообще не отрабатывает. А в некоторые подправила нужно передавать измененные ВходящиеДанные. Как быть в таком случае?
  4. Andy13
    Offline

    Andy13 Опытный в 1С

    Регистрация:
    1 мар 2010
    Сообщения:
    244
    Симпатии:
    2
    Баллы:
    29
    Хм, посмотрел внимательно. Удивился. Возьми типовые правила переноса и посмотри как там сделано.
    Сделано практически аналогично, только без путаницы входящие/исходящие. Убери это. И не забыл правила конвертации в ПКС подставить?
    Вот к примеру перенос ТиС - УТ
    Код:
    ИсходящиеДанные = СоздатьОбъект("СписокЗначений");
    ИсходящиеДанные.ДобавитьЗначение(Источник, "Объект");
    ИсходящиеДанные.ДобавитьЗначение("Телефон",  "Тип");
    ИсходящиеДанные.ДобавитьЗначение(Вид,  "Вид");
    ИсходящиеДанные.ДобавитьЗначение(Телефон,  "Представление");
    ИсходящиеДанные.ДобавитьЗначение("Контрагенты","Справочник");
    ВыгрузитьПоПравилу(,, ИсходящиеДанные,, "КонтактнаяИнформация");
    
    
    В ПКО "КонтактнаяИнформация" заполнена только правая часть, всё из входящих данных.
    В "Перед выгрузкой" ПКС "Объект" -
    Код:
    ИмяПКО = ВходящиеДанные.Получить("Справочник");
    
    
    Т.е. правило конвертации для ПКС подставили.
    Всё работает. Проверено.

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