Событие ПриОтправкеДанныхПодчиненному... #238536


#0 by Звездочёт
ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента) как можно узнать, в какой конкретно подчиненный узел мы выгружаем объект? Получается что это нельзя узнать?!
#1 by avmlvm
(задумчиво) хм-м-м.. Ну КАК это "нельзя узнать"??? Ну-у-у.. например так:   Если ЭлементДанных.Ссылка <> Организация Тогда Где Организация реквизит обмена данных и для данного подчинённого узла имеет вполне определённое значение - например ООО "Солнышко" Удачи
#2 by Defender aka LINN
Студент, вы меня огорчаете (с) А скажите-ка мне, ГДЕ находится процедура "ПриОтправкеДанныхПодчиненному"?
#3 by avmlvm
(шопотом) Это предопределённая процедура в "планах обмена"
#4 by Defender aka LINN
Тс-с-с...
#5 by Звездочёт
, народ, вы меня немного развеселили :) А то мне уже стало грустно от этого факта . Ну давайте всё по порядку... Чтобы сразу убрать недомолвки, скажу, что событие ПриОтправкеДанныхПодчиненному находится в модуле ПланаОбмена, назовём его "Полный". Пусть мы находимся в центральной базе и у нас в ней 100 подчинённых баз (все они имеют код от 1 до 100). Также предположим, что был изменён один документ и он зарегистрировался измененным для всех наших подчинённых баз. Теперь пользователь, в режиме 1С Предприятия 8.0, в списке плана обмена "Полный" выбирает какую-то подчинённую базу, в которую хочет выгрузить изменения. Процесс пошёл. Если бы нам не нужно было фильтровать объекты по подчинённым базам, то на этом бы всё и закончилось. Но в жизни так бывает редко и нам надо фильтровать объекты. Для простоты выберем такой умозрителный фильтр: мы грузим документ в периферийную базу с кодом равным (НомерДокумента % 100) + 1. Как вы реализуете этот фильтр в событии ПриОтправкеДанныхПодчиненному?
#6 by avmlvm
Ещё раз.. В своей плане обмена "Полный", заводишь реквизит (в приведённом примере это реквизит Организация) Когда выгружаешь в одну ПБ - этот реквизит имеет значение ООО "Радуга", а когда в другую - ООО "Солнышко".. В самой процедуре ПриОтправкеДанныхПодчиненному и анализируешь совпадение этого реквизита с соответствующим полем в выгружаемом документе.. Если "совпадает" - документ посылаешь.. если нет - то ставишь признак "удалить" ЗЫ.. У меня так обмены уже почти год без проблем работают :-) Удачи
#7 by Звездочёт
Всё, разобрался! :) Условие будет таким:
#8 by Shirenin
все же советую быть поаккуратней с ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить; если есть потребность не отправлять что то в подчиненую базу лучше просто неотправлять, а не посылать команду на ликвидацию элемента.
#9 by Звездочёт
Почему осторожней? Если не удалять запрещенный объект для периферии, то если этот объект будут исправлять в этой периферии (по ошибке или не знанию) может получится еще хуже.
#10 by Neco
Можно удалить и полезные объекты
#11 by Звездочёт
но это если с условием ошиблись :) А если условие правильное, то тогда, мне кажется, нужно обязательно удалять.
#12 by Shirenin
Невсегда. зависит конечно от постановки задачи. но если например фильтровать справочники по подразделению и в одну из баз попал контрагент с подразделением 1. по нему было выписано ряд документов. далее некий менеджер изменил подразделение и в результате будет пачка документов с битыми ссылками. иногда обилие битых ссылок рушат базу. и вобше битые ссылки это не правильно - надо искать другие пути решения коллизий
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям