Создание управленческой базы данных

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

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

1.Добавляем в модуль плана обмена «Полный» три функции:

1.1

Функция ЗаписатьНовоеСообщение(ЗаписьXML, ЗаписьСообщения)

НомерСообщения = ЗаписьСообщения.НомерСообщения;
Получатель = ЗаписьСообщения.Получатель;

СписокТипов = Новый СписокЗначений();

НачатьТранзакцию();
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(Получатель, НомерСообщения);
Пока ВыборкаИзменений.Следующий() Цикл

Данные = ВыборкаИзменений.Получить();
Если ТипЗнч(Данные) = Тип("УдалениеОбъекта") Тогда
Иначе
//     Если СписокТипов.НайтиПоЗначению(ТипЗнч(Данные)) = Неопределено Тогда
//         Продолжить;
//     КонецЕсли;
КонецЕсли;

ЗаписатьXML(ЗаписьXML, Данные);
КонецЦикла;
ЗафиксироватьТранзакцию();

Возврат НомерСообщения;
КонецФункции // ЗаписатьНовоеСообщение(ИмяФайла) 

1.2

Функция ВыгрузитьИзмененияДанныхДляУзла(Получатель, КоличествоЭлементовВТранзакции, ЗаписьXML) Экспорт
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Получатель);

ЗаписатьНовоеСообщение(ЗаписьXML, ЗаписьСообщения);
ЗаписьСообщения.ЗакончитьЗапись();

Результат = Истина;
Возврат Результат;
КонецФункции

1.3

Функция ЗагрузитьИзмененияДанныхДляУзла(УзелОбмена, КоличествоЭлементовВТранзакции, ЧтениеXML) Экспорт
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
НомерСообщения = ЧтениеСообщения.НомерСообщения;

НачатьТранзакцию();
Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
Данные = ПрочитатьXML(ЧтениеXML);

Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
Данные.ОбменДанными.Загрузка = Истина;

Данные.Записать();
КонецЦикла;
ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого);
ЗафиксироватьТранзакцию();
ЧтениеСообщения.ЗакончитьЧтение();

Результат = Истина;
Возврат Результат;
КонецФункции

2. Снимаем для плана обмена «Полный» флажок «Распределенная информационная база»

3. В настройках обмена данными указываем тип обмена — обмен через файловый ресурс

4. В случае, если нам нужен односторонний обмен, убираем авторегистрацию изменений базе приемнике.

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

5 Comments

  1. Anyxwar

    Какая то хрень

    Reply
  2. ShantinTD

    (1) Anyxwar, а тебе никогда не хотелось иметь в тестовой базе свежие данные, и при этом не делать каждый день загрузку?

    Согласен, что название статьи наталкивает на что-то другое, но представленная идея (не новая, конечно) — способ хотя бы немного облегчить жизнь разработчика.

    Так что или конструктивно называй, что не понравилось, или не говори ничего.

    Reply
  3. ALLES

    А чем плох старый добрый тотал-командер например. При сильном железе рабочую базу 1cv8.1cd копирует махом прямо во время работы в ней.

    Reply
  4. Alex1Cnic

    А если база в клиент-серверном варианте работает, то вообще можно, например, зеркалирование в СУБД настроить (MS SQL SERVER) или просто восстановить архив в формате SQL в копию базы на MS SQL SERVER (можно и по расписанию настроить)

    Reply
  5. sarun

    (3) ALLES, (4) Alex1Cnic задача ставилась создание не копии рабочей базы, а управленческой базы, в кототорой содержатся данные из рабочей базы и кроме этих данных в нее вводятся другие данные. Поэтому зеркалирование средствами SQL или просто бэкап не подходили…Наверное, можно было бы сделать средствами веб-сервисов, чтобы не мучиться с синхронностью обновлений, но пока оставлено в таком виде.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *