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


#0 by log987789
УТ 10.3 Надо массово изменить реквизит у всех контрагентов. Проблема в том, что есть работающий обмен данными с розницей, десяток узлов, и совсем не нужно, чтобы все контрагенты (ок.5 тыс) снова выгрузились в периферийные базы. Т.е. надо либо предотвратить регистрацию изменений, либо убрать ее после записи. Просто грохнуть все изменения нельзя - т.к. есть уже зарегистрированные изменения, которые должны уйти по назначению. Пробовал перед записью сбрасывать ПараметрыСеанса.ПараметрыСеанса.НаличиеОбменаСРозничнойТорговлей -  не помогает. Как сделать?
#1 by Serg_1960
Зайти в план обмена, в нем найти монитор обмена и открыть его
#2 by log987789
И что с ним сделать ?
#3 by John83
удалить регистрацию этих объектов
#4 by Метранпаж
РежимОбменаДанными.Загрузка = Истина
#5 by log987789
Там есть уже ранее зарегистрированные объекты, их удалять НЕЛЬЗЯ. Как их искать среди тысяч строк?
#6 by log987789
Разве это поможет ?
#7 by Serg_1960
Закладка "Дополнительно", кнопка "Подробно". Далее разберешься? Там появится дерево метаданных и количество зарегистрированных объектов. Можно грохнуть все или выборочно.
#8 by Cyberhawk
Варианты:
#9 by Cyberhawk
#10 by Cyberhawk
Не поможет
#11 by log987789
, Спасибо. Хоть один человек понял проблему, и подсказал.
#12 by Cyberhawk
Только учти, что это поможет защититься только от авторегистрации. Если там дальше где-нибудь в подписках выполняется регистрация изменений (а это в типовых обменах для документов так и есть - авторегистрация запрещена, используются правила регистрации в подписках), то это не поможет.
#13 by Cyberhawk
+ Так что гарантированные способы - это либо приостановить обмен и пробежаться по массиву объектов после их изменения и удалить выборочно их регистрацию, либо пнуть все обмены, приостановить работу в базе, приостановить обмены и уже не глядя снять всю регистрацию
#14 by aleks_default
Синтаксис: УдалитьРегистрациюИзменений(<Узлы>, <Данные>) Параметры: Тип: ПланОбменаСсылка.<Имя плана обмена>; Массив. Одиночное значение типа ПланОбменаСсылка.<Имя плана обмена> или массив таких значений, показывающие для каких узлов удаляются записи регистрации изменений. Тип: Метаданные, Неопределено; УдалениеОбъекта; Число; <Данные>. Значением данного параметра может быть объект метаданных, объект, представляющий данные, хранимые в базе данных, такой как документ, элемент справочника, счет бухгалтерского учета, менеджер записи константы, набор записей регистра и т. п., ссылка на объект базы данных, а также Неопределено. Если указан объект метаданных, то записи регистрации изменений будут удалены для всех элементов данных, относящихся к указанному объекту метаданных. Объект метаданных должен входить в состав планов обмена всех узлов, указанных в первом параметре. Если указан УдалениеОбъекта, то удаление записи регистрации изменений выполняется для объекта базы данных, на который "указывает" ссылка, содержащаяся в объекте УдалениеОбъекта. Если указан объект представляющий данные, хранимые в базе данных, или ссылка, то записи регистрации изменений будут удалены только для указанных данных. Объект метаданных, соответствующий данным должен входить в состав всех планов обмена всех узлов, указанных в первом параметре. Если указано Неопределено или не указан, то в качестве первого параметра может быть указан только одиночный узел. И в этом случае записи регистрации изменений будут удалены для всех объектов, метаданные которых входят в состав плана обмена, к которому относится узел, указанный в качестве первого параметра. Если в качестве первого параметра указан одиночный узел, то в параметре может быть указан номер сообщения. В этом случае метод УдалитьРегистрациюИзменений удаляет из всех таблиц регистрации изменений все записи относящиеся к указанному узлу, у которых номер сообщения меньше или равен значению второго параметра. Значение по умолчанию: Неопределено Описание: Удаляет записи регистрации изменений одного или группы элементов данных для одного или нескольких узлов планов обмена. Доступность: Сервер, толстый клиент, внешнее соединение. Пример:
#15 by Михаил Козлов
Можно затолкать в массив все изменяемые объекты и потом удалить регистрацию по этому массиву.
#16 by Cyberhawk
Этого недостаточно для гарантированного удаления только того, что не должно попасть в обмен. Между формированием массива и послелующей чисткой этого же контрагента может изменить пользователь на самом деле, и его-таки нужно будет передать в узлы...
#17 by Serg_1960
Да вся эта идея плохо пахнет. Рассогласование данных не айс. Например, из другого узла придут изменения контрагентов и вся работа автора псу под хвост.
#18 by Cyberhawk
Я так понял, у них бэк - УТ, и выгрузка односторонняя (только в Розницы)
#19 by mkalimulin
Запомнить состояние плана обмена. Выполнить обработку. Восстановить состояние плана обмена.
#20 by andrewrocker
А напомните почему нельзя сделать чтобы и прогрузка в розницу прошла
#21 by MiniMuk
При любом следующей выгрузке контрагента он выгрузится полностью, видимо проблема только в 5тыс элементов, может выгружать по 100шт?
#22 by hhhh
всё-таки ОбменДанными.Загрузка = Истина; рулит. Зачем удалять регистрацию, если можно вообще ничего не регистрировать?
#23 by Cyberhawk
Ошибаешься. См. и .
#24 by regi1984
"ОбменДанными.Загрузка = Истина" может сыграть злую шутку, мы же не знаем что именно собрался ТС менять и зачем же отключать полностью обработку данных, может там какие то алгоритмы по заполнению задействованы. Можно при записи создать доп параметр и уже в подписке на событие записи(БСП) проверить наличие флага. Если флаг есть - то типовую регистрацию не запускаем. Доработка будет для всех справочников и может пригодится в будущем.
#25 by regi1984
Если Розница 2, то при изменении реквизитов, не задействованых в обмене - регистрация не произойдет. БСП отловит данный факт. Если же меняем реквизит участвующий в обмене - то в РТ все таки необходимо их отправить. Если Розница 1, то можно выполнить обмен, добиться того что регистрация по данному справочнику очистилась - потом изменить  данные и в конце просто снять регистрацию типовой обработкой.
#26 by Cyberhawk
Все хорошо, только ты описал то, что к случаю ТС не относится. У него сюжет разворачивается в УТ 10.3.
#27 by Cyberhawk
Касательно "можно выполнить обмен, добиться того что регистрация по данному справочнику очистилась - потом изменить  данные и в конце просто снять регистрацию типовой обработкой" из читай
#28 by xafavute
перед запсиью контрагента читать есть ли регистрация, если нет, то после записи удалять. ну и  блокировку элемента на время такой операции
#29 by regi1984
Так обмен с РТ же сказано, без указания версии. Так что все написано верно Все хорошо, только ты описал свои догадки. ТС не говорил ничего про время измененеия. Глупо менять 5 тыщ справочников в рабочее время.
#30 by Cyberhawk
#31 by regi1984
:) Перечитай условие. Хотя...все равно каждый останется при своем мнении. Баста
#32 by Serg_1960
PS: имхо, "ОбменДанными.Загрузка = Истина" не отменяет регистрацию изменений. В данном контексте ветки просто забудьте об этом :) Для объектов, у которых запрещена автоматическая регистрация изменений, может быть использовано при исполнении подписок на событие при записи объекта для регистрации изменений. Но нужно помнить: "Загрузка=ИСТИНА" автоматически включается при загрузке сообщений обмена и не должна мешать регистрировать изменения для других узлов планов обмена. А в принципе, в платформе это отменяет контроль проверок при записи объекта, которые выполняются по свойствам метаданных конфигурации и игнорирует некоторые типы блокировок (например, игнорируется блокировка при открытии формы объекта пользователем). В конфигурации это используется программно как своеобразный индикатор/ориентир и позволяет запрограммировать обход контроля интерактивных действий пользователей при записи объекта, а также может быть использовано в различного рода подписках на события для выполнения алгоритмов, необходимость в которых косвенно порождается из действий пользователей. Уф. Ваш к.э.п.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С