8.х ОБМЕН КД 2: ВыгрузитьПоПравилу - можно ли получить ссылку на результат?

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

  1. TopicStarter Overlay
    SirStefan
    Offline

    SirStefan Опытный в 1С

    Регистрация:
    20 апр 2010
    Сообщения:
    79
    Симпатии:
    0
    Баллы:
    26
    Делаю выгрузку произвольным алгоритмом через ВыгрузитьПоПравилу(). Но нюанс в том, что выгружается несколько элементов и в один нужно передать в качестве реквизита ссылку на второй.
    Возможно ли реализовать что-то похожее на это?
    Код:
    НАШСПР = ВыгрузитьПоПравилу(...)
    ВхДанные = СоздатьОбъект("СписокЗначений");
    ВхДанные.ДобавитьЗначение(НАШСПР, "Владелец");
    ВыгрузитьПоПравилу(,, ВхДанные,, "Правило2");
    
    
  2. Andy13
    Offline

    Andy13 Опытный в 1С

    Регистрация:
    1 мар 2010
    Сообщения:
    244
    Симпатии:
    2
    Баллы:
    29
    Теоретически возможно, но не так как нарисовано...
    Практически - оно того не стоит.
    Не тут надо владельца подсовывать.
    Я делал следующим образом:
    1. "Перед выгрузкой" в Конвертации находил нужный элемент справочника и запихивал его в "Параметры".
    2. В "При выгрузке" ПКС "Родитель" нужного ПКО просто подменяю значение на значение из параметров.
    3. Всё...
  3. TopicStarter Overlay
    SirStefan
    Offline

    SirStefan Опытный в 1С

    Регистрация:
    20 апр 2010
    Сообщения:
    79
    Симпатии:
    0
    Баллы:
    26
    "Владелец" я поставил просто для примера, проблемка в другом: у меня нет нужного элемента справочника, он создается только в приемнике на основании неких данных (в основном текстовых, и по которым нельзя сделать поиск). Нужно в следующее правило передать ссылку на этот элемент (которого по сути еще нет - он есть только в правилах). По идее правило на него уже создано и записано в XML, есть уникальная ссылка на этот, еще не созданный, элемент. Значит каким-либо образом возможно передать его в другие реквизитя для заполнения как ссылку?

    Т.е. если передавать через параметр - я смогу например передать только наименование (к примеру код и наименование неуникальны), а не ссылку на конкретный созданный элемент.
  4. Andy13
    Offline

    Andy13 Опытный в 1С

    Регистрация:
    1 мар 2010
    Сообщения:
    244
    Симпатии:
    2
    Баллы:
    29
    Понятно.
    Тогда надо все действия выполнять при загрузке.
    1. "Перед загрузкой данных" Конвертации ищем или создаем нужный элемент, помещаем в параметры.
    2. В "После загрузки" ПКО (элемент создан но ещё не записан) оцениваем необходимость изменения (к примеру сменить владельца или группу), и вносим изменения используя элемент из параметров.

    Так я складывал переносимую из УТ в БП номенклатуру в одну папочку - "Товары из УТ". Перед загрузкой данных искал эту папочку, если не находил, то создавал, помещал ссылку в параметры. В "после загрузки" если у элемента пустой родитель(корень) подставлял туда ссылку из параметров. И всё дерево номенклатуры УТ оказывалось в одной папочке в БП.
  5. TopicStarter Overlay
    SirStefan
    Offline

    SirStefan Опытный в 1С

    Регистрация:
    20 апр 2010
    Сообщения:
    79
    Симпатии:
    0
    Баллы:
    26
    Хммм. Для > 50000 позиций делать параметры мне кажется не вариант :(
  6. Andy13
    Offline

    Andy13 Опытный в 1С

    Регистрация:
    1 мар 2010
    Сообщения:
    244
    Симпатии:
    2
    Баллы:
    29
    То есть для каждого элемента свой алгоритм? В том случае что я описал, в параметры помещается одна единственная ссылка.
    Ну если для каждого элемента свой алгоритм, тогда пихай всё в"После загрузки", рисуй алгоритм, не забудь галочку поставить "Используется при загрузке".
    В случае, если всё таки хочется при выгрузке всё проставить, то делать это надо в непосредственно в обработчиках ПКО. Несуществующие элементы создаются просто. Делаешь ПКО с заполненой правой частью. Ставишь - "получить из входящих данных", соответственно при обращении к ним делаешь структуру исходящих данных, передаешь их ПКО.
  7. TopicStarter Overlay
    SirStefan
    Offline

    SirStefan Опытный в 1С

    Регистрация:
    20 апр 2010
    Сообщения:
    79
    Симпатии:
    0
    Баллы:
    26
    Я так и пытался делать. Но не во всех случаях можно легкоо реализовать.
    Собственно тему завел из-за возвращаемого значения у функции ВыгрузитьПоПравилу()
    // Возвращаемое значение: xml-узел ссылки или значение приемника
    По сути раз возвращает узел ссылки - значит как то это можно использовать в других правилах, как ссылку на планируемый элемент. Вот только как ее передать другим?

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