В процессе эксплуатации 1С:Бухгалтерия предприятия 3.0 часто возникает необходимость ограничить состав данных, передаваемых при синхронизации. Типичный пример — документы по прослеживаемости товаров (уведомления об остатках, ввозе или перемещении), которые могут мешать обмену с другими системами или просто не требуются в базе-корреспонденте. При этом крайне важно сохранить типовую конфигурацию на поддержке. В этой статье мы подробно разберем, как решить эту задачу несколькими способами: от манипуляций с правилами регистрации до использования современных механизмов расширений.
Большинство стандартных обменов в 1С (особенно в формате EnterpriseData или между идентичными конфигурациями) опираются на правила регистрации. Эти правила определяют, какие объекты при их записи должны попасть в очередь на выгрузку. По умолчанию они зашиты в конфигурацию, но система позволяет заменить их на внешние.
Разберем по шагам, как выгрузить, отредактировать и загрузить правила обратно:
.zip архив, содержащий три файла:
ExchangeRules.xml — правила конвертации для текущей базы;CorrespondentExchangeRules.xml — правила для базы-приемника;RegistrationRules.xml — те самые правила регистрации, которые нам нужно поправить.RegistrationRules.xml с помощью любого текстового редактора или специализированной обработки «Редактор правил регистрации».УведомлениеОбОстаткахПрослеживаемыхТоваров.Перед обработкой (или в соответствующем XML-теге) необходимо прописать жесткий отказ:
// В правилах регистрации для конкретного объекта
Отказ = Истина;
Важно понимать: если вы просто удалите упоминание документа из XML-файла, система может применить к нему правила «по умолчанию» (авторегистрацию), и документы все равно продолжат выгружаться. Явное указание Отказ = Истина; гарантирует блокировку.
После внесения изменений запакуйте все три файла обратно в ZIP-архив и загрузите их в 1С через ту же форму. Убедитесь, что в регистре сведений Правила обмена данными для вашей настройки синхронизации переключатель стоит в положении Использовать загруженные правила. Чтобы избежать ручной распаковки и запаковки архивов, можно применить расширение для редактирования правил обмена в режиме предприятия.
Использование внешних файлов XML имеет существенный минус: при обновлении конфигурации типовые правила регистрации могут измениться (добавятся новые поля или логика), а ваши внешние правила останутся старыми, что может привести к ошибкам. Более надежный и современный метод — создание расширения.
Проанализируем ситуацию: регистрация изменений происходит в планах обмена. Мы можем создать расширение и перехватить событие регистрации. Рассмотрим пример кода в модуле расширения для плана обмена (например, СинхронизацияДанныхЧерезУниверсальныйФормат):
&После("ПриРегистрацииИзменения")
Процедура Расш1_ПриРегистрацииИзменения(Объект, Отказ)
ТипОбъекта = ТипЗнч(Объект);
// Блокируем регистрацию определенных документов
Если ТипОбъекта = Тип("ДокументСсылка.УведомлениеОбОстаткахПрослеживаемыхТоваров")
Или ТипОбъекта = Тип("ДокументСсылка.УведомлениеОВвозеПрослеживаемыхТоваров")
Или ТипОбъекта = Тип("ДокументСсылка.УведомлениеОПеремещенииПрослеживаемыхТоваров") Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Этот метод хорош тем, что он «прозрачен» для обновлений и позволяет гибко управлять логикой (например, запретить выгрузку документов только за определенный период или по конкретной организации). Для настройки таких ограничений без собственной разработки можно использовать готовое расширение для выборочного запрета выгрузки документов.
Иногда возникают ситуации, когда документы уже зарегистрированы к обмену (в таблице регистрации изменений уже есть записи), и изменение правил не поможет удалить уже накопленные данные. Выясним, как очистить очередь регистрации.
Для этого воспользуемся типовой обработкой Регистрация изменений для обмена данными:
Если документов много и они регистрируются постоянно (например, из-за фоновых процессов), можно написать простую внешнюю обработку, которая будет очищать регистрацию по расписанию, используя метод ПланыОбмена.УдалитьРегистрациюИзменений().
Рассмотрим важный нюанс: в современных версиях БП 3.0 обмен часто идет через МенеджерОбменаЧерезУниверсальныйФормат. Это общий модуль, в котором жестко прописаны правила формирования XML-сообщений. Если ваша задача — не просто остановить регистрацию, а сделать так, чтобы даже при случайной регистрации данные не попали в файл, можно использовать расширение для этого модуля.
В модуле менеджера обмена есть процедура ЗаполнитьПравилаОбработкиДанных. Переопределив её в расширении, можно закомментировать или удалить строки, отвечающие за отправку конкретных типов объектов. Однако это более сложный путь, требующий понимания структуры EnterpriseData.
Если при попытке загрузки комплекта правил вы получаете сообщение «Неверный формат комплекта правил», проанализируйте состав вашего архива. Система 1С крайне требовательна к именованию файлов внутри ZIP. Их должно быть именно три, и называться они должны строго:
ExchangeRules.xmlCorrespondentExchangeRules.xmlRegistrationRules.xmlЕсли в вашей версии обмена какой-то из файлов не используется (например, правила конвертации встроены в код), вы всё равно должны положить в архив «пустой» файл с правильной структурой, чтобы прошел формальный контроль загрузки.
Подведем итог: для разового или быстрого отключения документов проще всего отредактировать RegistrationRules.xml, предварительно очистив текущую очередь регистрации через стандартную обработку. Для долгосрочного решения в базах на поддержке лучше всего использовать расширение с перехватом события ПриРегистрацииИзменения.