1с бухгалтерия риб. Алексей алексеев добро пожаловать в мой уютненький бложек

краткая характеристика
Количество установок не ограничено Использование с компонентой Бухгалтерский учет 7.7 да
Количество периферийных баз данных не ограничено Использование с компонентой Оперативный учет 7.7 да
Самостоятельная программа нет Использование с компонентой Расчет 7.7 да
Тип ключа защиты USB Доставка по России включена в стоимость да
Дистрибутив в комплекте да Особенности покупки по заявлению
Руководство по установке в комплекте да

Для чего нужно 1C:Предприятие 7.7. Управление распределенными информационными базами (1С УРБД, 1С УРИБ)

Сокращения и аббревиатуры: 1С УРБД - Управление распределенными базами данных; 1С УРИБ - Управление распределенными информационными базами.

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

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

Компонента 1С УРБД может использоваться только с профессиональными версиями программ системы "1С:Предприятие 7.7".

Сколько штук "1C:Предприятие 7.7. Управление распределенными информационными базами" нужно купить, например, для головного офиса и двух удаленных складов?

Компонента "1C:Предприятие 7.7. Управление распределенными информационными базами" - 1С УРБД - устанавливается для центральной информационной базы. Одна компонента позволяет синхронизировать неограниченное количество периферийных информационных баз. Т.о., например, для синхронизации головного офиса и двух удаленных складов необходим один экземпляр "1C:Предприятие 7.7. Управление распределенными информационными базами".


Ключевые слова: распределенная, УРБД, XML, регистрация, узел, узла, авторегистрация, начальный, образ, POP3, SMTP, ПочтовоеСообщение, периферийная, центральная, репликация, обмен

Дисклеймер и условия использования

Все случайно упомянутые в статье торговые марки принадлежат своим владельцам.
Статья опубликована под лицензией Creative Commons Attribution-Share Alike 3.0 Unported License.
http://creativecommons.org/licenses/by-sa/3.0/

Сразу замечу, что все нижеследующее относится к релизу платформы 8.0.7.36 и выше.

Шаг 1. Создание плана обмена

Создаем в конфигурации план обмена. Называем его, например "РаспределеннаяБаза". Обязательно в
свойствах плана обмена ставим флажок "Распределенная информационная база".

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

Замечание: при добавлении новых объектов в конфигурацию, они не включаются в план обмена. Т.е. после
добавления объекта его необходимо добавить в состав плана обмена.

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

В принципе, этих действий достаточно, чтобы РБД заработала в "ручном" режиме. Для этого запускаем
Предприятие, открываем наш план обмена через меню "Операции". В плане обмена всегда присутствует
предопределенный узел "с точкой". Это описание текущего узла. Его нужно открыть и заполнить. В нашем
случае будут доступны поля "Код" и "Наименование". Присвоим нашему узлу код "AA" и назовем
"Центральная". Добавим в план обмена один узел. Присвоим ему код "ВВ" и назовем "Периферийная".

Теперь мы можем создать образ периферийной базы. Делается это нажатием кнопки "Создать начальный
образ". В списке узлов должна быть выбрана периферийная база. Образ базы создается в виде готовой ИБ
в каталоге или на сервере 1С:Предприятия. (в отличие от 7.7, где образ ИБ создавался как файл
выгрузки). Далее созданную базу можно перенести в нужное место, просто скопировав файлик 1CV8.1CD
(для файлового варианта), либо через Конфигуратор через выгрузку-загрузку данных.

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

Обмен в "ручном" режиме можно производить при помощи кнопок "Записать изменения" и "Прочитать
изменения". В первом случае будет предложено выбрать файл, куда изменения будут записаны, во втором
- файл, откуда изменения будут считаны. Обмен ведется в формате xml. Изменения записываются для
выбранного узла.

Шаг 2. Выгрузка изменений в XML-файл и отправка по электронной почте

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

Добавляем в план обмена два реквизита: ЭлектронныйАдрес типа "строка" и "ВыполнятьОбмен" типа
"булево". В реквизите ЭлектронныйАдрес будем хранить email узла, т.е. тот адрес, на который будем
посылать сообщения обмена. Реквизит ВыполнятьОбмен нужен, чтобы быстро отключить автоматическую
посылку-отправку сообщений.

Процедуру для работы с электронной почтой сделаем универсальной, т.е. сделаем возможным
использование как MAPI (отправка-получение через почтового клиента, например, MS Outlook), так и
прямое обращение к SMTP/POP3 серверам.

Добавим в конфигурацию несколько констант:

где-нибудь в общей форме обеспечиваем редактирование значений этих констант.

Добавим общий модуль, назовем его "рбРаспределеннаяБаза". В нем пишем:

Процедура рбОтправитьСообщенияОбмена() Экспорт ИспользоватьSMTP = Константы.ИспользоватьОбменПоSMTP.Получить(); //Сначала создаем объект Почта, который в зависимости от настроек будет типа ИнтернетПочта, //если используется прямое обращение к серверам, либо Почта если используется MAPI. Если ИспользоватьSMTP Тогда //Для объекта типа ИнтернетПочта создаем и заполняем почтовый профиль. ПочтовыйПрофиль = Новый ИнтернетПочтовыйПрофиль; ПочтовыйПрофиль.АдресСервераSMTP = Константы.АдресСервераSMTPОбмена.Получить(); ПочтовыйПрофиль.ПортSMTP = Константы.ПортСервераSMTPОбмена.Получить(); ПочтовыйПрофиль.ПользовательSMTP = Константы.ПользовательСервераSMTPОбмена.Получить(); ПочтовыйПрофиль.ПарольSMTP = Константы.ПарольПользователяSMTPОбмена.Получить(); ПочтовыйПрофиль.ВремяОжидания = Константы.ВремяОжиданияСервера.Получить(); Почта = Новый ИнтернетПочта(); Попытка Почта.Подключиться(ПочтовыйПрофиль); Исключение Сообщить("ОБМЕН: Ошибка при подключении к почтовому профилю! Обмен не выполнен! " + ОписаниеОшибки(), СтатусСообщения.ОченьВажное); Возврат; КонецПопытки; Иначе Почта = Новый Почта(); Попытка Почта.Подключиться(); Исключение Сообщить("" + ОписаниеОшибки(), СтатусСообщения.ОченьВажное); Возврат; КонецПопытки; КонецЕсли; //Далее выбираем все узлы из плана обмена, за исключением текущего, //у которых установлен реквизит ВыполнятьОбмен. ВыборкаУзлов = ПланыОбмена.РаспределеннаяБаза.Выбрать(); Пока ВыборкаУзлов.Следующий() Цикл Если Не ВыборкаУзлов.ВыполнятьОбмен Тогда Продолжить; КонецЕсли; Если ВыборкаУзлов.Ссылка = ПланыОбмена.РаспределеннаяБаза.ЭтотУзел() Тогда Продолжить; КонецЕсли; ЭлектронныйАдрес = СокрЛП(ВыборкаУзлов.ЭлектронныйАдрес); Если ЭлектронныйАдрес = "" Тогда Продолжить; КонецЕсли; //С помощью объектов ЗаписьXML и ЗаписьСообщения выполняем запись изменений //для выбранного узла в xml-файл. Узел = ВыборкаУзлов.Ссылка; ЗаписьXML = Новый ЗаписьXML(); ИмяФайлаСообщения = КаталогВременныхФайлов() + "Message_ " + СокрЛП(ПланыОбмена.РаспределеннаяБаза.ЭтотУзел().Код) + "_ " + СокрЛП(Узел.Код) + ".xml "; ЗаписьXML.ОткрытьФайл(ИмяФайлаСообщения); ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения(); ЗаписьСообщения.НачатьЗапись(ЗаписьXML,Узел); ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщения); ЗаписьСообщения.ЗакончитьЗапись(); ЗаписьXML.Закрыть(); //Затем создаем новое письмо, прикрепляем к нему полученный xml-файл и //отправляем по адресу, указанному в реквизите ЭлектронныйАдрес узла. Файл = Новый Файл(ИмяФайлаСообщения); ТемаСообщения = "1С:Обмен " + СокрЛП(ПланыОбмена.РаспределеннаяБаза.ЭтотУзел().Код) + "_ " + СокрЛП(Узел.Код); Если ИспользоватьSMTP Тогда ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение; ПочтовоеСообщение.Тема = ТемаСообщения; ПочтовоеСообщение.Вложения.Добавить(ИмяФайлаСообщения, Файл.Имя); ПочтовоеСообщение.Получатели.Добавить(ЭлектронныйАдрес); Почта.Послать(ПочтовоеСообщение); Иначе ПочтовоеСообщение = Новый ПочтовоеСообщение; ПочтовоеСообщение.Тема = ТемаСообщения; ПочтовоеСообщение.Вложения.Добавить(ИмяФайлаСообщения); ПочтовоеСообщение.Получатели.Добавить(ЭлектронныйАдрес); Почта.Послать(ПочтовоеСообщение, Ложь); КонецЕсли; Если Константы.ВыводитьСообщенияОбмена.Получить() Тогда Сообщить("ОБМЕН: Сообщение обмена для узла " + Узел.Наименование + " отправлено! ", СтатусСообщения.Информация); КонецЕсли; УдалитьФайлы(ИмяФайлаСообщения); КонецЦикла; Почта.Отключиться(); КонецПроцедуры

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

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

Шаг 3. Получение обновлений по электронной почте и запись их в ИБ

Теперь займемся обратной процедурой: получение обновлений по электронной почте и запись их в ИБ.

В параметры сеанса добавим параметр "ИдетОбменРаспределеннойБазы" типа Булево. Ниже я объясню его
назначение.

Добавим в общий модуль рбРаспределеннаяБаза такую процедуру:

Процедура рбПолучитьСообщенияОбмена() Экспорт ИспользоватьSMTP = Константы.ИспользоватьОбменПоSMTP.Получить(); //так же, как в процедуре рбОтправитьСообщенияОбмена(), сначала создаем объект Почта Если ИспользоватьSMTP Тогда ПочтовыйПрофиль = Новый ИнтернетПочтовыйПрофиль; ПочтовыйПрофиль.АдресСервераPOP3 = Константы.АдресСервераPOP3Обмена.Получить(); ПочтовыйПрофиль.ПортPOP3 = Константы.ПортСервераPOP3Обмена.Получить(); ПочтовыйПрофиль.Пользователь = Константы.ПользовательСервераPOP3Обмена.Получить(); ПочтовыйПрофиль.Пароль = Константы.ПарольПользователяPOP3Обмена.Получить(); ПочтовыйПрофиль.ВремяОжидания = Константы.ВремяОжиданияСервера.Получить(); Почта = Новый ИнтернетПочта(); Попытка Почта.Подключиться(ПочтовыйПрофиль); Исключение Сообщить("ОБМЕН: Ошибка при подключении к почтовому профилю! |Обмен не выполнен! ", СтатусСообщения.ОченьВажное); Возврат; КонецПопытки; Иначе Почта = Новый Почта(); Попытка Почта.Подключиться(); Исключение Сообщить("ОБМЕН: Ошибка при подключении к почтовому профилю пользователя! |Обмен не выполнен! ", СтатусСообщения.ОченьВажное); Возврат; КонецПопытки; КонецЕсли; МассивСообщений = Новый Массив; Если ИспользоватьSMTP Тогда ВсеСообщения = Почта.Выбрать(Ложь); Иначе ВсеСообщения = Почта.Выбрать(Ложь, Ложь); КонецЕсли; //Отбираем среди всех писем те, которые имеют тему "1С:Обмен". //Маленькое, но важное замечание: //считаем, что все полученные письма с темой "1С:Обмен" предназначены //именно для текущего узла, //т.е. что у разных узлов в плане обмена РАЗНЫЕ электронные адреса. Для Каждого Сообщение Из ВсеСообщения Цикл Если Лев(Сообщение.Тема, 8 ) <> "1С:Обмен " Тогда Продолжить; КонецЕсли; Попытка МассивСообщений.Добавить(Сообщение); //Вложение письма сохраняем на диске. //Аккуратную проверку вложения оставим пока "за кадром." Вложение = Сообщение.Вложения; ИмяФайлаСообщения = КаталогВременныхФайлов() + Вложение.Name; ДанныеОбмена = Вложение.Данные; ДанныеОбмена.Записать(ИмяФайлаСообщения); //С помощью объектов ЧтениеXML и ЧтениеСообщения читаем данные //обновления из сохраненного файла. Перед записью обновлений в ИБ //устанавливаем параметр сеанса ИдетОбменРаспределеннойБазы в Истина. //Затем читаем изменения в ИБ: ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения). //Попутно сохраняем сообщения в массиве, чтобы потом их все сразу удалить. ЧтениеXML = Новый ЧтениеXML(); ЧтениеXML.ОткрытьФайл(ИмяФайлаСообщения); ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); ЧтениеСообщения.НачатьЧтение(ЧтениеXML); ПараметрыСеанса.ИдетОбменРаспределеннойБазы = Истина; ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения); ЧтениеСообщения.ЗакончитьЧтение(); ЧтениеXML.Закрыть(); Если Константы.ВыводитьСообщенияОбмена.Получить() Тогда Сообщить("ОБМЕН: Данные обмена приняты ",СтатусСообщения.Информация); КонецЕсли; Исключение Сообщить("ОБМЕН: Ошибка при получении данных обмена: " + ОписаниеОшибки(), СтатусСообщения.ОченьВажное); КонецПопытки; //После того, как чтение данных обмена закончено, возвращаем //параметру сеанса ИдетОбменРаспределеннойБазы значение Ложь. ПараметрыСеанса.ИдетОбменРаспределеннойБазы = Ложь; Попытка УдалитьФайлы(ИмяФайлаСообщения); Исключение //если не получилось, ну и ладно КонецПопытки; КонецЦикла; Если ИспользоватьSMTP Тогда Почта.УдалитьСообщения(МассивСообщений); КонецЕсли; Почта.Отключиться(); КонецПроцедуры

Теперь про то, для чего нужен параметр сеанса ИдетОбменРаспределеннойБазы.
Дело в том, что при чтении данных методом ПланыОбмена.ПрочитатьИзменения() происходит вызов
процедур-обработчиков события ПередЗаписью() изменяемых/добавляемых объектов. И если при записи
какого-либо объекта в процедуре обработчике параметр Отказ будет установлен в значение Истина, то
при выполнении ПланыОбмена.ПрочитатьИзменения() возникнет исключение, и, соответственно, обмен
выполнен не будет. Значение параметра сеанса ИдетОбменРаспределеннойБазы может быть
проанализированно в процедурах-обработчиках, дабы избежать подобной ситуации.
С выходом редакции 12 (хотя я могу ошибаться в версиях), актуальность этого метода несколько
устарелаА, поскольку у объектов появилось свойство ПараметрыОбмена , у которого, в свою . Это свойство принимает значение Истина, когда идет
сохранение данных через план обмена.

Теперь в интерфейсе на нашей панели добавляем еще одну кнопку, на которую вешаем вызов этой
процедуры. Запускаем Предприятие и наслаждаемся.
Почти все сделано, осталась малость: заставить наши процедуры выполняться в автоматическом режиме.
Шаг 4. Настройка автоматического обмена

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

Добавим константу ИнтервалАвтообменаРаспределеннойБазы типа Число(5,0).

В настройки пользователя добавим параметр ВыполнятьОбменРаспределенныхБаз. Для конфигурации
"Управление торговлей" это делается так:

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

В модуль рбРаспределеннаяБаза добавляем процедуру:

Процедура рбВыполнитьОбмен(прПользователь) Экспорт Если нпПолучитьЗначениеПоУмолчанию(прПользователь, "") Тогда рбПолучитьСообщенияОбмена(); рбОтправитьСообщенияОбмена(); КонецЕсли; КонецПроцедуры

в модуль приложения:

Процедура ПроверитьПодключениеАвтообмена() Экспорт Если нпПолучитьЗначениеПоУмолчанию(глТекущийПользователь, "ВыполнятьОбменРаспределенныхБаз ") И Константы.ИнтервалАвтообменаРаспределеннойБазы.Получить() > 0 Тогда ПодключитьОбработчикОжидания("ВыполнитьАвтообмен ", Константы.ИнтервалАвтообменаРаспределеннойБазы.Получить()); Иначе ОтключитьОбработчикОжидания("ВыполнитьАвтообмен "); КонецЕсли; КонецПроцедуры Процедура ВыполнитьАвтообмен() Экспорт рбВыполнитьОбмен(глТекущийПользователь); ОтключитьОбработчикОжидания("ВыполнитьАвтообмен "); Если нпПолучитьЗначениеПоУмолчанию(глТекущийПользователь, "ВыполнятьОбменРаспределенныхБаз ") И Константы.ИнтервалАвтообменаРаспределеннойБазы.Получить() > 0 Тогда ПодключитьОбработчикОжидания("ВыполнитьАвтообмен ", Константы.ИнтервалАвтообменаРаспределеннойБазы.Получить()); КонецЕсли; КонецПроцедуры Процедура ОтключитьАвтообмен() Экспорт ОтключитьОбработчикОжидания("ВыполнитьАвтообмен "); КонецПроцедуры

в процедуру ПриНачалеРаботыСистемы() модуля приложения добавим такие строки:

(после подключения торгового оборудования)
...
ПараметрыСеанса.ИдетОбменРаспределеннойБазы = Ложь; ПроверитьПодключениеАвтообмена();

Добавим на нашу панель еще пару кнопок для управления процессом: на одну вешаем процедуру
ПроверитьПодключениеАвтообмена(), на другую - ОтключитьАвтообмен()

Запускаем предприятие, настраиваем свойства пользователя и интервал автообмена и все!

Теперь при заходе в базу под этим-самым-настроенным пользователем будет запускаться обработчик
ожидания ВыполнитьАвтообмен(). Естественно, в периферийной базе тоже нужно настроить пользователя
для обмена.

Еще одно маленькое, но важное замечание:

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

1cv8.exe CONFIG /F<путь к ИБ> /N<Пользователь> /P<Пароль> /UpdateIBCfg

И еще одно замечание:

К сожалению, xml-файлы не отличаются компактностью, но, к счастью, прекрасно сжимаются. Можно в
процедуры отправки и получения сообщений добавить упаковку-распаковку файлов. COLOR="#666666">Делать это можно либо внешним архиватором, либо используя ВК, например Wheel.AddIn
(http://1c.proclub.ru/modules/mydownloads/personal.php?cid=81&lid=2714) .
С выходом 10 (кажется) редакции, предыдущее предложение несколько устарело, поскольку в платформу
были встроенны средства сжатия файлов по алгоритму ZIP. Т.е. теперь есть возможность сжимать файлы
без использования ВК.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ОЛЕГ ФИЛИППОВ , АНТ-Информ, заместитель начальника отдела разработки, [email protected]

РИБ в 1С. Границы возможностей

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

Часто, читая форумы или статьи online-авторов по поводу РИБ в 1С, можно встретить противоречивые мнения от «это лучшее и единственное, что можно использовать» до «оно безнадежно устарело». Давайте постараемся разобраться, какобстоят дела на самом деле.

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

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

  • Служба регистрации изменений – при включении начинает автоматически регистрировать изменения объектов или записей для обмена (или других целей). В режиме РИБ используется также для регистрации изменений конфигурации информационной базы.
  • Сериализация объектов/записей в XML. Практически любой объект 1С:Предприятия штатным образом сериализуется в XML.
  • Механизм поддержки одинаковой конфигурации всех узлов распределенной информационной базы. В режиме РИБ обмен данными между различными узлами возможен только в случае если у них одинаковая конфигурация. Переносится она при обмене автоматически. В конечном узле нужно только принять изменения.
  • Инфраструктура сообщений при обмене в распределенной информационной системе – гарантированная доставка. Зарегистрированные изменения упаковываются в сообщения и отправляются на конечный узел в пакетах. Удаляются изрегистрации только после подтверждения доставки пакета.
  • Инфраструктура уровня прикладных решений. Конечно, все вышеперечисленное не будет работать без развитых механизмов на уровне прикладных решений, часть из которых уже включена в БСП. В решениях реализована возможность выгружать данные по определенным правилам, изменять принципы их регистрации, определять способ доставки пакета.

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

Из описания выше можно сделать вывод о возможностях РИБ 1С как распределенной системы:

  • Поддержка единой конфигурации информационной базы (полуавтоматизированная).
  • Поддержка отслеживания изменений.
  • Гарантированная доставка.
  • Возможность схемы master-master.
  • Возможность схемы «звезда».
  • Возможность выборочной фильтрации изменений.

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

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

Постараемся теперь сравнить это с какой-либо «продвинутой» системой, которая имеет механизм репликации.

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

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

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

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


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

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

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

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

Похожие статьи