При настройке типовой синхронизации данных между конфигурациями 1С:Управление торговлей (УТ 11) и 1С:Бухгалтерия предприятия (БП 2.0) часто возникает задача исключить выгрузку определенных типов документов (например, документов движения денежных средств). При этом важно сохранить типовую конфигурацию на полной поддержке и не вносить изменения в структуру базы.
Однако при попытке отключить правила регистрации объектов (ПРО) или удалить их из файла правил разработчики часто сталкиваются с тем, что документы продолжают регистрироваться на узле плана обмена и выгружаться при проведении. Рассмотрим подробнее, почему так происходит и как правильно решить эту задачу.
Проанализируем алгоритм работы Библиотеки Стандартных Подсистем (БСП) при регистрации изменений для плана обмена. В типовых конфигурациях для большинства объектов метаданных штатное свойство Авторегистрация отключено. Вместо этого регистрация выполняется программно с помощью подписок на события (например, при проведении или записи документа).
В момент срабатывания подписки система обращается к правилам регистрации объектов (ПРО):
Таким образом, простое снятие флага активности или удаление правила приводит к противоположному результату: система начинает регистрировать абсолютно все документы данного типа.
Чтобы полностью заблокировать регистрацию документа на узле плана обмена без редактирования конфигурации, выполним следующие шаги:
Перед обработкой или При обработке пропишем явный откат регистрации:
Отказ = Истина;
Для гарантированного результата в некоторых релизах БСП рекомендуется прописывать строку Отказ = Истина; как в обработчике Перед обработкой, так и в При обработке, чтобы логика проверки дополнительных свойств плана обмена не перекрыла отказ.
После внесения изменений сохраним правила в XML-файл и загрузим их в УТ 11 через форму настройки синхронизации данных, переключив режим использования правил на «Загрузить из файла на компьютере».
Даже после загрузки корректных правил документы могут продолжить выгружаться при ближайшем сеансе обмена. Разберем сопутствующие факторы, которые необходимо проверить:
1. Очистка очереди изменений
Правила регистрации действуют только на будущие события записи и проведения документов. Документы, которые успели зарегистрироваться *до* загрузки новых правил, уже находятся в таблице изменений плана обмена. Их необходимо удалить из очереди отправки с помощью обработки Регистрация изменений для обмена данными или формы Состав отправляемых данных в настройках синхронизации, выбрав нужный вид документа и выполнив команду Отменить регистрацию.
2. Сброс кэша правил в сеансе
Правила обмена и регистрации кэшируются платформой в память сеанса. Чтобы новые правила вступили в силу для всех пользователей, необходимо перезапустить сеансы работы с базой данных источника.
3. Проверка косвенной регистрации по ссылкам
Если исключаемый документ входит в состав табличных частей или реквизитов других выгружаемых объектов (например, связанного справочника или первичного документа), он может регистрироваться косвенно в режиме «Выгружать по необходимости». В таком случае следует проверить правила конвертации объектов (ПКО) и при необходимости отключить автоматическую выгрузку по ссылке.
Если внесение изменений в правила регистрации по каким-то причинам неудобно, можно воспользоваться механизмом расширений. Это также позволяет сохранить конфигурацию на полной поддержке.
Создадим расширение и перед выполнением стандартной процедуры регистрации изменений в подписке на событие отключим автозаполнение получателей для конкретных типов документов:
&НаСервере
Процедура Расш1_ПередЗаписьюДокументаПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения)
Если ТипЗнч(Источник) = Тип("ДокументСсылка.СписаниеБезналичныхДенежныхСредств") Тогда
Источник.ОбменДанными.Получатели.АвтоЗаполнение = Ложь;
Источник.ОбменДанными.Получатели.Очистить();
КонецЕсли;
КонецПроцедуры
При таком подходе платформа физически не будет создавать записи в таблице изменений плана обмена для указанного документа, независимо от настроек правил конвертации.