Работа с распределенными информационными базами (УРБД) в версии 1С:Предприятие 7.7 существенно отличается от привычных механизмов планов обмена в 1С 8.х. Одной из частых задач является ограничение состава передаваемых данных: например, когда в периферийную базу (ПБ) должны попадать только определенные справочники или конкретные виды документов. Рассмотрим подробно, как реализовать такую логику, используя штатные средства платформы и программные методы.
Основной инструмент управления составом данных в 1С 7.7 заложен на уровне метаданных. Разберем по шагам, как настроить ограничения передачи объектов:
Номенклатура или документ Реализация).Проанализируем доступные виды миграции:
Важный нюанс: Любое изменение свойств миграции в Конфигураторе требует исключительного доступа к базе (все пользователи должны выйти) и последующего обновления конфигурации во всех существующих периферийных базах. Только после получения обновления конфигурации периферийные базы смогут корректно обрабатывать изменения в составе данных.
Если мы установили режим «Выборочно», нам необходимо указать системе, какие именно данные должны мигрировать. В режиме 1С:Предприятие это можно сделать через меню «Сервис — Распределенная ИБ — Управление миграцией».
Однако ручная настройка миграции для каждого документа — процесс трудоемкий и чреват ошибками. Выясним, как автоматизировать этот процесс программно. Платформа 7.7 предоставляет для этого специальные методы: УстановитьМиграциюОбъекта() и ПолучитьМиграциюОбъекта().
Рассмотрим пример кода, который программно разрешает миграцию конкретного документа в определенную периферийную базу:
// Пример установки миграции для документа
Процедура НастроитьМиграцию(ТекущийДокумент, КодБазы)
// Устанавливаем миграцию для объекта в базу с указанным кодом
УстановитьМиграциюОбъекта(ТекущийДокумент, КодБазы, 1);
// Третий параметр: 1 - включить передачу, 0 - выключить
КонецПроцедуры
Используя этот метод в модуле проведения документа или в специальной обработке, мы можем реализовать сложную логику фильтрации. Например, передавать документы РасходнаяНакладная в базу филиала только в том случае, если в документе выбран склад, относящийся к этому филиалу.
Рассмотрим критически важное условие работы УРБД в 1С 7.7: конфигурации центральной и периферийных баз должны быть идентичными. Даже если вы хотите, чтобы в периферийной базе «Б» не было документов вида НачислениеЗарплаты, вы не можете просто удалить этот объект из метаданных периферийной базы.
Если вы удалите объект в одной базе, механизм обмена выдаст ошибку при загрузке данных, так как структура файлов обмена (.zip или .dat) жестко привязана к идентификаторам объектов метаданных. Единственный правильный способ — оставить объект в конфигурации, но запретить его миграцию (передачу данных) через настройки, описанные выше.
Если стандартный механизм УРБД кажется слишком громоздким для задачи «передать пару справочников», разберем альтернативные подходы, которые часто применяются опытными разработчиками 7.7:
ExpDoc.ert. Они позволяют сериализовать данные в текстовые файлы или файлы DBF и загружать их в другую базу. Это полностью независимый от УРБД канал связи.1SDBSET. Проанализировав записи в этой таблице, можно программно удалять регистрации тех объектов, которые не должны участвовать в обмене для конкретной базы. Это «хакерский» метод, требующий глубоких знаний структуры таблиц 1С 7.7, и его стоит применять только в крайних случаях.Подведем итог нашему анализу. Реализовать выборочную передачу объектов в 1С 7.7 вполне реально. Если вы уже используете распределенную базу, оптимальным путем будет:
УстановитьМиграциюОбъекта() для тонкой фильтрации конкретных записей.Помните, что любое вмешательство в механизмы распределенных баз требует обязательного создания резервных копий перед внесением изменений в структуру метаданных.