Сделал автоматический обмен между базами из ОФ в УФ ( выгружаются реализации в другой документ).
Использовал кд 2.0 и УОДXML. Так же это всё дело хочу прикрепить к "Плану обмена" и его "узлу".

Появились два вопроса:
1) Как в УОДXML внизу в табличной части где выбирается узел соответствующему объекту метаданных обратиться программно и сделать это кодом? Анализ обработки не помог. Сейчас сделано так:

```1c
    Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать();
    Обработка.РежимОбмена = "Выгрузка";
    Обработка.ВыводВОкноСообщенийИнформационныхСообщений = Ложь;
    Обработка.АрхивироватьФайл = Истина;
    Обработка.ИмяФайлаПравилОбмена = "ПравилаОбменаДанными.xml";
    Обработка.ИмяФайлаОбмена = "данные.zip";
    Обработка.ЗагрузитьПравилаОбмена();
    Обработка.ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузки = 2; //удалять выгруженный только
    Обработка.ВыполнитьВыгрузку();
```

2) В обработке "Регистрация изменения для обмена" не пойму как зарегестрировать объекты(док."Реализации") по определенному периоду ? Мне необходимо регистрация не всех документо.

Спасибо заранее!
---
Обработка.ВыполнитьВыгрузку() - экспортая процедура из обработки. Перед ее выполнением надо пройтись по ТаблицаПравилВыгрузки в цикле и подставить в поле СсылкаНаУзелОбмена (реквизит табличной части) тот узел обмена, который нужен
---
По первому вопросу не очень понятно что вы хотите сделать. Узел найти программно?

По второму - в УТ 10 не очень удобно сделана обработка регистрации изменений. Там предлагается или руками объекты выбирать, или запрос написать. Запрос очень просто написать. Но можно здесь на этом ресурсе поискать альтернативные обработки для УТ 10. Уверен, есть более удобные.
---
1) Да, хочу сделать программно подстановку узла к объетку. Точно так ж как я бы сделал это вручную в ТЧ в "УОДXML". После уже выгружать. ( см.скрин)

2) Подскажите пожалуйста гд другие обработки найти(сам не смог), либо как в этой обработке запросом делать(желательно готовый код) ? К сожалению не работал с узлами и не знаю всех методов.. С запросом ещё разберусь. Но в каком месте описывать это..
И разве вот период, который на скрине( дат начала и дат конца) не должны накладываться на узел при выгрузке ?
---
```1c
    ПланыОбмена.УдалитьРегистрациюИзменений(УзелДляОбмена);
```
---
Это что ?
---
ПланыОбменаМенеджер (ExchangePlansManager)
УдалитьРегистрациюИзменений (DeleteChangeRecords)
Синтаксис:
УдалитьРегистрациюИзменений(<Узлы>, <Данные>)
Параметры:
<Узлы> (обязательный)
Тип: ПланОбменаСсылка.<Имя плана обмена>, Массив.
Одиночное значение типа ПланОбменаСсылка.<Имя плана обмена> или массив таких значений, показывающие для каких узлов удаляются записи регистрации изменений.
<Данные> (необязательный)
Тип: Метаданные, Неопределено, УдалениеОбъекта, Число; <Данные>.
Значением данного параметра может быть объект метаданных, объект, представляющий данные, хранимые в базе данных, такой как документ, элемент справочника, счет бухгалтерского учета, менеджер записи константы, набор записей регистра и т. п., ссылка на объект базы данных, а также Неопределено.
Если указан объект метаданных, то записи регистрации изменений будут удалены для всех элементов данных, относящихся к указанному объекту метаданных. Объект метаданных должен входить в состав планов обмена всех узлов, указанных в первом параметре.
Если указан УдалениеОбъекта, то удаление записи регистрации изменений выполняется для объекта базы данных, на который "указывает" ссылка, содержащаяся в объекте УдалениеОбъекта.
Если указан объект представляющий данные, хранимые в базе данных, или ссылка, то записи регистрации изменений будут удалены только для указанных данных. Объект метаданных, соответствующий данным должен входить в состав всех планов обмена всех узлов, указанных в первом параметре.
Если указано Неопределено или не указан, то в качестве первого параметра может быть указан только одиночный узел. И в этом случае записи регистрации изменений будут удалены для всех объектов, метаданные которых входят в состав плана обмена, к которому относится узел, указанный в качестве первого параметра.
Если в качестве первого параметра указан одиночный узел, то в параметре может быть указан номер сообщения. В этом случае метод УдалитьРегистрациюИзменений удаляет из всех таблиц регистрации изменений все записи относящиеся к указанному узлу, у которых номер сообщения меньше или равен значению второго параметра.
Значение по умолчанию: Неопределено.
Описание:
Удаляет записи регистрации изменений одного или группы элементов данных для одного или нескольких узлов планов обмена.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер).
Пример:
// Пример 1

Спр = Справочники.Валюты.НайтиПоКоду("810");
Узел = ПланыОбмена.ПО1.НайтиПоКоду("Офис");
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Спр);

// Пример 2

// Загрузка из файла

// Производим попытку открытия файла

ЧтениеXML = Новый ЧтениеXML;
Попытка
    ЧтениеXML.ОткрытьФайл(ИмяФайла);
Исключение
    Возврат;
КонецПопытки;
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
Если ЧтениеСообщения.Отправитель <> Ссылка Тогда
    // Сообщение предназначено не для этого узла

    ВызватьИсключение "Неверный узел";
КонецЕсли;
// Удаляем регистрацию изменений для узла отправителя сообщения

ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого);

Синтаксис-помощник
---
РукаЛицо. Я имею ввиду, как программное удаление регистрации поможет в моих вопросах?
---
В обработке "Регистрация изменения для обмена" не пойму как зарегестрировать объекты(док."Реализации") по определенному периоду ? Мне необходимо регистрация не всех документо. - Программно или интерактивно?
---
Прогарммно. Вы предлагаете зарегистрировать все документы "Реализации". А после удалить ненужные ?
А если допустим документов миллион с лишним ?
---
Нет конечно же. Я просто уточняю задачу. Регистрацию делать будем интерактивно или программно?
---
От этого будет зависеть ответ на Ваш вопрос
---
Один раз за период я зарегистрировать хочу руками ( первая выгрузка всех реализации за период). Дальше уже программно будет сниматься/удаляться автоматически.

Вот я хочу и понять, как зарегистрировать руками один раз за период проще, без всяких запросов. Если проще никак, то пример не могу найти..
---
Запросом выбрать
---
Это Ваша самописная вн.обработка ?
---
Щас скрин сделаю
---
Нет, типовая - регистрация изменений для обмена. Есть на ИТСе. Ну и в составе конфы
---
То есть достаточно в запросе выбрать все проведенные реализации и без пометки удаления. Далее установить параметр на даты и всё

Сам посмотрел на обработки. Спасибо, похоже это то что надо, не знал что там такая функция есть.
---
Точно
---
Условия ваши (это к теме проведенности и мометок удаления) я об этом могу только догадываться ))))
---
А по первому вопросу подскажете ?
---
Мне не очень понятен вопрос. Попытайтесь сформулировать еще раз задачу. Я и второй вопрос сразу не понял
---
Извиняюсь.
в (3) я приложил скиншот. Там я вручную загружаю план обмена. Заполняется табличная часть "Реализацией".
Далее напротив выбираю план обмена - далее узел и после только выгружаю ориентируясь на узел.
Собственно, как это сделать программно -((с) ...напротив выбираю план обмена - далее узел..)
---
Это надо сделать в КД. Событие должно обрабатываться при загрузке правил обмена. Загружаем правила, находим в БД нужный план обмена и устанавливаем его для всех правил.
Другой вариант можно в параметры добавить. И тоже на уровне КД написать алгоритм.
---
При загрузке в ПКО ?
А можно код, или ссылку где это подглядеть. Опыта мало..
---
*пометок
---
Щас попытаюсь скрин сделать
---
Здесь передача в параметр
---
Не понимаю...
То есть здесь, надо найти по коду мой узел.
Передать его в параметр?
А после что делать..
---
А УОД есть возможность править?
---
не уверен. Скорее да нежели нет.
Разве нельзя просто обратиться к уод и привязать этот узел программно ?
---
http://www.1cmanager.ru/projects/all/wiki/1%D0%A1_%D0%9A%D0%BE%D0%BD%D0%B2%D0%B5%­D1%80%D1%82%D0%B0%D1%86%D0%B8%D1%8F_%D0%B4%D0%B0%D0%BD%D0%BD­%D1%8B%D1%85_2
---
Не нашёл ответа в статье..
---
Точнее, если выгружать этим способом. Выборка выгружается.
НО! После выгрузки номер сообщения +1 не ставится. Как это исправить ?
---
Я бы сделал решение вашей задачи так: После загрузки правил обмена в модуле УОД сделал бы проверку на то, какие правила грузятся и при выполнении условия, что именно это те правила - подставил в ТаблицаПравилВыгрузки узел из параметров
---
Так я так и хочу,но подскажите кодом то как передать в ТЧ узел.. у меня не получилось это сделать,я поэтому и создал тему ..

Ааа или вы имеете ввиду менять саму уод? Может тогда не типовую использовать,а как ВН обработку например. Но без помощи я не обойдусь все равно..
---
Обработка.ВыполнитьВыгрузку() - экспортая процедура из обработки. Перед ее выполнением надо пройтись по ТаблицаПравилВыгрузки в цикле и подставить в поле СсылкаНаУзелОбмена (реквизит табличной части) тот узел обмена, который нужен
---
То есть прямо в УОД в модуле объекта как только попадут в процедуру "ВыполнитьВыгрузку" пройтись циклом и заполнить ?

Далее уже эту уод добавить во внешние обработки и обращаться к ней по вн.идентификатору?
---
Решение за Вами - как сделать. Вариантов множество и Ваш вариант имеет место быть. УОД - не менянтся, поэтому при обновлении конфигурациий косяков не будет
---
Просто возможно уже кто то использует программное обращение к УОД . Поэтому думаю лучше сделать копию обработки на всякий..Буду пробывать сейчас. Спасибо.
---
Даже если так - не забудьте проверку на то, какие правила скармливаются в УОД
---
Это как ? Просто проврка по имени правил?
---
Вполне
---
Ещё раз по проверке.
ИмяФайлаПравилОбмена это строка с путем же просто к xml.
А как то могу по идентификатору какому то это определять? Чтобы совсем класс.
---
Я бы кинул значение в параметры. Они доступны после загрузки правил.
Сначала грузим правила, затем обращемся к параметрам и находим или не находим соответствующий параметр и помещенное туда значение. Если вы архитектор правил - помещайте туда свое уникальное значение.
---
Или тут

Процедура ЗагрузитьПравилаВыгрузки(ПравилаОбмена)

в конце дописать свой алгоритм