XML-сериализация. Запись/чтение документов XML. Универсальный механизм обмена данными. Константа для обмена данных В режиме «Конфигуратор» ВниМАние!
XML-сериализация Термином XML-сериализация обозначается механизм, позволяющий представить объект «1С: Предприятия» в виде последовательности данных в формате XML. Кроме этого, XML-сериализация позволяет выполнить и обратное преобразование – представить последователь- ность данных формата XML в виде объекта «1С: Предприятия», если существует подходящий тип данных. Дело в том, что объект обмена, являющийся в системе «1С: Предприятие» единым целым, на самом деле представляет собой совокупность данных различных типов, определенным образом связанных между собой. Например, элемент справочника кроме кода и наименования может содержать некоторое количество реквизитов различного типа и некоторое количество табличных частей, содержащих, в свою очередь, некоторое количество реквизитов различного типа. В результате XML-сериализации вся эта совокупность данных пред- ставляется в виде последовательности соответствующих данных формата XML. Вследствие обратного преобразования производится «сборка» объекта при условии, что существует подходящий тип данных «1С: Предприятия». Запись/чтение документов XML В отличие от XML-сериализации, механизмы записи/чтения документов XML позволяют работать с данными формата XML на базовом уровне, без привязки к объектам «1С: Предприятия». В частности, они позволяют открывать файлы XML для чтения, читать данные из файлов, создавать новые файлы XML и записывать в них данные. Универсальный механизм обмена данными Итак, наше ООО «На все руки мастер» открыло свой филиал в городе N и установило в нем такую же конфигурацию для учета работы филиала. В результате возникла необходимость наладить обмен данными между этими двумя базами таким образом, чтобы каждая из них отражала полную информацию о материалах и услугах, в то время как бухгал- терский учет и расчет зарплаты велись бы в каждой базе отдельно.
Для этого мы создадим план обмена, опишем состав данных, которые будут включены в обмен, и сделаем несколько процедур, позволя- ющих нам формировать на жестком диске файлы обмена и соответ- ственно загружать полученные файлы обмена с жесткого диска. Для упрощения примера мы не будем программировать какой-либо автоматический обмен файлами между двумя базами, и запуск процедуры обмена будем осуществлять вручную. Прежде чем мы начнем непосредственно программировать алгоритм обмена, следует сказать о некоторых доработках, которые нам придется предварительно внести в нашу базу. Эти доработки будут связаны с тем, что до сих пор мы работали только в одной базе и использовали уникальность номеров кодов справочников и номеров документов. Теперь, когда создание новых элементов справочников и новых документов будет происходить в двух базах одновременно и незави- симо друг от друга, нам снова необходимо обеспечить уникальность номеров кодов элементов справочников и номеров документов теперь уже «в пространстве» двух баз. Если мы этого не сделаем, то не исключено, что в каждой из баз будут созданы, например, новые документы с одинаковыми номерами, и при обмене данными возникнет конфликт, поскольку система будет пытаться записать в базу документ с номером, который уже исполь- зуется другим документом. Для исключения подобных ситуаций в каждой базе к номерам доку- ментов и кодам справочников мы будем добавлять уникальный префикс, однозначно идентифицирующий базу данных. Тогда даже если номера новых документов в двух базах совпадут, они все равно будут отличаться префиксом, и конфликта не возникнет.
Для хранения префикса номеров мы используем объект конфигу- рации Константа.
Константа для обмена данных В режиме «Конфигуратор» ВниМАние! Поскольку на предыдущем занятии мы создали в конфигурации список пользователей, теперь при входе в конфигуратор система спросит имя пользователя. Нужно указать пользователя – Администратор, так как он имеет полный доступ ко всем объектам конфигурации. Пароль задавать не нужно, так как мы его не устанавливали.
Объект конфигурации Константа предназначен для создания в базе данных таблиц, в которых будет храниться информация, не изменяю- щаяся во времени или изменяющаяся очень редко. Каждый объект конфигурации Константа описывает таблицу для хранения одного значения. Теперь приступим к созданию константы, в которой мы будем хранить значение префикса номеров. Откроем конфигуратор и добавим новый объект конфигурации Константа с именем ПрефиксНумерации. Определим тип значения константы – Строка с фиксированной длиной 2 символа. Доработка объектов конфигурации, участвующих в обмене В режиме «Конфигуратор» Первое, что нам следует сделать, – внести изменения в модули всех объектов, участвующих в обмене (в нашем случае это будут документы, справочники и планы видов характеристик). Эти изменения будут заключаться в том, что теперь при форми- ровании номера документа и кода справочника или плана видов характеристик будет использоваться значение константы ПрефиксНу- мерации для обеспечения уникальности номеров и кодов в каждой из наших баз. Функцию формирования префикса номера мы вынесем в общий модуль, поскольку не исключена возможность того, что в будущем алгоритм формирования префикса документов может быть изменен. Добавим общий модуль Обмен. В модуль поместим следующую функцию (листинг 24. 1). листинг 24. 1. Функция формирования префикса номера Как вы видите, эта функция просто возвращает значение константы ПрефиксНумерации. Теперь доработаем справочник Клиенты. Выделим этот объект в дереве объектов конфигурации, вызовем контекстное меню и откроем модуль объекта. Добавим в него обработчик события ПриУстановкеНовогоКода
(листинг 24. 2). листинг 24. 2. Обработчик события «ПриУстановкеНовогоКода» Событие ПриУстановкеНовогоКода возникает в момент, когда выпол- няется установка нового кода элемента справочника. Обратите внимание, что мы пишем этот код не в модуле формы, а в модуле объекта, поскольку это событие возникает не для формы, а для объекта в целом. Вторым параметром вызова обработчика передается префикс, который будет заполнен в данной процедуре и использован системой для генерации кода. В обработчике события мы вызываем функцию общего модуля. Поскольку модуль неглобальный, то обращаемся к ней по имени модуля и имени функции (Обмен. ПолучитьПрефиксНомера). В этой процедуре мы устанавливаем префикс равным значению константы ПрефиксНумерации. Такие же обработчики нужно будет добавить во все справочники и планы видов характеристик, участвующие в обмене. В нашем случае это: справочники: □ Сотрудники, □ Склады, □ Номенклатура, □ ВариантыНоменклатуры, □ ДополнительныеСвойстваНоменклатуры, план видов характеристик: СвойстваНоменклатуры. После этого у всех этих объектов и у справочника Клиенты нужно (в палитре свойств объекта конфигурации) увеличить длину кода до 11 символов. Теперь займемся доработкой документов. В модуль документа ПриходнаяНакладная добавим обработчик события ПриУстановкеНовогоНомера (листинг 24. 3). листинг 24. 3. Обработчик события «ПриУстановкеНовогоНомера» Такие же обработчики нужно будет добавить во все документы, участвующие в обмене. В нашем случае это единственный документ – ОказаниеУслуги. После этого для обоих документов нужно (в палитре свойств объекта конфигурации) увеличить длину номера до 11 символов. На этом подготовительная работа с существующими объектами конфигурации завершена, и мы можем перейти к созданию процедур обмена данными.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|