КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Данные) Тогда
ПланыОбмена .ИзменеииеЗарегистрировано(ЧтениеСообщения.Отправитель, Сообщить("- Изменения отклонены"); Продолжить; КонецЕсли; КонецЦикла; ЧтениеСообщения.ЗакончитьЧтение(); ЧтениеXML.Закрыть(); УдалитьФайлы(ИмяФайла); Сообщить("----- Конец загрузки---------- "); КонецПроцедуры Возможная коллизия разрешается следующим образом: мы проверяем, является ли узел-отправитель главным узлом и есть ли записи об изменении этого объекта для этого узла в нашей базе
Теперь единственное, что нам осталось сделать - записать полученные данные:
// Сформировать имя файла ИмяФайла = Каталог +?(Прав(Каталог, 1) = "V,"", "\") + "Message" + СокрЛП(Ссылка.Код) + "_" + СокрЛП(ПланыОбмена.Филиалы.ЭтотУзел().Код) + ".xml"; Файл = Новый Файл(ИмяФайла); Если Не Файл.Существует() Тогда Возврат; КонецЕсли; //*** Чтение документов XML // Попытаться открыть файл ЧтениеXML = Новый ЧтениеXML; Попытка ЧтениеXML.ОткрытьФайл(ИмяФайла); Исключение Сообщить("Невозможно открыть файл обмена данными."); Возврат; КонецПопытки; Сообщить("----- Загрузка из " + Строка(ЭтотОбъект) + "-------- "); Сообщить(" - Считывается файл " + ИмяФайла); // Загрузить из найденного файла //*** Инфраструктура сообщений ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); //читать заголовок сообщения обмена данными - файла XML ЧтениеСообщения.НачатьЧтение^тениеXML); // Сообщение предназначено не для этого узяа Если ЧтениеСообщения.Отправитель <> Ссылка Тогда ВызватьИсключение "Неверный узел"; КонецЕсли; // Удаляем регистрацию изменений // для узла отправителя сообщения //*** служба регистрации изменений ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель,_ Обмен данными
// Читаем данные из сообщения //*** XML-сериализация Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл // Читаем очередное значение Данные = ПрочитатьXMLЧтениеXML); // Не переносим изменение полученное // в главный из неглавного // если есть регистрация изменения Если Не ЧтениеСообщения.Отправитель.Главный И ПланыОбмена.ИзменениеЗарегистрировано(ЧтениеСообщения.Отправитель, Данные) Тогда Сообщить("- Изменения отклонены"); Продолжить; КонецЕсли; // Записать полученные данные Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель; Даниые.ОбменДанными.Загрузка = Истина; ДанныеЗаписать(); КонецЦикла; ЧтениеСообщения.ЗакончитьЧтение(); ЧтениеXML.Закрьпъ(); УдалитьФайлы(ИмяФайла); Сообщить("----- Конец загрузки---------- "); КонецПроцедуры
Кроме этого, в параметрах обмена данными мы устанавливаем свойство «Загрузка», информирующее систему о том, что запись объекта будет происходить в режиме обновления данных, полученных в результате обмена. Такое указание позволяет системе упростить процедуру записи объекта, отказавшись от ряда стандартных проверок и исключив изменения связанных данных, которые выполняются при, обычной записи. На этом создание процедуры получения и обработки данных обмена закончено.
Использование основных объектов конфигурации Обмен данными
режде всего создадим новый каталог, в котором будет (Конфигурация | Сохранить конфигурацию в файл...). Запустим 1С:Предприятие в режиме отладки и установим необходимые значения в нашей центральной базе. Прежде всего зададим значение константы «ПрефиксНомеров» - «ЦБ»:
Затем создадим новый узел, который будет соответствовать базе филиала, присвоим ему код «Фил» и наименование «Филиал»:
Теперь вызовем обработку «ОбменДанными» и нажмем «Выполнить». В окне сообщений появится следующий текст:
Не забудьте, что именно код идентифицирует узлы обмена в различных базах, поэтому в базе филиала мы будем создавать узлы с такими же кодами.
Таким образом, в результате обмена данными центральная база сформировала файл обмена, содержащий изменения всех данных, которыми она обменивается с филиалом. Настало время перейти к базе филиала. Запустим систему в режиме (Конфигурация | Загрузить конфигурацию из файла...). Запустим 1С:Предприятие в режиме отладки.
Использование основных объектов конфигурации Обмен данными
Теперь, для большей наглядности откроем список справочника «Клиенты». Сейчас в этом справочнике нет ни одного элемента. Запустим обработку «ОбменДанными» и нажмем «Выполнить». Справочник будет заполнен элементами, а в окне сообщений появится текст:
Теперь проверим, как будет происходить обмен в другую сторону. Создадим в справочнике «Клиенты» нового клиента с произвольным наименованием. После этого снова нажмем «Выполнить» в открытой форме обработки «ОбменДанными». Затем перейдем в центральную базу, также выполним обмен данными и убедимся, что клиент, созданный в базе филиала перенесен в центральную базу. После этого создадим новый узел плана обмена с кодом «ЦБ», наименованием «Центральная база» и признаком «Главный»:
Обмен данными
еханизм распределенных информационных баз является развитием универсального обмена данными. Он реализует привычную, по версии 7.7, модель распределенной информационной базы, которая подразумевает наличие идентичных конфигураций во всех узлах, имеет древовидную структуру и позволяет выполнять обмен как измененными данными так и изменениями, внесенными в конфигурацию. Механизм распределенных информационных баз реализуется планами обмена. Для этого объект конфигурации План обмена содержит свойство «Распределенная информационная база». Если это свойство установлено, для данного плана обмена включается механизм распределенных информационных баз и разработчик получает возможность создать распределенную базу исключительно интерактивными средствами, без написания кода. Такая возможность не исключает программное управление обменом, которое также доступно при работе с распределенными информационными базами и в ходе создания примера мы рассмотрим оба варианта организации обмена в распределенных информационных базах. Основные сведения о распределенных информационных базах
ак мы уже говорили выше, распределенная информационная база должна иметь четко определенную древовидную структуру. Количество уровней в такой структуре не ограничено, главное - между двумя связанными узлами всегда должно быть определено отношение «главный - подчиненный»:
Таким образом, любой узел этой структуры может иметь произвольное количество подчиненных узлов (в том числе и ни одного). Кроме этого все узлы, кроме одного, должны иметь по одному главному узлу, и один узел не будет иметь главного узла - это корневой узел. Такое жесткое задание структуры узлов необходимо для определения порядка миграции изменений данных и изменений конфигурации. Конфигурация может быть изменена только в узле, не имеющем главного узла (то есть в корневом узле). Изменения данных могут выполняться в любом узле. Изменения конфигурации будут передаваться от главного к подчиненным узлам. Изменения данных могут передаваться между любыми связанными узлами.
Для любого подчиненного узла возможно создание начального образа - информационной базы, созданной на основании конфигурации и данных главного узла, в соответствии с правилами определяемыми планом обмена. Процедура создания начального образа узла может выполняться неоднократно, при этом удаляются все записи изменений в базе главного узла для подчиненного узла. Сразу после создания начальный образ готов к обмену с главным узлом. Создание начального образа является рекомендуемым способом создания подчиненного узла в распределенной информационной базе. Постановка задачи
качестве примера, на котором мы проиллюстрируем использование механизма распределенных информационных баз, будет создание нескольких отделений нашего OOO «На все руки мастер». В отличие от филиалов, которые расположены в других городах, являются отдельными юридическими лицами и довольно самостоятельны в плане организации учета своей деятельности, отделения нашего OOO расположены в этом же городе, никакой юридической самостоятельностью не обладают и ведут учет в точности так, как это организовано в главном офисе. Поэтому все они используют ту же конфигурацию, что и главный офис, причем, если главный офис вносит какие-либо изменения в свою конфигурацию, все эти изменения должны быть своевременно внесены и в конфигурации отделений. Для реализации такой схемы работы распределенная информационная база подойдет как нельзя лучше, и сначала мы организуем обмен с отделениями, используя исключительно интерактивные средства. Обмен данными
ля построения распределенной информационной базы нам понадобится создать еще один объект конфигурации План обмена, который мы назовем «Отделения». Для этого плана обмена мы установим свойство «Распределенная информационная база»: Установим свойство «Распределенная информационная база»...
Перейдем на закладку «Прочее» и определим тот же состав данных для обмена, что и в плане обмена «Филиалы»: отметим все объекты конфигурации, относящиеся к подсистеме «УчетУслугИМатериалов». Запустим 1С:Предприятие в режиме отладки.
Обмен данными
Запустим 1С:Предприятие, подключим новую базу нашего отделения и откроем ее в конфигураторе. Обратите внимание на то, что конфигурация нашего отделения стала защищена от изменений средствами управления распределенной информационной базой:
Стали доступны команды работы с распределенной информационной базой... Не откладывая в долгий ящик, воспользуемся первой из них, чтобы создать начальный образ информационной базы нашего отделения. Для этого нам потребуется сначала создать на диске новый каталог, в котором будет располагаться база отделения. После этого выполним команду «Создать начальный образ» и укажем, что информационная база будет расположена на данном компьютере:
Конфигурация подчиненного узла защищена от изменений средствами управления распределенной информационной базой...
Использование основных объектов конфигурации
Обмен данными
Теперь проверим работу обмена данными. Откроем список констант и зададим значение константы «ПрефиксНумерации» - «ОТ». После этого откроем справочник клиентов и добавим в него нового клиента. Затем выполним запись изменений для центральной базы (указав каталог обмена). Перейдем в центральную базу и выполним чтение изменений в центральной базе. Убедимся, что новый клиент, созданный в базе отделения, присутствует и в центральной базе. Теперь посмотрим, как будут переноситься изменения конфигурации между главным и подчиненным узлом. В конфигураторе центральной базы создадим новую константу с именем «НоваяКонстанта». Выполним обновление конфигурации базы данных и запустим 1С:Предприятие в режиме отладки. Откроем план обмена «Отделения» и выполним запись изменений для подчиненного узла. Теперь запустим конфигуратор базы отделения и увидим, что в основной конфигурации появилась новая константа «НоваяКонстанта», т.е. изменения, внесенные в конфигурацию центральной базы, были автоматически перенесены в конфигурацию подчиненного узла. Теперь единственное, что остается сделать - это выполнить обновление конфигурации базы данных в подчиненном узле. Следует сказать несколько слов о порядке принятия изменений, когда в одном сообщении получены как изменения конфигурации, так и изменения данных. В этом случае сначала будет изменена основная конфигурация и выдано сообщение о необходимости выполнения сохранения конфигурации базы данных. После объединения конфигураций следует выполнить повторное получение данных, при котором будут приняты уже изменения данных, содержащиеся в сообщении. Такой порядок принятия изменений не зависит от того, относятся ли измененные данные к существующим объектам конфигурации, или к новым. Программный обмен в распределенной информационной базе
се описанные выше действия по обмену данными в распределенной информационной базе можно выполнить программно. Мы создадим обработку, которая будет программно выполнять для выбранного узла все те действия, которые были рассмотрены в предыдущем разделе.
Использование основных объектов конфигурации
Дата добавления: 2014-11-16; Просмотров: 959; Нарушение авторских прав?; Мы поможем в написании вашей работы! |