1с 8 риб и добавленные объекты. Распределенная информационная база: Основы. Базовые принципы работы РИБ

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

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

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

В этой инструкции мы на примере создадим центральную и периферийную базы данных, проверим обмен между ними. Это пособие подойдет как для 1С 8.3 Бухгалтерия, так и для 1С Управление торговлей (УТ) и других конфигураций.

Настройка главной (центральной) распределенной базы РИБ

Зайдем в меню 1С «Администрирование», далее по ссылке «Настройки синхронизации данных». В открывшемся окне нужно установить флажок «Синхронизация данных». Станет активной ссылка «Синхронизация данных». Сразу здесь же установим префикс для главной информационной базы – например, «ЦБ»:

Заходим по ссылке «Синхронизация данных», откроется окно с кнопкой «Настроить синхронизацию данных». При нажатии на эту кнопку откроется выпадающий список, где нужно выбрать режим «Полный». Если требуется синхронизация только по одной организации, нужно выбрать «По организации…».

В следующем окне нам программа предложит сделать резервную копию. Настоятельно рекомендую сделать это, так как следующие шаги настройки могут быть необратимы.

После создания резервной копии нажимаем кнопку «Далее». На следующем шаге нам следует определиться, как будет происходить синхронизация:

  • через локальный каталог или каталог в локальной сети;
  • по интернету посредством FTP.

Для простоты и наглядности примера выберем локальный каталог. Я указал следующий путь: «D:\Базы 1С\Синхронизация». Не лишней будет проверка записи в данный каталог, для этого есть специальная кнопка:

Получите 267 видеоуроков по 1С бесплатно:

Следующие шаги с настройкой синхронизации по FTP и электронной почте пропускаем. Останавливаемся на настройках названий главной и периферийной баз данных. Здесь же зададим префикс для периферийной базы:

Не забывайте, что префиксы каждой базы должны быть уникальны. В противном случае Вы получите ошибку «Значение префикса первой информационной базы не уникально».

Жмем «Далее», проверяем введенную информацию и опять нажимаем «Далее», затем — «Готово». В поле «Полное имя файловой базы» указываем файл 1Cv8.1CD в каталоге, который создали для синхронизации. Создаем начальный образ распределенной базы 1С:

После создания начального образа РИБ в 1С можно задать расписание синхронизации или синхронизировать вручную:

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

Только сразу в новой периферийной базе заведите хотя бы одного пользователя с правами Администратора.

Настройка синхронизации в периферийной базе данных

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

Часто возникает ситуация, когда организация имеет несколько филиалов или торговых точек, территориально удаленных друг от друга. Тем не менее остается необходимость вести единый учет по всей организации. Одним из вариантов решения этой задачи является создание единой сети, в которую будут включены автоматизированные рабочие места всех филиалов, и размещение информационной базы 1С на общедоступном сервере. Этот способ может быть технически сложен и затратен. Кроме того, возникает ряд вопросов, связанных с информационной безопасностью.

Второй вариант — создание распределенной информационной базы (РИБ). Распределенная информационная база представляет собой иерархическую структуру, состоящих из отдельных информационных баз на платформе 1С:Предприятие, между которыми организован обмен данными с целью синхронизации конфигурации и данных. Эти отдельные информационные базы называются узлами РИБ.

Распределенная информационная база может быть создана на основе различных конфигураций системы 1С:Предприятие. Рассмотрим ее создание на примере 1С:Управление торговлей 10.3.

Допустим, в торговой организации открывается дополнительная торговая точка, в которой необходимо иметь доступ к общей торговой системе организации. Для создания РИБ необходимо выполнить следующие шаги:


На этом создание распределенной информационной базы завершено. Для обмена информацией необходимо запустить обмен данных в Центральной базе (выгрузятся изменения, которые произошли в ней), затем — в магазине (загрузятся изменения из центральной базы и выгрузятся изменения, произошедшие в магазине), и снова — в центральной базе (в нее загрузятся изменения, произошедшие в магазине).

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

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

Если у вас возникли проблемы с настройкой распределенной информационной базы, наши специалисты помогут вам настроить обмен данными и подробно объяснят, как его использовать.

В данной статье речь пойдет о настройке распределенной базы данных 1С предприятие 7.7, в качестве примера будет использована конфигурация Управление Торговлей 9.2.

Что бы настроить РИБ в 1С 7.7 нужно зайти в конфигуратор и перейти в Администрирование-Распределенная ИБ-Управление.

Затем необходимо конвертировать вашу базу в РИБ, если она ещё не конвертирована в РИБ, для этого нужно нажать кнопку "Центральная ИБ".

Установите Код и Описание как на скриншоте сверху и нажмите "OK". Должно появиться предупреждение как на скриншоте снизу, не обращайте на него внимания и нажмите "Да".
После этого ваша база будет готова для создания периферийных узлов.

Нажмите на кнопку "Новая периф. ИБ" и установите значения полей как на следующем скриншоте, впрочем, вы можете использовать свои обозначения.

Нажимаем OK и переходим к следующему шагу - настройке автообмена.

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

Выставляем все как на слайде, пути к каталогам у вас могут быть свои, галочки должны стоять как на скриншоте сверху. Нажимаем OK.

Теперь выгружаем начальный образ периферийной базы на диск, для этого нажимаем кнопку "Выгрузить данные". После выгрузки начального образа окно управления РИБ будет выглядеть следующим образом:

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

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

Нажимаем кнопку "Добавить" и указываем пусть к пустой папке и нажимаем OK.

Выбираем новую ИБ и переходим в режим конфигуратора.

В пустой папке мы создаем пустую ИБ, поэтому 1С просит указать нас в каком формате будет наша база, выбираем *.dbf. Нажимаем OK.

Теперь загрузим выгруженный на прошлых шагах zip-файл в нашу базу, для этого перейдем в администрирование-загрузить данные.

Укажем путь к файлу и нажмем OK.
По окончании загрузки нажмем OK и перейдем в администрирование-распределенная иб-автообмен.



На данном шаге необходимо учитывать правило: Директория выгрузки ЦБ = Директории загрузки ПБ и наоборот, т.е. если в центральной базе мы выгружали в папку out а загружали из папки in, то в периферийной базе мы будем загружать из папки out, а выгружать в папку in. Нажимаем OK и переходим к следующему шагу. Выполняем автообмен. Для этого в центральной базе зайдите в администрирование-распределенная иб-автообмен.


Нажмите кнопку "Выполнить", после чего проделайте то же самое на базе-клиенте. Проделайте операцию автообмена поочередно на каждом из компьютеров несколько раз.

Теперь автоматизируем процесс. Для этого необходимо создать по 4 файла на каждом компьютере. По 2 *.prm файла и по 2 *.bat файла на каждую из операций загрузки-выгрузки.

*.bat файл должен содержать в себе следующую строку:

"<путь к файлу 1cv77.exe>" config /D"<путь к информационной базе>" /N<логин> /P<пароль>/@"<путь к prm-файлу>"

У меня файлы загрузки и выгрузки выглядит так:

"C:\Program Files\1Cv77\BIN\1cv7s.exe" config /D"C:\base\rib\" /Nadmin /P1 /@"c:\download.prm"

"C:\Program Files\1Cv77\BIN\1cv7s.exe" config /D"C:\base\rib\" /Nadmin /P1 /@"c:\upload.prm"

Вы прописываете свои значения. Теперь разберемся с prm-файлами!

Структура файла.prm:

Секция “General” – предназначена для описания основных параметров работы пакетного режима. Возможные параметры:

Output – путь к лог-файлу;
- Quit – нужно ли завершить работу конфигуратора после выполнения всех заданий;
- AutoExchange – нужно ли выполнять автообмен;
- SaveData – нужно ли выполнять сохранение базы;
- UnloadData – нужно ли выполнять выгрузку;
- CheckAndRepair – нужно ли выполнить тестирование и исправление базы.

Возможными значениями данных параметров могут быть 1(Y) или 0(N).

Секция “AutoExchange” – предназначена для определения параметров автообмена. Параметры:

SharedMode – указывает режим работы с базы данных. Если параметр не задан, то будет использоваться монопольный режим;
- ReadFrom - указывает от каких баз следует получать данные. Идентификаторы баз необходимо указывать через запятую. Если же необходимы все, то ставится * ;
- WriteTo - указывает для каких баз следует выгружать данные. Если же необходимо для всех, то ставится * .

Секция “SaveData” – предназначена для определения параметров сохранения базы. Возможные параметры:

SaveToFile – указывает путь, куда будет производиться сохранение;
- FileList – указывает список сохраняемых файлов. Перечисляются имена файлов через пробел или запятую;

Секция “ UnloadData” – предназначена для определения параметров выгрузки данных. Параметры:

UnloadToFile – указывает путь сохранения, включая имя файла;
- IncludeUserDef – указывает нужно ли в файл переноса включать список пользователей;
- Password – указывает пароль,который будет установлен на файл переноса.

Секция “ CheckAndRepair” – предназначена для определения параметров восстановления базы данных. Возможные параметры:

Repair – указывает, необходимо ли проводить восстановление базы данных;
- PhysicalIntegrity – указывает, нужно ли проводить проверку физической целостности таблиц информационной базы;
- Reindex – указывает необходимость проведения реиндексации базы;
- LogicalIntegrity – указывает, необходимо ли проводить проверку логической целостности таблиц;
- RecalcTotals – указывает, необходимо ли производить пересчет итогов бухгалтерского и оперативного учета;
- Pack – указывает, необходимо ли освобождать место, занятое удаленными записями;
- SkipUnresolved – указывает, пропускать неразрешенные ссылки или их исправлять;
- CreateForUnresolved – указывает, способ разрешения неразрешенных ссылок. Если 1, то для неразрешенной ссылки будет создан объект соответствующего типа. Если же 0, то ссылка будет очищена.

Исходя из этого мои файлы будут содержать следующее:

для загрузки из ЦБ в периферийную:


Output = log.txt
Output = 1


ReadFrom = ЦБ

для выгрузки из ЦБ в периферийную:


Output = log.txt
Output = 1


WriteTo = ЦБ

для загрузки из периферийной в ЦБ:


Output = log.txt
Output = 1


ReadFrom = ПБ1

для выгрузки из периферийной в ЦБ:


Output = log.txt
Output = 1


WriteTo = ПБ1

Теперь достаточно поместить bat- и prm- файлы в одну папку и запускать по очереди для выполнения загрузки и выгрузки.

Если остались вопросы - wellcome в комментарии!

Это моя первая в жизни статья, конструктивная критика приветствуется.

Целевая аудитория - те, кто первый раз сталкивается с РБД.

Задачи РБД

Первое с чего необходимо начать - это ответить на вопрос «Зачем нам нужна РБД?». Вариантов ответов много, в частности:

  1. У нас есть филиалы, работающие в несвязных БД. Теперь мы хотим, чтобы информация между ними синхронизировалась;
  2. У нас есть филиалы, однако нагрузка на базу слишком велика (имеются ввиду блокировкитранзакций, не объем БД) и онлайн актуальность (не путать с актуальностью в несколько минут, онлайн - это когда после выполнения каждой транзакции данные передаются во второй узел) данных для филиалов не требуется;
  3. У нас есть филиалы, в которых происходит только ввод данных (например, розничные магазины), поэтому можно существенно снизить нагрузку на центральную БД;
  4. Из соображений безопасности мы хотим, чтобы в филиалах даже теоретически(с админ. паролем) не было доступа к важным данным, например балансу предприятия.

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

Также лучше сразу рассмотреть проблематику транспорта файлов обмена, потому что в некоторых случаях она может наложить существенные ограничения на реализацию обмена данных. Сначала необходимо определить в каких филиалах точно появятся узлы РБД (обычно это региональные филиалы). Далее рассматриваем, где ещё мы хотим установить узлы РБД, и нужна ли в них онлайн актуальность. Например, для розничных магазинов далеко не всегда есть возможность установки даже модема, а установка беспроводной связи будет слишком дорогая. Здесь необходимо принять решение - возможно, данный магазин может работать в оффлайне и периодически обмениваться с центром (раз в день/раз в неделю) с помощью физического носителя, например флешки.

В некоторых случаях обмен посредствам физического носителя невозможен, например это очень удаленный филиал, где есть существенные проблемы с наладкой высокоскоростной связи. Здесь стоит примерно подсчитать объем информации при обмене. Часто при актуальности раз в час либо несколько раз в день достаточно 32к модема. Однако стоить помнить, что вместе с обновлениями данных придется иногда присылать обновления самой конфигурации или внешних файлов (печатный формы, фотографии товаров), поэтому периодически будет возникать ситуация, когда файл обмена существенно увеличиться из-за таких обновлений.

Топология

Итого мы получили следующие вопросы, на которые необходимо ответить:

  1. В каких подразделениях мы гарантированно будем устанавливать узлы РБД и есть ли там возможность установить высокоскоростной канал;
  2. В каких подразделениях установка узла РБД не требуется;
  3. Какие подразделения могут работать с актуальностью в несколько часов;
  4. Какие подразделения могут работать в оффлайн режиме (обмен данными меньше 3-4х раз в день).

Ответив на эти вопросы, мы получаем приблизительную схему нашей РБД. Для крупных компаний обычно получается нечто следующее:

Рис 1. Типовая схема РБД крупной компании

Если с узлами «Филиал» все относительно ясно - это крупные центры, требующие автоматизации, то под узлами «Магазин» подразумевается узел с серьезной нагрузкой на БД при вводе данных, который для снижения нагрузки следует отделить. Например, магазин с 50-тью кассами и ежедневным товарооборотом больше 10000 единиц.

  • Магазины - ввод данных о собственном товарообороте и движении денежных средств. Аналитика поверхностная, только по своему магазину.
  • Филиалы - ввод данных неавтоматизированных точек, бухгалтерия, зарплата и кадры, производство и т.п. Аналитика в рамках собственного филиала.
  • Центр - ввод данных неавтоматизированных филиалов. Аналитика предприятия в целом.

Важно понимать в каких целях будет использоваться БД в каждом узле. От целей выстраиваются задачи, необходимые к реализации, например:

  • Филиалы видят историю взаиморасчетов с контрагентами друг друга;
  • Магазины видят остатки товаров во всем (либо части) предприятия;
  • Аналитика доходов/расходов, выполнения бюджета и т.п.видны только в рамках иерархии собственного подразделения;
  • Бухгалтерия, зарплата и кадры видны только в рамках иерархии собственного подразделения;
  • Номенклатура, все её свойства и характеристики видны во всех узлах РБД;
  • Относительно иерархии подразделений все данные попадают вверх, но фильтруются вниз;
  • В центр попадает абсолютно вся информация о компании.

Ставя перед собой подобные вопросы можно ответить на самый сложный вопрос - какая информация, где и как должна курсировать между узлами РБД? Почему самый сложный? Зная, какие наборы данных курсируют между узлами, можно однозначно понять, как «нарезать» текущую БД, чтобы данные оставались логически целостными. Например, нельзя данные об остатках товаров отрывать от данных о текущих резервах.

Теперь, в зависимости от потоков информации, перерисуем схему РБД:

Что мы видим на рисунке 2? Согласно иерархии подразделений компании выстроилась топология потока информации между узлами БД. Также добавился узел «Центр 2», почему? При реализации топологии «Звезда» нагрузка на центр всегда выше, чем нагрузка на периферийные узлы, при этом часто нагрузка, генерируемая самим узлом, и так высока. Примеры использования узлов «Центр 1» и «Центр 2»:

  1. «Центр 1» служит только для консолидации данных остальных узлов РБД. Доступ к нему имеет только администратор. «Центр 2» служит для работы головного офиса;
  2. «Центр 1» служит для работы головного офиса. Однако тяжелые аналитические, тестовые, создающие огромную нагрузку на БД, операции выполняются в узле «Центр 2»; например восстановление последовательности, перепроведение закрытых периодов, формирование сводных отчетов по всему предприятию за длительный промежуток времени, формирование аналитики, приводящей к изменению данных;
  3. «Центр 1» служит для работы головного офиса. «Центр 2» является резервным, на случай непредвиденных ситуаций для быстрого восстановления всей РБД.

Реализация обмена

Существуют 2 варианта работы РБД:

  1. Автоматический - происходит без участия пользователя. Контроль за внештатными ситуациями,возложен либо на администратора БД, либо на продвинутого пользователя;
  2. Ручной - обмен происходит только по желанию пользователя.

По своему опыту приводил все реализации всегда к автоматическому варианту. Если были проблемы с транспортом файлов обмена (наличие сети в узле не постоянно), то максимум, что позволял пользователю - это нажать кнопку «Произвести обмен сейчас». Ситуации, когда помимо обновления данных идет обновление конфигурации желательно приводить тоже к полностью автоматическим (например, используя стороннее ПО).

Формирование пакетов обновлений

Так как есть однозначное решение о том, на какие узлы РБД возложены какие функции, то можно сформировать только тот пакет данных, который нужен этому узлу. С одной стороны, необходимо указать какие типы объектов будут синхронизироваться между узлами. Например, регистры бухгалтерии для узла «Магазин 1» не должны вообще синхронизироваться, т.к. данные вводятся только на уровне узла филиала. С другой стороны те типы данных, которые подлежат обмену необходимо фильтровать с привязкой к подразделению. Например, данные о поступлении денег узла «Магазин 1 филиала 2» могут находиться только в узлах «Филиал 2», «Центр 1» и «Центр 2».

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

Также следует решить, на каком этапе своей жизни объект подлежит обмену. Например, обмену подлежат только проведенные расходные накладные, но никак не просто сохраненные. Либо Расходные накладные магазинов никогда не выгружаются из узла «Центр», даже после их корректировки, однако нужно учитывать обратный эффект - данные могут быть рассинхронизированы, либо какие-то изменения могут быть затерты.

Важно понимать - при обмене между узлами, какой-то из них является приоритетным. Рассмотрим ситуацию:

  1. В узле «Магазин 1» создали документ;
  2. При обмене он попал в узел «Филиал 1»;
  3. Документ корректируется одновременно в обоих узлах.

Какой из документов будет считаться истинным? В 1С 8.х при использовании механизма «Планы обмена» по умолчанию приоритетным является главный узел, т.е. в данном случае изменения, сделанные в узле «Магазин 1» будут утеряны и заменены на данные из узла «Филиал 1».

Есть другая, более сложная ситуация, когда корректируют одновременно два связных объекта. Например, расходная накладная и ПКО по ней корректируются в разных узлах, здесь существует вероятность потери целостности, если изменят цены, сумму оплаты, контрагентов и тп.

Также немаловажно контролировать удаление объектов, иначе это может привести к тому, что, например, расходной накладной уже существовать не будет, а движения по бухгалтерскому учету останутся.

Механизмы обмена в 1С 8.х

Существуют два подхода для реализации:

  1. Механизм «Планы обмена»;
  2. Собственная реализация регистрации объектов.

Рассмотрим оба варианта.

Механизм планов обмена позволяет, без какой либо настройки, за несколько минут, создать РБД с полным обменом данными. Если установить флаг «Распределенная информационная база», то при создании пакета обновления будут выгружены и обновления конфигурации. Всего за несколько минут можно настроить и правила разрешения/запрета обмена различными типами данных, открыв состав плана обмена. Если установить флаг «Авторегистрация» в положение «Запретить», то данный тип объекта, без дополнительных усилий, никогда обмениваться не будет.

Зачем нужна регистрация, почему не выгружать все и сразу? В любом случае файл, содержащий только изменения состояния БД, будет меньше полного снимка самой БД. Поэтому вариант полной выгрузки рассматриваться не будет.

Как настроить фильтрацию данных по принадлежности к подразделению? Здесь уже придётся программировать. В моей реализации на запись любого объекта была установлена подписка на событие «При записи», где, посредством свойства «ОбменДанными.Получатели», можно установить список получателей данного объекта. Т.е. при выгрузке стандартными средствами для узла, которого нету в списке, объект выгружен не будет. Есть и другое решение - выбирать выгружать ли объект можно непосредственно при выгрузке объекта, в процедурах «ПриОтправкеДанныхПодчиненному» и «ПриОтправкеДанныхГлавному» модуля плана обмена.

Оба варианта имеют право на существование. Однако в качестве лучшего варианта выбрал первый, потому что вычисление признака выгружаемости происходит сразу же при записи объекта, что увеличивает длительность записи объекта на 3-5% (можно оптимизировать, в некоторых случаях можно досвести до 0.01%) т.е. в среднем 0.1-0.3 секунды, а в случае расчета выгружаемости объекта непосредственно при отправке данных, которая и так создает существенную нагрузку на БД, это время будет составлять до нескольких минут.

Для полного понимания работы механизма «Планы обмена» рекомендую прочитать главу 15 книги «Профессиональная разработка в система 1С:Предприятие 8», Габец А.П., Гончаров Д.И.

Любая собственная реализация, на мой взгляд, либо повторит механизм «Планы обмена», либо будет выгружать объект сразу при изменении, либо будет выгружать больше, чем механизм «Планы обмена» (например, выгрузить все изменения за сегодняшний день). Данный вопрос не рассматриваю за неимением опыта реализации.

Транспорт

Задача транспортировки файлов от главного к подчиненному узлу сводиться к максимальной отказоустойчивости. Не редко файлы шифруются либо передаются по защищенному каналу. Для передачи файлов желательно использовать несколько различных служб, либо подготовить несколько различных вариантов подключения. Например, основной способ передачи - это используя FTP -сервер, подключенный через VPN -туннель; резервный - это e -mail сервер с TLS -подключением. Зачем нужен резервный канал с другой службой? Как показывает практика, использовать 2 различных FTP сервера менее надежно, чем FTP сервер и E -Mail .

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

Моя реализация РБД

Реализация полностью автономна, поэтому как подзадача выступала максимальная отказоустойчивость. Отсюда получилось 2 службы - служба транспорта обновлений и служба импорта/экспорта данных. Обе службы работают независимо друг от друга.

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

Для сокращения объема траффика xml -файлы упаковывались в zip -архивы. Система поддерживает два вида транспорта - FTP и E -mail .

В качестве настроек для фильтра данных существуют две таблицы. В одной (табличная часть планов обмена) хранятся условия по общим реквизитам (для каждого объекта система пытается найти этот реквизит), в другой настройки под конкретный объект метаданных. При записи любого объекта сначала происходит поиск условий по общим реквизитам (например, Подразделение), после чего система пытается определить, есть ли персональное правило на этот тип объекта по всем его реквизитам. Не рекомендую фильтровать списки - велика возможность ошибиться, например, из табличной части расходной накладной исчезнут несколько строк, а остатки при этом будут двигаться все и наоборот.

Важно понимать, под каким системным пользователем будут работать службы, т.к. может не хватить прав на создание файлов даже во временной папке 1С. Для отладки крайне рекомендую писать каждую, успешно выполненную, операцию в журнал регистраций, либо в txt -файл. В 1С 8.1 выполнение серверного кода отладить нельзя.

Для удобства отладки и настройки своей реализации прикладываю обработку "Регистрация изменений", описание которой находится в самой обработке.

Общая схема работы комплекса обмена данными указана на рис 3.

Фильтрация данных происходит в подписке на событие «ПередЗаписью» каждого объекта. Не стоит забывать, что при создании начального образа узла данные тоже необходимо отфильтровать. Процедура создания начального образа довольно длительна, поэтому рекомендую оптимизировать по максимуму её код (например, кэшировать настройки фильтрации).

Послесловие

Главная задача - это ответить на список вопросов:

  1. Зачем нам нужна РБД?
  2. Чем не устраивает работа через RDP- клиент?
  3. Где и почему мы хотим установить узлы РБД?
  4. Как будет происходить транспорт обновлений?
  5. Какой уровень отказоустойчивости будет реализован?

Обработка "РегистрацияИзменений"

Обработка позволяет принудительно регистрировать изменения в объектах. Есть несколько вариантов регистрации изменений:

  1. Если установлена галочка на каком-либо метаданном и НЕ выбран ни единый объект и НЕ установлен флаг "Выгружать по всем значениям", то РЕГИСТРИРУЕТСЯ ТОЛЬКО ВЫБРАННАЯ ТАБЛИЦА;
  2. Если установлен флаг "Выгружать по всем значениям", то выбранные метаданные будут выгружен по всем объектам в цикле;
  3. Если переключатель установлен в режим "Выгружать только выбранные объекты", то буду выгружены исключительно выбранные объекты (например: установка флага на метаданном без выбора объектов равносильна включенному флагу "Выгружать по всем значениям" и переключателю в позиции "Выгружать только выбранные объекты";
  4. Если переключатель установлен в режим "Выгружать выбранные и непосредственно связанные объекты" то буду выгружены выбранные объекты и те объекты, существование которых зависит от существования выбранного объекта(например: у справочников - подчиненные справочники);
  5. Если переключатель установлен в режим "Выгружать по всем ссылкам", то буду выгружены ВСЕ объекты в которых присутствует ссылка на выбранный объект.

Из дополнительного функционала доступно:

  • Перерегистрация зарегистрированных объектов, часто требуется для отладки;
  • Удаление зарегистрированных, часто требуется для отладки;
  • Печать изменений - печать полного перечня объектов, которые помечены как измененные;
  • Печать дерева конфигурации - только для удобства просмотра всей конфигурации.

Для создания распределенной информационной базы необходимо зайти программу в режиме "1С: Предприятие". Для создания узлов распределенной базы в меню выбираем: Операции - Планы обмена. Откроется окно «Выбор объекта: План обмена».


1. Рассмотрим вариант с планом обмена «Полный».

Обмен будет, осуществляться по всем организациям, находящимся в распределенной информационной базе.

Выберем план обмена «Полный». Откроется окно «План обмена полный».

Заполняем две записи:

Первую запись назовем «Главный узел», код укажем «ГУ»,

Вторую запись назовем «Подчиненный узел», код укажем «ПУ».

Как видим из рисунка, у первой записи значок изображен с зеленным кружком, это значок «Главного узла».


Для создания копии информационной базы «Главного узла», кликаем на «Подчиненный узел» и нажимаем на значок «Создать начальный образ». Это будет информационная база «Подчиненного узла».


Откроется окно «Создание начального образа ИБ», выбираем «На данном компьютере или на компьютере в локальной сети», нажимаем «Далее».


В поле «Каталог информационной базы» выбираем местоположение, куда будет установлена копия «Главного узла», нажимаем «Готово».


После создания информационной базы «Подчиненного узла» появится сообщение:


Нажимаем «Ок».

Добавляем информационную базу «Подчиненного узла» в "1С: Предприятие". Заходим в подчиненную базу в режиме "1С: Предприятие". Откроем: Операции - Планы обмена. Откроется окно «Выбор объекта: План обмена». Выберем план обмена «Полный». Откроется окно «План обмена полный». Видим что значок «Главного узла» оранжевый, это значит, что этот узел является главным для той информационной базы, в которой мы находимся.


Следующие настройки делаем и в Главном и в Подчиненном узле:

1. Добавляем префикс для распределенной информационной базы.

Это делается для того чтобы не возникало конфликтов в номерах и кодах документов и справочников, созданных в двух базах, поэтому в каждой базе указываем префикс, который будет добавляться в номера документов и коды справочников. Открываем: Сервис - Настройка программы - закладка «Обмен данными». В поле «Префикс узла для распределенной информационной базы:» в подчиненной базе вводим «ПУ», в главной базе вводим «ГУ».


2. Добавляем настройку обмена данными между узлами:

Открываем: Сервис - Распределенная информационная база (РИБ) - Настроить узлы РИБ. Откроется окно «Настройки обменов данными».


Нажимаем «Добавить», откроется окно «Настройка обмена данными». Вводим «Наименование» вашей настройки.


В поле «Узел» автоматически появится узел, для «Главного узла» будет «Подчиненный узел», для «Подчиненного узла» будет «Главный узел».

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

В поле «Тип обмена» настраиваем передачу данных между базами: через файловый или фтп-ресурс. Выбирем например «обмен через файловый ресурс».

В остальных полях ничего не меняем.

Нажимаем «Ок». Видим, что появилась настройка.

3. Для обмена данными делаем следующее:

Сначала в базе, в которой были сделаны изменения, нажимаем на значок «Выполнить обмен по текущей настройке», как показано на рисунке.


После выгрузки появится окно результата выгрузки.


Потом в базе, в которую необходимо передать изменения, нажимаем на значок «Выполнить обмен по текущей настройке» и данные попадут в ту базу, в которую вы хотите.

2. Рассмотрим вариант с планом обмена «По организации».

Обмен будет, осуществляется по выбранным организациям, находящимся в распределенной информационной базе.

Для создание узлов распределенной базы в меню выбираем: Операции - Планы обмена. Откроется окно «Выбор объекта: План обмена».


Выберем план обмена «По организации». Откроется окно «План обмена По организации».

Заполняем две записи:

Первую запись назовем «Главный узел», код укажем «ГУ», видим отличие от «Плана обмена: Полный», появилась таблица, в которой указываем Организации по которым будет происходить обмен.

Вторую запись назовем «Подчиненный узел», код укажем «ПУ», указываем организации.


Во всем остальном настройка идет абсолютно аналогично с «Планом обмена: Полный».