Вход | Регистрация



УТ 10.3 изменить контрагентов без регистрации в плане обмена

УТ 10.3 изменить контрагентов без регистрации в плане обмена
Я
   log987789
 
07.09.16 - 14:44
УТ 10.3
Надо массово изменить реквизит у всех контрагентов.
Проблема в том, что есть работающий обмен данными с розницей, десяток узлов, и совсем не нужно, чтобы все контрагенты (ок.5 тыс) снова выгрузились в периферийные базы.
Т.е. надо либо предотвратить регистрацию изменений, либо убрать ее после записи.
Просто грохнуть все изменения нельзя - т.к. есть уже зарегистрированные изменения, которые должны уйти по назначению.

Пробовал перед записью сбрасывать ПараметрыСеанса.ПараметрыСеанса.НаличиеОбменаСРозничнойТорговлей -  не помогает.

Как сделать?
 
 
   Serg_1960
 
1 - 07.09.16 - 14:49
Зайти в план обмена, в нем найти монитор обмена и открыть его
   log987789
 
2 - 07.09.16 - 14:51
(1) И что с ним сделать ?
   John83
 
3 - 07.09.16 - 14:53
(2) удалить регистрацию этих объектов
   Метранпаж
 
4 - 07.09.16 - 14:54
РежимОбменаДанными.Загрузка = Истина
   log987789
 
5 - 07.09.16 - 14:55
(3) Там есть уже ранее зарегистрированные объекты, их удалять НЕЛЬЗЯ. Как их искать среди тысяч строк?
   log987789
 
6 - 07.09.16 - 14:56
(4) Разве это поможет ?
   Serg_1960
 
7 - 07.09.16 - 14:56
(2) Закладка "Дополнительно", кнопка "Подробно". Далее разберешься? Там появится дерево метаданных и количество зарегистрированных объектов. Можно грохнуть все или выборочно.
   Cyberhawk
 
8 - 07.09.16 - 15:06
Варианты:
1. Самому: удалить узлы-получатели
2. ИР, флажок "Без авторегистрации"
   Cyberhawk
 
9 - 07.09.16 - 15:07
   Cyberhawk
 
10 - 07.09.16 - 15:08
(4) Не поможет
 
 Рекламное место пустует
   log987789
 
11 - 07.09.16 - 15:09
(8),(9) Спасибо. Хоть один человек понял проблему, и подсказал.
   Cyberhawk
 
12 - 07.09.16 - 15:11
(11) Только учти, что это поможет защититься только от авторегистрации. Если там дальше где-нибудь в подписках выполняется регистрация изменений (а это в типовых обменах для документов так и есть - авторегистрация запрещена, используются правила регистрации в подписках), то это не поможет.
   Cyberhawk
 
13 - 07.09.16 - 15:13
+(12) Так что гарантированные способы - это либо приостановить обмен и пробежаться по массиву объектов после их изменения и удалить выборочно их регистрацию, либо пнуть все обмены, приостановить работу в базе, приостановить обмены и уже не глядя снять всю регистрацию
   aleks_default
 
14 - 07.09.16 - 15:18
ПланыОбменаМенеджер (ExchangePlansManager)
УдалитьРегистрациюИзменений (DeleteChangeRecords)
Синтаксис:

УдалитьРегистрациюИзменений(<Узлы>, <Данные>)
Параметры:

<Узлы> (обязательный)

Тип: ПланОбменаСсылка.<Имя плана обмена>; Массив.
Одиночное значение типа ПланОбменаСсылка.<Имя плана обмена> или массив таких значений, показывающие для каких узлов удаляются записи регистрации изменений. 
<Данные> (необязательный)

Тип: Метаданные, Неопределено; УдалениеОбъекта; Число; <Данные>.
Значением данного параметра может быть объект метаданных, объект, представляющий данные, хранимые в базе данных, такой как документ, элемент справочника, счет бухгалтерского учета, менеджер записи константы, набор записей регистра и т. п., ссылка на объект базы данных, а также Неопределено.
Если указан объект метаданных, то записи регистрации изменений будут удалены для всех элементов данных, относящихся к указанному объекту метаданных. Объект метаданных должен входить в состав планов обмена всех узлов, указанных в первом параметре.
Если указан УдалениеОбъекта, то удаление записи регистрации изменений выполняется для объекта базы данных, на который "указывает" ссылка, содержащаяся в объекте УдалениеОбъекта.
Если указан объект представляющий данные, хранимые в базе данных, или ссылка, то записи регистрации изменений будут удалены только для указанных данных. Объект метаданных, соответствующий данным должен входить в состав всех планов обмена всех узлов, указанных в первом параметре.
Если указано Неопределено или не указан, то в качестве первого параметра может быть указан только одиночный узел. И в этом случае записи регистрации изменений будут удалены для всех объектов, метаданные которых входят в состав плана обмена, к которому относится узел, указанный в качестве первого параметра.
Если в качестве первого параметра указан одиночный узел, то в параметре может быть указан номер сообщения. В этом случае метод УдалитьРегистрациюИзменений удаляет из всех таблиц регистрации изменений все записи относящиеся к указанному узлу, у которых номер сообщения меньше или равен значению второго параметра.
Значение по умолчанию: Неопределено
Описание:

Удаляет записи регистрации изменений одного или группы элементов данных для одного или нескольких узлов планов обмена.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Пример:

// Пример 1

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

// Пример 2

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

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

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

ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого);
   Михаил Козлов
 
15 - 07.09.16 - 17:04
Можно затолкать в массив все изменяемые объекты и потом удалить регистрацию по этому массиву.
   Cyberhawk
 
16 - 07.09.16 - 18:35
(15) Этого недостаточно для гарантированного удаления только того, что не должно попасть в обмен. Между формированием массива и послелующей чисткой этого же контрагента может изменить пользователь на самом деле, и его-таки нужно будет передать в узлы...
   Serg_1960
 
17 - 07.09.16 - 20:44
Да вся эта идея плохо пахнет. Рассогласование данных не айс. Например, из другого узла придут изменения контрагентов и вся работа автора псу под хвост.
   Cyberhawk
 
18 - 07.09.16 - 21:29
(17) Я так понял, у них бэк - УТ, и выгрузка односторонняя (только в Розницы)
   mkalimulin
 
19 - 07.09.16 - 22:39
(0) Запомнить состояние плана обмена. Выполнить обработку. Восстановить состояние плана обмена.
   andrewrocker
 
20 - 08.09.16 - 05:47
А напомните почему нельзя сделать чтобы и прогрузка в розницу прошла
   MiniMuk
 
21 - 08.09.16 - 05:51
(20) При любом следующей выгрузке контрагента он выгрузится полностью, видимо проблема только в 5тыс элементов, может выгружать по 100шт?
   hhhh
 
22 - 08.09.16 - 07:54
(16) всё-таки ОбменДанными.Загрузка = Истина; рулит. Зачем удалять регистрацию, если можно вообще ничего не регистрировать?
   Cyberhawk
 
23 - 08.09.16 - 09:24
(22) Ошибаешься. См. (10) и (12).
   regi1984
 
24 - 08.09.16 - 09:54
"ОбменДанными.Загрузка = Истина" может сыграть злую шутку, мы же не знаем что именно собрался ТС менять и зачем же отключать полностью обработку данных, может там какие то алгоритмы по заполнению задействованы. Можно при записи создать доп параметр и уже в подписке на событие записи(БСП) проверить наличие флага. Если флаг есть - то типовую регистрацию не запускаем. Доработка будет для всех справочников и может пригодится в будущем.
   regi1984
 
25 - 08.09.16 - 10:05
Если Розница 2, то при изменении реквизитов, не задействованых в обмене - регистрация не произойдет. БСП отловит данный факт. Если же меняем реквизит участвующий в обмене - то в РТ все таки необходимо их отправить.

Если Розница 1, то можно выполнить обмен, добиться того что регистрация по данному справочнику очистилась - потом изменить  данные и в конце просто снять регистрацию типовой обработкой.
   Cyberhawk
 
26 - 08.09.16 - 10:09
(24) (25) Все хорошо, только ты описал то, что к случаю ТС не относится. У него сюжет разворачивается в УТ 10.3.
   Cyberhawk
 
27 - 08.09.16 - 10:10
Касательно "можно выполнить обмен, добиться того что регистрация по данному справочнику очистилась - потом изменить  данные и в конце просто снять регистрацию типовой обработкой" из (25) читай (16)
   xafavute
 
28 - 08.09.16 - 10:13
перед запсиью контрагента читать есть ли регистрация, если нет, то после записи удалять. ну и  блокировку элемента на время такой операции
   regi1984
 
29 - 08.09.16 - 10:15
(26) Так обмен с РТ же сказано, без указания версии. Так что все написано верно

(27) Все хорошо, только ты описал свои догадки. ТС не говорил ничего про время измененеия. Глупо менять 5 тыщ справочников в рабочее время.
   Cyberhawk
 
30 - 08.09.16 - 10:17
(29) "Так обмен с РТ же сказано, без указания версии. Так что все написано верно "// Перечитывай (26)

"Все хорошо, только ты описал свои догадки"// Не догадки, а варианты развития событий. Речь о гарантированном способе, а не абы как.
   regi1984
 
31 - 08.09.16 - 10:21
(30)  :) Перечитай условие. Хотя...все равно каждый останется при своем мнении. Баста
   Serg_1960
 
32 - 08.09.16 - 11:27
PS: имхо, "ОбменДанными.Загрузка = Истина" не отменяет регистрацию изменений. В данном контексте ветки просто забудьте об этом :)

Для объектов, у которых запрещена автоматическая регистрация изменений, может быть использовано при исполнении подписок на событие при записи объекта для регистрации изменений. Но нужно помнить: "Загрузка=ИСТИНА" автоматически включается при загрузке сообщений обмена и не должна мешать регистрировать изменения для других узлов планов обмена.

А в принципе,
в платформе это отменяет контроль проверок при записи объекта, которые выполняются по свойствам метаданных конфигурации и игнорирует некоторые типы блокировок (например, игнорируется блокировка при открытии формы объекта пользователем).
В конфигурации это используется программно как своеобразный индикатор/ориентир и позволяет запрограммировать обход контроля интерактивных действий пользователей при записи объекта, а также может быть использовано в различного рода подписках на события для выполнения алгоритмов, необходимость в которых косвенно порождается из действий пользователей.
Уф.
Ваш к.э.п.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует