Как реализовать выборочную передачу объектов в распределенной базе 1С 7.7

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

Работа с распределенными информационными базами (УРБД) в версии 1С:Предприятие 7.7 существенно отличается от привычных механизмов планов обмена в 1С 8.х. Одной из частых задач является ограничение состава передаваемых данных: например, когда в периферийную базу (ПБ) должны попадать только определенные справочники или конкретные виды документов. Рассмотрим подробно, как реализовать такую логику, используя штатные средства платформы и программные методы.

Механизм миграции в Конфигураторе

Основной инструмент управления составом данных в 1С 7.7 заложен на уровне метаданных. Разберем по шагам, как настроить ограничения передачи объектов:

  1. Откроем Конфигуратор и перейдем к дереву метаданных.
  2. Выберем интересующий нас объект (например, справочник Номенклатура или документ Реализация).
  3. Откроем свойства объекта и перейдем на третью вкладку, которая называется «Миграция».
  4. Здесь мы увидим несколько вариантов настройки, которые определяют, как данные будут перемещаться между информационными базами.

Проанализируем доступные виды миграции:

Важный нюанс: Любое изменение свойств миграции в Конфигураторе требует исключительного доступа к базе (все пользователи должны выйти) и последующего обновления конфигурации во всех существующих периферийных базах. Только после получения обновления конфигурации периферийные базы смогут корректно обрабатывать изменения в составе данных.

Управление выборочной миграцией в режиме «Предприятие»

Если мы установили режим «Выборочно», нам необходимо указать системе, какие именно данные должны мигрировать. В режиме 1С:Предприятие это можно сделать через меню «Сервис — Распределенная ИБ — Управление миграцией».

Однако ручная настройка миграции для каждого документа — процесс трудоемкий и чреват ошибками. Выясним, как автоматизировать этот процесс программно. Платформа 7.7 предоставляет для этого специальные методы: УстановитьМиграциюОбъекта() и ПолучитьМиграциюОбъекта().

Рассмотрим пример кода, который программно разрешает миграцию конкретного документа в определенную периферийную базу:


// Пример установки миграции для документа
Процедура НастроитьМиграцию(ТекущийДокумент, КодБазы)
    // Устанавливаем миграцию для объекта в базу с указанным кодом
    УстановитьМиграциюОбъекта(ТекущийДокумент, КодБазы, 1); 
    // Третий параметр: 1 - включить передачу, 0 - выключить
КонецПроцедуры

Используя этот метод в модуле проведения документа или в специальной обработке, мы можем реализовать сложную логику фильтрации. Например, передавать документы РасходнаяНакладная в базу филиала только в том случае, если в документе выбран склад, относящийся к этому филиалу.

Обеспечение идентичности конфигураций

Рассмотрим критически важное условие работы УРБД в 1С 7.7: конфигурации центральной и периферийных баз должны быть идентичными. Даже если вы хотите, чтобы в периферийной базе «Б» не было документов вида НачислениеЗарплаты, вы не можете просто удалить этот объект из метаданных периферийной базы.

Если вы удалите объект в одной базе, механизм обмена выдаст ошибку при загрузке данных, так как структура файлов обмена (.zip или .dat) жестко привязана к идентификаторам объектов метаданных. Единственный правильный способ — оставить объект в конфигурации, но запретить его миграцию (передачу данных) через настройки, описанные выше.

Альтернативные варианты обмена данными

Если стандартный механизм УРБД кажется слишком громоздким для задачи «передать пару справочников», разберем альтернативные подходы, которые часто применяются опытными разработчиками 7.7:

  1. Конвертация данных (версии 1.0 или 2.0): Вы можете настроить правила обмена и выгружать данные в XML-формате. Это позволяет передавать данные выборочно, по любым условиям, и при этом не накладывает ограничений на идентичность конфигураций.
  2. Универсальные обработки выгрузки: Использование внешних обработок типа ExpDoc.ert. Они позволяют сериализовать данные в текстовые файлы или файлы DBF и загружать их в другую базу. Это полностью независимый от УРБД канал связи.
  3. Прямая работа с SQL (для SQL-версий): В некоторых случаях специалисты настраивают триггеры на таблицу регистрации изменений 1SDBSET. Проанализировав записи в этой таблице, можно программно удалять регистрации тех объектов, которые не должны участвовать в обмене для конкретной базы. Это «хакерский» метод, требующий глубоких знаний структуры таблиц 1С 7.7, и его стоит применять только в крайних случаях.

Итоги и рекомендации

Подведем итог нашему анализу. Реализовать выборочную передачу объектов в 1С 7.7 вполне реально. Если вы уже используете распределенную базу, оптимальным путем будет:

Помните, что любое вмешательство в механизмы распределенных баз требует обязательного создания резервных копий перед внесением изменений в структуру метаданных.

← На главную