Итак, зарегистрировавшись на сайте ФТС, стало понятно, что для создания документов Статистической отчетности по экспорту требуется выгрузка данных из документов Реализация товаров и услуг Управления торговлей и создания файла для загрузки.
Там возможно два варианта загрузки.
Первый: загрузка табличной части с Товарами из файла Excel (этот вариант и был выбран как рабочий, т.к. имел те плюсы, что не надо было возиться с обработкой "Шапки" документа, а можно было просто копировать предыдущий, изменив в "Шапке" то, что требовалось).
Второй: создание XML файла по схеме скачаной с сайта ФТС в виде "Альбома форматов электронных форм документов". Альбом представляет из себя достаточно большое количество XSD схем. В них была найдена схема "Статистической формы учета перемещения товара" и дополнительные файлы с описаниями типов для нее. Схемы прилагаются к статье в архиве с обработкой.
Для просмотра XSD схем использовался бесплатный Майкрософтовский XML Notepad 2007.
На изображении показан основной файл со схемой XSD "Статистическая форма учета перемещения товара". На изображении выделены основные блоки XSD схемы, требуемые нам для ее понимания.
Из схемы видно, что нам надо получить XML файл, заполненый структурой, указанной в ветке "xs:element" типа StaticFormType.
Структура может быть достаточно сложной (как и в нашем случае). С описаниями типов, присутствующими непосредственно в ветке, вынесенными в отдельную ветку или даже находящимися в другом файле.
Данная структура имеет тип StaticFormType, который в свою очередь, состоит из базового типа BaseDocType, набора объектов разных типов и текстовых аттрибутов.
Базовый тип BaseDocStyle описывается в другом файле (и пространстве имен).
Этот файл содержит в себе еще массу типов, которые не используются в нашем случае.
Теперь перейдем к работе в 1С. В двух словах, то что нам надо сделать сводится к следующему:
1. Создается ФабрикаXDTO
НашаФабрикаXDTO = СоздатьФабрикуXDTO(МассивПолныхИменФайловСоСхемамиXSD);
2. В фабрикеXDTO создаются все сложные типы данных, которые далее мы будем заполнять в создаваемом файле XML:
StaticFormType = МояФабрикаXDTO.Тип("urn:customs.ru:Information:CustomsDocuments:StaticForm:5.4.0", "StaticFormType");
Типы данных, входящих в некий тип, можно получить из коллекции его свойств:
CUOrganizationType = StaticFormType.Свойства.Получить("Consignee").Тип;
NameType = CUOrganizationType.Свойства.Получить("OrganizationName").Тип;
ShortNameType = CUOrganizationType.Свойства.Получить("ShortName").Тип;
LanguageCodeType = CUOrganizationType.Свойства.Получить("OrganizationLanguage").Тип;
3. Когда все сложные типа данных созданы, создаем на их основе структуру XML файла, состоящую из объектов ФабрикиXDTO:
StaticFormType_ОбъектXDTO = МояФабрикаXDTO.Создать(StaticFormType);
// коллекция с документами
NewDocuments = МояФабрикаXDTO.Создать(DocumentsType);
NewDocuments.PrDocumentName = МояФабрикаXDTO.Создать(PrDocumentNameType, "Товарная накладная");
NewDocuments.PrDocumentNumber = МояФабрикаXDTO.Создать(PrDocumentNumberType, "123-номер");
NewDocuments.PrDocumentDate = МояФабрикаXDTO.Создать(PrDocumentDateType, "2014-10-05");
StaticFormType_ОбъектXDTO.Documents.Добавить(NewDocuments);
Одновременно заполняем элементарные (простых типов) реквизиты.
4. Ну и наконец выгружаем все из ФабрикиXDTO в файл:
ФайлXML = Новый ЗаписьXML();
ФайлXML.ОткрытьФайл(ИмяФайла);
ФайлXML.ЗаписатьОбъявлениеXML();
МояФабрикаXDTO.ЗаписатьXML(ФайлXML, StaticFormType_ОбъектXDTO);
ФайлXML.Закрыть();
P.S. В архиве содержится файл заготовки выгрузки в XML (создаются только некоторые реквизиты, отражающие все случае заполнения файла) и схемы XSD.
Разархивировать все файлы в некоторую директорию.
XML будет создаваться в ней же.