Задача.
Создать обработку, которая выгружает список документов в файл XML.
Обработка должна быть реализована в виде «внешней обработки». Необходимо, чтобы обработка работала в произвольной конфигурации на платформе 1С:Предприятие 8.1.
Обработка должна предусматривать возможность выбора:
- Период, документы из которого необходимо обработать.
- Признак документа «проведен», «помечен на удаление», «записан». Необходимо предусмотреть возможность использование нескольких «признаков» документов для обработки документов.
- Выбор видов обрабатываемых документов. Список видов документов необходимо взять из структуры метаданных текущей конфигурации.
Структура файла .xml:
Файл должен содержать два основные секции: «Справочники» и «Документы». Каждый выгружаемый в файл объект (элемент справочника или документ) должен иметь уникальный во всем файле идентификатор (id). Во время всех выгрузок объект должен иметь один и тот же идентификатор.
В секции «Справочники» должны располагаться вложенные секции, названия которых совпадают с названием «Вида» справочника, как он задан в конфигурации.
Если элемент справочника является группой, тогда он располагается в элементе файла, имеющем название «Группа». Если элемент справочника не является группой, тогда он располагается в элементе с названием «Элемент».
Для каждого элемента справочника необходимо выгрузить обязательные атрибуты:
- Id – уникальный идентификатор элемента.
- Код – код элемента справочника.
- Наименование – наименование элемента справочника.
- Родитель – элемент справочника, который расположен на уровень выше по отношению к данному элементу.
- Владелец - элемент справочника или документ, которому подчинен данный элемент справочника.
- Состояние – состояние элемента справочника, которое может принимать значение «записан» или «удален».
Каждый элемент справочника необходимо развернуть по структуре, т.е поместить в файл все реквизиты справочника. Значение реквизитов справочника помещаются в атрибуты элемента файла, имеющие названия, совпадающие с названиями реквизитов справочника, как они заданы в конфигураторе.
Если реквизит справочника имеет тип «Справочник» или «Документ», тогда он должен быть помещен в соответствующую секцию файла выгрузки согласно правилам выгрузки элементов справочников, а использование данного значение реквизита должно быть заменено значением id данного объекта. Если реквизит справочника имеет примитивный тип (строка, число, булево) или «Перечисление», тогда значение реквизита сразу помещается в файл.
Элементы справочника необходимо развернуть по иерархии, т.е. указать все элементы справочника, расположенные на более высоком уровне по отношению к текущему элементу.
Внутри секции «Документы» должны располагаться вложенные секции, названия которых совпадают с названием «Вида» документа, как он задан в конфигураторе. Каждый документ выгружается в элемент файла «Документ». Для каждого документа необходимо выгрузить обязательные атрибуты:
- Id – уникальный идентификатор документа
- Номер – номер документа
- Дата – дата документа
- Состояние – состояние документа, которое может принимать значение «проведен», «записан» или «удален».
Кроме того, в файл необходимо выгрузить значения реквизитов шапки документа, которые необходимо поместить в атрибуты элемента файла, названия которых совпадают с названием реквизита шапки документа в конфигураторе. Если реквизит документа имеет примитивный тип (строка, число, булево) или «Перечисление», тогда значение реквизита сразу помещается в файл. Если значение реквизита имеет тип «Справочник» или «Документ», тогда объект должен быть выгружен в соответствующий раздел файла, а в значение атрибута необходимо указать id данногообъекта.
Пример иерархии элементов файла XML:
- Справочники
- СправочникВид1
- Группа1
- Группа2
- Элемент1
- Элемент2
- Группа3
- Элемент3
- СправочникВид2
- Элемент1
- Документы
- ДокументВид1
- Документ1
- Документ2