Сделал автоматический обмен между базами из ОФ в УФ ( выгружаются реализации в другой документ).
Использовал кд 2.0 и УОДXML. Так же это всё дело хочу прикрепить к "Плану обмена" и его "узлу".
Появились два вопроса:
1) Как в УОДXML внизу в табличной части где выбирается узел соответствующему объекту метаданных обратиться программно и сделать это кодом? Анализ обработки не помог. Сейчас сделано так:
2) В обработке "Регистрация изменения для обмена" не пойму как зарегестрировать объекты(док."Реализации") по определенному периоду ? Мне необходимо регистрация не всех документо.
Спасибо заранее!
Использовал кд 2.0 и УОДXML. Так же это всё дело хочу прикрепить к "Плану обмена" и его "узлу".
Появились два вопроса:
1) Как в УОДXML внизу в табличной части где выбирается узел соответствующему объекту метаданных обратиться программно и сделать это кодом? Анализ обработки не помог. Сейчас сделано так:
Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать();
Обработка.РежимОбмена = "Выгрузка";
Обработка.ВыводВОкноСообщенийИнформационныхСообщений = Ложь;
Обработка.АрхивироватьФайл = Истина;
Обработка.ИмяФайлаПравилОбмена = "ПравилаОбменаДанными.xml";
Обработка.ИмяФайлаОбмена = "данные.zip";
Обработка.ЗагрузитьПравилаОбмена();
Обработка.ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузки = 2; //удалять выгруженный только
Обработка.ВыполнитьВыгрузку();
Показать2) В обработке "Регистрация изменения для обмена" не пойму как зарегестрировать объекты(док."Реализации") по определенному периоду ? Мне необходимо регистрация не всех документо.
Спасибо заранее!
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
По первому вопросу не очень понятно что вы хотите сделать. Узел найти программно?
По второму - в УТ 10 не очень удобно сделана обработка регистрации изменений. Там предлагается или руками объекты выбирать, или запрос написать. Запрос очень просто написать. Но можно здесь на этом ресурсе поискать альтернативные обработки для УТ 10. Уверен, есть более удобные.
По второму - в УТ 10 не очень удобно сделана обработка регистрации изменений. Там предлагается или руками объекты выбирать, или запрос написать. Запрос очень просто написать. Но можно здесь на этом ресурсе поискать альтернативные обработки для УТ 10. Уверен, есть более удобные.
(2) 1) Да, хочу сделать программно подстановку узла к объетку. Точно так ж как я бы сделал это вручную в ТЧ в "УОДXML". После уже выгружать. ( см.скрин)
2) Подскажите пожалуйста гд другие обработки найти(сам не смог), либо как в этой обработке запросом делать(желательно готовый код) ? К сожалению не работал с узлами и не знаю всех методов.. С запросом ещё разберусь. Но в каком месте описывать это..
И разве вот период, который на скрине( дат начала и дат конца) не должны накладываться на узел при выгрузке ?
2) Подскажите пожалуйста гд другие обработки найти(сам не смог), либо как в этой обработке запросом делать(желательно готовый код) ? К сожалению не работал с узлами и не знаю всех методов.. С запросом ещё разберусь. Но в каком месте описывать это..
И разве вот период, который на скрине( дат начала и дат конца) не должны накладываться на узел при выгрузке ?
Прикрепленные файлы:
![](/upload/forum/1b1/1b164b215889e616a72adad74f6e564e.png)
(5)ПланыОбменаМенеджер (ExchangePlansManager)
УдалитьРегистрациюИзменений (DeleteChangeRecords)
Синтаксис:
УдалитьРегистрациюИзменений(<Узлы>, <Данные>)
Параметры:
<Узлы> (обязательный)
Тип: ПланОбменаСсылка.<Имя плана обмена>, Массив.
Одиночное значение типа ПланОбменаСсылка.<Имя плана обмена> или массив таких значений, показывающие для каких узлов удаляются записи регистрации изменений.
<Данные> (необязательный)
Тип: Метаданные, Неопределено, УдалениеОбъекта, Число; <Данные>.
Значением данного параметра может быть объект метаданных, объект, представляющий данные, хранимые в базе данных, такой как документ, элемент справочника, счет бухгалтерского учета, менеджер записи константы, набор записей регистра и т. п., ссылка на объект базы данных, а также Неопределено.
Если указан объект метаданных, то записи регистрации изменений будут удалены для всех элементов данных, относящихся к указанному объекту метаданных. Объект метаданных должен входить в состав планов обмена всех узлов, указанных в первом параметре.
Если указан УдалениеОбъекта, то удаление записи регистрации изменений выполняется для объекта базы данных, на который "указывает" ссылка, содержащаяся в объекте УдалениеОбъекта.
Если указан объект представляющий данные, хранимые в базе данных, или ссылка, то записи регистрации изменений будут удалены только для указанных данных. Объект метаданных, соответствующий данным должен входить в состав всех планов обмена всех узлов, указанных в первом параметре.
Если указано Неопределено или не указан, то в качестве первого параметра может быть указан только одиночный узел. И в этом случае записи регистрации изменений будут удалены для всех объектов, метаданные которых входят в состав плана обмена, к которому относится узел, указанный в качестве первого параметра.
Если в качестве первого параметра указан одиночный узел, то в параметре может быть указан номер сообщения. В этом случае метод УдалитьРегистрациюИзменений удаляет из всех таблиц регистрации изменений все записи относящиеся к указанному узлу, у которых номер сообщения меньше или равен значению второго параметра.
Значение по умолчанию: Неопределено.
Описание:
Удаляет записи регистрации изменений одного или группы элементов данных для одного или нескольких узлов планов обмена.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер).
Пример:
// Пример 1
Спр = Справочники.Валюты.НайтиПоКоду("810");
Узел = ПланыОбмена.ПО1.НайтиПоКоду("Офис");
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Спр);
// Пример 2
// Загрузка из файла
// Производим попытку открытия файла
ЧтениеXML = Новый ЧтениеXML;
Попытка
ЧтениеXML.ОткрытьФайл(ИмяФайла);
Исключение
Возврат;
КонецПопытки;
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
Если ЧтениеСообщения.Отправитель <> Ссылка Тогда
// Сообщение предназначено не для этого узла
ВызватьИсключение "Неверный узел";
КонецЕсли;
// Удаляем регистрацию изменений для узла отправителя сообщения
ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого);
Синтаксис-помощник
УдалитьРегистрациюИзменений (DeleteChangeRecords)
Синтаксис:
УдалитьРегистрациюИзменений(<Узлы>, <Данные>)
Параметры:
<Узлы> (обязательный)
Тип: ПланОбменаСсылка.<Имя плана обмена>, Массив.
Одиночное значение типа ПланОбменаСсылка.<Имя плана обмена> или массив таких значений, показывающие для каких узлов удаляются записи регистрации изменений.
<Данные> (необязательный)
Тип: Метаданные, Неопределено, УдалениеОбъекта, Число; <Данные>.
Значением данного параметра может быть объект метаданных, объект, представляющий данные, хранимые в базе данных, такой как документ, элемент справочника, счет бухгалтерского учета, менеджер записи константы, набор записей регистра и т. п., ссылка на объект базы данных, а также Неопределено.
Если указан объект метаданных, то записи регистрации изменений будут удалены для всех элементов данных, относящихся к указанному объекту метаданных. Объект метаданных должен входить в состав планов обмена всех узлов, указанных в первом параметре.
Если указан УдалениеОбъекта, то удаление записи регистрации изменений выполняется для объекта базы данных, на который "указывает" ссылка, содержащаяся в объекте УдалениеОбъекта.
Если указан объект представляющий данные, хранимые в базе данных, или ссылка, то записи регистрации изменений будут удалены только для указанных данных. Объект метаданных, соответствующий данным должен входить в состав всех планов обмена всех узлов, указанных в первом параметре.
Если указано Неопределено или не указан, то в качестве первого параметра может быть указан только одиночный узел. И в этом случае записи регистрации изменений будут удалены для всех объектов, метаданные которых входят в состав плана обмена, к которому относится узел, указанный в качестве первого параметра.
Если в качестве первого параметра указан одиночный узел, то в параметре может быть указан номер сообщения. В этом случае метод УдалитьРегистрациюИзменений удаляет из всех таблиц регистрации изменений все записи относящиеся к указанному узлу, у которых номер сообщения меньше или равен значению второго параметра.
Значение по умолчанию: Неопределено.
Описание:
Удаляет записи регистрации изменений одного или группы элементов данных для одного или нескольких узлов планов обмена.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер).
Пример:
// Пример 1
Спр = Справочники.Валюты.НайтиПоКоду("810");
Узел = ПланыОбмена.ПО1.НайтиПоКоду("Офис");
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Спр);
// Пример 2
// Загрузка из файла
// Производим попытку открытия файла
ЧтениеXML = Новый ЧтениеXML;
Попытка
ЧтениеXML.ОткрытьФайл(ИмяФайла);
Исключение
Возврат;
КонецПопытки;
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
Если ЧтениеСообщения.Отправитель <> Ссылка Тогда
// Сообщение предназначено не для этого узла
ВызватьИсключение "Неверный узел";
КонецЕсли;
// Удаляем регистрацию изменений для узла отправителя сообщения
ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого);
Синтаксис-помощник
Один раз за период я зарегистрировать хочу руками ( первая выгрузка всех реализации за период). Дальше уже программно будет сниматься/удаляться автоматически.
Вот я хочу и понять, как зарегистрировать руками один раз за период проще, без всяких запросов. Если проще никак, то пример не могу найти..
Вот я хочу и понять, как зарегистрировать руками один раз за период проще, без всяких запросов. Если проще никак, то пример не могу найти..
(23)Извиняюсь.
в (3) я приложил скиншот. Там я вручную загружаю план обмена. Заполняется табличная часть "Реализацией".
Далее напротив выбираю план обмена - далее узел и после только выгружаю ориентируясь на узел.
Собственно, как это сделать программно -((с) ...напротив выбираю план обмена - далее узел..)
в (3) я приложил скиншот. Там я вручную загружаю план обмена. Заполняется табличная часть "Реализацией".
Далее напротив выбираю план обмена - далее узел и после только выгружаю ориентируясь на узел.
Собственно, как это сделать программно -((с) ...напротив выбираю план обмена - далее узел..)
(24) Это надо сделать в КД. Событие должно обрабатываться при загрузке правил обмена. Загружаем правила, находим в БД нужный план обмена и устанавливаем его для всех правил.
Другой вариант можно в параметры добавить. И тоже на уровне КД написать алгоритм.
Другой вариант можно в параметры добавить. И тоже на уровне КД написать алгоритм.
Я бы сделал решение вашей задачи так: После загрузки правил обмена в модуле УОД сделал бы проверку на то, какие правила грузятся и при выполнении условия, что именно это те правила - подставил в ТаблицаПравилВыгрузки узел из параметров
(35) Так я так и хочу,но подскажите кодом то как передать в ТЧ узел.. у меня не получилось это сделать,я поэтому и создал тему ..
Ааа или вы имеете ввиду менять саму уод? Может тогда не типовую использовать,а как ВН обработку например. Но без помощи я не обойдусь все равно..
Ааа или вы имеете ввиду менять саму уод? Может тогда не типовую использовать,а как ВН обработку например. Но без помощи я не обойдусь все равно..
Обработка.ВыполнитьВыгрузку() - экспортая процедура из обработки. Перед ее выполнением надо пройтись по ТаблицаПравилВыгрузки в цикле и подставить в поле СсылкаНаУзелОбмена (реквизит табличной части) тот узел обмена, который нужен
(45)Я бы кинул значение в параметры. Они доступны после загрузки правил.
Сначала грузим правила, затем обращемся к параметрам и находим или не находим соответствующий параметр и помещенное туда значение. Если вы архитектор правил - помещайте туда свое уникальное значение.
Сначала грузим правила, затем обращемся к параметрам и находим или не находим соответствующий параметр и помещенное туда значение. Если вы архитектор правил - помещайте туда свое уникальное значение.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот