"УОДXML" и кд 2.0

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

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


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

Спасибо заранее!
Вознаграждение за ответ
Показать полностью
Найденные решения
37. Notella 32 14.12.20 12:14 Сейчас в теме +0.52 $m
Обработка.ВыполнитьВыгрузку() - экспортая процедура из обработки. Перед ее выполнением надо пройтись по ТаблицаПравилВыгрузки в цикле и подставить в поле СсылкаНаУзелОбмена (реквизит табличной части) тот узел обмена, который нужен
Intercititude; +1 Ответить
14. Notella 32 12.12.20 16:31 Сейчас в теме +0.57 $m
(12)
Прикрепленные файлы:
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ab_initio 95 12.12.20 13:42 Сейчас в теме
По первому вопросу не очень понятно что вы хотите сделать. Узел найти программно?

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

2) Подскажите пожалуйста гд другие обработки найти(сам не смог), либо как в этой обработке запросом делать(желательно готовый код) ? К сожалению не работал с узлами и не знаю всех методов.. С запросом ещё разберусь. Но в каком месте описывать это..
И разве вот период, который на скрине( дат начала и дат конца) не должны накладываться на узел при выгрузке ?
Прикрепленные файлы:
4. Notella 32 12.12.20 15:23 Сейчас в теме
ПланыОбмена.УдалитьРегистрациюИзменений(УзелДляОбмена);
5. Intercititude 12.12.20 15:38 Сейчас в теме
6. Notella 32 12.12.20 15:40 Сейчас в теме
(5)ПланыОбменаМенеджер (ExchangePlansManager)
УдалитьРегистрациюИзменений (DeleteChangeRecords)
Синтаксис:
УдалитьРегистрациюИзменений(<Узлы>, <Данные>)
Параметры:
<Узлы> (обязательный)
Тип: ПланОбменаСсылка.<Имя плана обмена>, Массив.
Одиночное значение типа ПланОбменаСсылка.<Имя плана обмена> или массив таких значений, показывающие для каких узлов удаляются записи регистрации изменений.
<Данные> (необязательный)
Тип: Метаданные, Неопределено, УдалениеОбъекта, Число; <Данные>.
Значением данного параметра может быть объект метаданных, объект, представляющий данные, хранимые в базе данных, такой как документ, элемент справочника, счет бухгалтерского учета, менеджер записи константы, набор записей регистра и т. п., ссылка на объект базы данных, а также Неопределено.
Если указан объект метаданных, то записи регистрации изменений будут удалены для всех элементов данных, относящихся к указанному объекту метаданных. Объект метаданных должен входить в состав планов обмена всех узлов, указанных в первом параметре.
Если указан УдалениеОбъекта, то удаление записи регистрации изменений выполняется для объекта базы данных, на который "указывает" ссылка, содержащаяся в объекте УдалениеОбъекта.
Если указан объект представляющий данные, хранимые в базе данных, или ссылка, то записи регистрации изменений будут удалены только для указанных данных. Объект метаданных, соответствующий данным должен входить в состав всех планов обмена всех узлов, указанных в первом параметре.
Если указано Неопределено или не указан, то в качестве первого параметра может быть указан только одиночный узел. И в этом случае записи регистрации изменений будут удалены для всех объектов, метаданные которых входят в состав плана обмена, к которому относится узел, указанный в качестве первого параметра.
Если в качестве первого параметра указан одиночный узел, то в параметре может быть указан номер сообщения. В этом случае метод УдалитьРегистрациюИзменений удаляет из всех таблиц регистрации изменений все записи относящиеся к указанному узлу, у которых номер сообщения меньше или равен значению второго параметра.
Значение по умолчанию: Неопределено.
Описание:
Удаляет записи регистрации изменений одного или группы элементов данных для одного или нескольких узлов планов обмена.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер).
Пример:
// Пример 1

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

// Пример 2

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

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

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

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

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

Синтаксис-помощник
7. Intercititude 12.12.20 15:42 Сейчас в теме
(6) РукаЛицо. Я имею ввиду, как программное удаление регистрации поможет в моих вопросах?
8. Notella 32 12.12.20 15:51 Сейчас в теме
В обработке "Регистрация изменения для обмена" не пойму как зарегестрировать объекты(док."Реализации") по определенному периоду ? Мне необходимо регистрация не всех документо. - Программно или интерактивно?
9. Intercititude 12.12.20 16:13 Сейчас в теме
(8) Прогарммно. Вы предлагаете зарегистрировать все документы "Реализации". А после удалить ненужные ?
А если допустим документов миллион с лишним ?
10. Notella 32 12.12.20 16:18 Сейчас в теме
(9)Нет конечно же. Я просто уточняю задачу. Регистрацию делать будем интерактивно или программно?
11. Notella 32 12.12.20 16:19 Сейчас в теме
От этого будет зависеть ответ на Ваш вопрос
12. Intercititude 12.12.20 16:20 Сейчас в теме
Один раз за период я зарегистрировать хочу руками ( первая выгрузка всех реализации за период). Дальше уже программно будет сниматься/удаляться автоматически.

Вот я хочу и понять, как зарегистрировать руками один раз за период проще, без всяких запросов. Если проще никак, то пример не могу найти..
14. Notella 32 12.12.20 16:31 Сейчас в теме +0.57 $m
(12)
Прикрепленные файлы:
15. Notella 32 12.12.20 16:32 Сейчас в теме
16. Intercititude 12.12.20 16:33 Сейчас в теме
(15) Это Ваша самописная вн.обработка ?
13. Notella 32 12.12.20 16:22 Сейчас в теме
17. Notella 32 12.12.20 16:35 Сейчас в теме
Нет, типовая - регистрация изменений для обмена. Есть на ИТСе. Ну и в составе конфы
Прикрепленные файлы:
Intercititude; +1 Ответить
18. Intercititude 12.12.20 16:36 Сейчас в теме
(17) То есть достаточно в запросе выбрать все проведенные реализации и без пометки удаления. Далее установить параметр на даты и всё

Сам посмотрел на обработки. Спасибо, похоже это то что надо, не знал что там такая функция есть.
19. Notella 32 12.12.20 16:39 Сейчас в теме
20. Notella 32 12.12.20 16:40 Сейчас в теме
(18) Условия ваши (это к теме проведенности и мометок удаления) я об этом могу только догадываться ))))
22. Intercititude 12.12.20 16:41 Сейчас в теме
(20)А по первому вопросу подскажете ?
23. Notella 32 12.12.20 16:46 Сейчас в теме
(22)Мне не очень понятен вопрос. Попытайтесь сформулировать еще раз задачу. Я и второй вопрос сразу не понял
24. Intercititude 12.12.20 17:12 Сейчас в теме
(23)Извиняюсь.
в (3) я приложил скиншот. Там я вручную загружаю план обмена. Заполняется табличная часть "Реализацией".
Далее напротив выбираю план обмена - далее узел и после только выгружаю ориентируясь на узел.
Собственно, как это сделать программно -((с) ...напротив выбираю план обмена - далее узел..)
25. Notella 32 12.12.20 17:17 Сейчас в теме
(24) Это надо сделать в КД. Событие должно обрабатываться при загрузке правил обмена. Загружаем правила, находим в БД нужный план обмена и устанавливаем его для всех правил.
Другой вариант можно в параметры добавить. И тоже на уровне КД написать алгоритм.
Intercititude; +1 Ответить
26. Intercititude 12.12.20 17:20 Сейчас в теме
(25) При загрузке в ПКО ?
А можно код, или ссылку где это подглядеть. Опыта мало..
21. Notella 32 12.12.20 16:40 Сейчас в теме
27. Notella 32 12.12.20 17:22 Сейчас в теме
Щас попытаюсь скрин сделать
28. Notella 32 12.12.20 17:28 Сейчас в теме
Здесь передача в параметр
Прикрепленные файлы:
Intercititude; +1 Ответить
29. Intercititude 12.12.20 17:36 Сейчас в теме
(28)Не понимаю...
То есть здесь, надо найти по коду мой узел.
Передать его в параметр?
А после что делать..
30. Notella 32 12.12.20 18:41 Сейчас в теме
(29) А УОД есть возможность править?
32. Intercititude 12.12.20 22:11 Сейчас в теме
(30)не уверен. Скорее да нежели нет.
Разве нельзя просто обратиться к уод и привязать этот узел программно ?
33. Intercititude 13.12.20 12:27 Сейчас в теме
(31)Не нашёл ответа в статье..
34. Intercititude 14.12.20 01:17 Сейчас в теме
(31) Точнее, если выгружать этим способом. Выборка выгружается.
НО! После выгрузки номер сообщения +1 не ставится. Как это исправить ?
35. Notella 32 14.12.20 11:38 Сейчас в теме
Я бы сделал решение вашей задачи так: После загрузки правил обмена в модуле УОД сделал бы проверку на то, какие правила грузятся и при выполнении условия, что именно это те правила - подставил в ТаблицаПравилВыгрузки узел из параметров
36. Intercititude 14.12.20 11:51 Сейчас в теме
(35) Так я так и хочу,но подскажите кодом то как передать в ТЧ узел.. у меня не получилось это сделать,я поэтому и создал тему ..

Ааа или вы имеете ввиду менять саму уод? Может тогда не типовую использовать,а как ВН обработку например. Но без помощи я не обойдусь все равно..
37. Notella 32 14.12.20 12:14 Сейчас в теме +0.52 $m
Обработка.ВыполнитьВыгрузку() - экспортая процедура из обработки. Перед ее выполнением надо пройтись по ТаблицаПравилВыгрузки в цикле и подставить в поле СсылкаНаУзелОбмена (реквизит табличной части) тот узел обмена, который нужен
Intercititude; +1 Ответить
39. Intercititude 14.12.20 12:32 Сейчас в теме
(37) То есть прямо в УОД в модуле объекта как только попадут в процедуру "ВыполнитьВыгрузку" пройтись циклом и заполнить ?

Далее уже эту уод добавить во внешние обработки и обращаться к ней по вн.идентификатору?
40. Notella 32 14.12.20 12:37 Сейчас в теме
(39) Решение за Вами - как сделать. Вариантов множество и Ваш вариант имеет место быть. УОД - не менянтся, поэтому при обновлении конфигурациий косяков не будет
41. Intercititude 14.12.20 12:39 Сейчас в теме
(40) Просто возможно уже кто то использует программное обращение к УОД . Поэтому думаю лучше сделать копию обработки на всякий..Буду пробывать сейчас. Спасибо.
42. Notella 32 14.12.20 12:42 Сейчас в теме
(41) Даже если так - не забудьте проверку на то, какие правила скармливаются в УОД
43. Intercititude 14.12.20 13:11 Сейчас в теме
(42) Это как ? Просто проврка по имени правил?
44. Notella 32 14.12.20 13:14 Сейчас в теме
45. Intercititude 14.12.20 14:32 Сейчас в теме
(42) Ещё раз по проверке.
ИмяФайлаПравилОбмена это строка с путем же просто к xml.
А как то могу по идентификатору какому то это определять? Чтобы совсем класс.
46. Notella 32 14.12.20 14:37 Сейчас в теме
(45)Я бы кинул значение в параметры. Они доступны после загрузки правил.
Сначала грузим правила, затем обращемся к параметрам и находим или не находим соответствующий параметр и помещенное туда значение. Если вы архитектор правил - помещайте туда свое уникальное значение.
Intercititude; +1 Ответить
38. Notella 32 14.12.20 12:17 Сейчас в теме
Или тут

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

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот