При настройке распределенных информационных баз (РИБ) или обменов данными на базе Библиотеки стандартных подсистем (БСП) часто возникает задача исключить определенные документы или справочники из процесса синхронизации. При этом критически важно сохранить конфигурацию на полной типовой поддержке без редактирования состава плана обмена в дереве метаданных.
Разберем причины, по которым простое удаление строчек из файла правил регистрации не дает желаемого эффекта, а также рассмотрим корректные способы решения задачи.
Выясним причину такого поведения. Механизм регистрации изменений в 1С базируется на двух составляющих:
Авторегистрация = Разрешить (Авто), платформа регистрирует изменения непосредственно в момент записи объекта.<Авторегистрация>false</Авторегистрация>, то для объекта начинает действовать регистрация по умолчанию, то есть изменения продолжают регистрироваться.Проанализируем практические способы исключения объектов из обмена без снятия конфигурации с поддержки.
Самый надежный и штатный способ — выгрузить правила регистрации, отредактировать их в конфигурации «Конвертация данных» и загрузить обратно в базу в режиме «1С:Предприятие».
Разберем по шагам, как это сделать:
Документ.РеализацияТоваровУслуг).
Отказ = Истина;
Либо, если правила правятся вручную в XML, можно добавить заведомо невыполнимый отбор по свойствам, как показано в примере:
<Правило Отключить="false" Валидное="true">
<Код>000000001</Код>
<Наименование>РеализацияТоваровУслуг</Наименование>
<ОбъектНастройки>ДокументСсылка.РеализацияТоваровУслуг</ОбъектНастройки>
<ОбъектМетаданныхИмя>Документ.РеализацияТоваровУслуг</ОбъектМетаданныхИмя>
<ОбъектМетаданныхТип>Документ</ОбъектМетаданныхТип>
<ОтборПоСвойствамОбъекта>
<ЭлементОтбора>
<СвойствоОбъекта>Номер</СвойствоОбъекта>
<ВидСравнения>Равно</ВидСравнения>
<Значение>__НЕ_ВЫГРУЖАТЬ__</Значение>
</ЭлементОтбора>
</ОтборПоСвойствамОбъекта>
</Правило>
После загрузки обновленных правил в информационную базу документ перестанет регистрироваться при записи.
Если обмен работает на чистом платформенном механизме РИБ (без подсистемы обмена данными БСП), внешние XML-правила не применяются. В этом случае задачу можно решить добавлением расширения.
Рассмотрим два варианта реализации в расширении:
ПриЗаписи: в расширение добавляется подписка для нужного типа документов. В обработчике очищается регистрация изменений на узле:
Процедура Расш_СнятьРегистрациюПриЗаписи(Источник, Отказ) Экспорт
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Источник);
КонецПроцедуры
ПриОтправкеДанныхПодчиненному или ПриОтправкеДанныхГлавному:
&Вместо("ПриОтправкеДанныхПодчиненному")
Процедура Расш_ПриОтправкеДанныхПодчиненному(Элемент, ОтправкаЭлемента)
Если ТипЗнч(Элемент) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
Элемент = Неопределено;
Иначе
ПродолжитьВызов(Элемент, ОтправкаЭлемента);
КонецЕсли;
КонецПроцедуры
При установке Элемент = Неопределено платформа автоматически снимает регистрацию с объекта, и данные не попадают в сообщение обмена.
Если нет возможности редактировать правила регистрации или подключать расширения, можно использовать регламентное задание с внешней обработкой, выполняющее периодическую очистку очереди регистрации изменений:
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, Метаданные.Документы.РеализацияТоваровУслуг);
При исключении документов из обмена обратим внимание на следующие нюансы:
<Объект не найден>).