Для облегчения интеграции с программными продуктами фирмы «1С» разработан формат обмена данными EnterpriseData. Формат основан на XML и является бизнес-ориентированным – описанные в нем структуры данных соответствуют бизнес-сущностям (документам и элементам справочников), представленным в программах «1С», например: акт выполненных работ, приходный кассовый ордер, контрагент, договор и т. п. Это делает формат интуитивно понятным и легким в использовании.
Формат EnterpriseData предназначен для обмена данными внутри компании (в том числе между разнородными и территориально удаленными информационными системами) и призван покрыть все сферы деятельности предприятия – финансы, производство, закупки и продажи, складские операции и т. п.
Я считаю что EnterpriseData это удобный современный стандарт, применение которого дает массу преимуществ по переносу данных программисту не особо знакомому с современными конфигурациями 8.3. Способов перенести даные из 7.7 в 8.3 безусловно много, но конкретно этот способ силён заимствованной методикой универсального переноса EnterpriseData, обеспечивающего корректное заполнение любых документов современной конфигурации.
Особенности отладки EnterpriseData
Для настройки обмена на принимающей стороне я использовал публикацию 1С: Конвертация данных 3. Инструкции и примеры. EnterpriseData (универсальный формат обмена) //infostart.ru/public/695523/
Данная публикация родилась в процессе перехода с устаревшей очень сильно переписаной (для торговли) комплексной 1С 7.7 на современную 1С 8.3 ЕРП. Самая большая работа по созданию обмена была проделана в 7-ке, разработаны генераторы текста XML для отправки отдельных документов. Однако еще предстоит узнать Сможем ли мы создать собственные правила конвертации? Еще предстоит разобраться как должен выглядеть модуль менеджера обмена данными правил конвертации в 7ке. Кому интересна данная тема прошу Вас, не проходить мимо, присоединяйтесь к обсуждению на форуме и давайте поможем друг другу и вместе найдем истину, как эффективно переводить такие конфигурации на современные 8.3.
По ссылке https://its.1c.ru/db/metod8dev#content:5934:hdoc доступно описание формата EnterpriseData. Однако руководствоваться данным описанием к действию нельзя. Чтобы выполнить перенос данных 7.7 - 8.3 НУЖНО ОТКРЫТЬ ОПИСАНИЕ СХЕМЫ В КОНФИГУРАТОРЕ 1С:Предприятия 8 (принимающей системы) и выполнить формирование XML в соответствии с ним.
Дело в том, что реализация этого формата в современных конфигурациях требует соблюдения последовательности вывода полей, которая сильно отличается от заложенной в формате.
Нужно приготовиться к тому что сообщения об ошибках при загрузке в современную конфигурацию будут не всегда понятные, в них мало диагностической информации и поэтому опыт их интерпретации а мой взгляд надо накапливать.
Например если в Вашем описании в одном из блоков не хватает некоторых полей (как у меня не было).
неправильно на основе стандарта (не правильеный блок XML):
<Организация>
<ИНН>366223864212</ИНН>
<КПП>366201001</КПП>
<Наименование>Общество с ограниченной ответственностью «Сигма»</Наименование>
<НаименованиеПолное>Общество с ограниченной ответственностью «Сигма»</НаименованиеПолное>
<НаименованиеСокращенное>ООО «Сигма»</НаименованиеСокращенное>
<Ссылка>7d84c015-df1a-11e7-80d4-b0cb018bb13a</Ссылка>
<ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
</Организация>
описание ошибки при следовании стандарту:
В ходе выполнения операции возникли ошибки:
Событие: Получение.
Объект XDTO: Не определено, .
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(1614)}: Ошибка при вызове метода контекста (ПрочитатьXML)
ФабрикаXDTO.Тип(КомпонентыОбмена.ФайлОбмена.URIПространстваИмен, КомпонентыОбмена.ФайлОбмена.ЛокальноеИмя));
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5}КлючевыеСвойстваОрганизация - [17,25]
Проверка свойства 'ИНН':
форма: Элемент
имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5}ИНН
тип:
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5}КлючевыеСвойстваОрганизация
Проверка свойства 'ИНН':
форма: Элемент
имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5}ИНН
тип:
Не установлено значение одного из следующих свойств: Наименование
правильный блок при сдедовании схеме пакета XDTO которая находится в ветке "Общие - XDTO пакеты" дерева конфигурации:
<Организация>
<Ссылка>7d84c015-df1a-11e7-80d4-b0cb018bb13a</Ссылка>
<Наименование>Общество с ограниченной ответственностью «Сигма»</Наименование>
<НаименованиеСокращенное>ООО «Сигма»</НаименованиеСокращенное>
<НаименованиеПолное>Общество с ограниченной ответственностью «Сигма»</НаименованиеПолное>
<ИНН>366223864212</ИНН>
<КПП>366201001</КПП>
<ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
</Организация>
При отступлении от схемы XDTO помещенной в 1С также возможны так же ошибки "недостаточно полей", "Нарушен порядок полей" или "не верный тип поля", "не установлено значение одного из свойств".
Нужно внимательно называть поля так, как они называются в схеме XDTO в конфигурации. В пакете XDTO дерева конфигурации можно найти все объекты, на которые указывают сообщения об ошибках, выводимые при импорте данных. Например, если назвать поле <ВидРасчета>СПоставщиком</ВидРасчета> а в схеме <xs:element name="ВидРасчетов" type="tns:ВидыРасчетовСКонтрагентами"> то получим ошибку "Не установлено значение одного из следующих свойств: ВидРасчетов".
Возможны случаи, когда поля формата не совпадают с полями объектов принимающей конфигурации.
Еще о решении проблем связанных с правильным заполнением полей XML файла (поля формата не совпадают с полями объектов принимающей конфигурации).
Дело в том, что названия полей формата могут не совпадать с названиями реквизитов конфигурации, не совпадать со значениями перечислений. Сообщение об ошибке гласит: "Ошибка проверки данных XDTO:
Значение: 'ОптовыйСклад' не соответствует простому типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5}ТипыСкладов
Значение не соответствует значениям фасета перечисления".
Данную проблему можно решить с помощью поиска странных значений по родительским элементам указанным в формате, например с помощью XML редактора поищем название перечисления "<xs:simpleType name="ТипыСкладов">" в файле с выгрузкой схемы XDTO из конфигуратора, показанной на самой первой картинке данной публикации, "XSDschemeEntepriseData15.xsd", чтобы увидеть какие именно значения можно передавать через XLM файл, окажется что допустимый набор значений это
<xs:enumeration value="Оптовый"/>
<xs:enumeration value="Розничный"/>
<xs:enumeration value="НеавтоматизированнаяТорговаяТочка"/>".
Данная ситуация показана на рисунке, поиск в XML редактора текста осуществляется так же как в любом текстовом редакторе.
Иногда при выгрузка базы 1C77 в XML и последующей загрузке в современную конфигурацию 1С 8.3 может понадобиться заменить ссылку объекта внутри современной конфигурации 1С 8.3 на уже загруженный идентификатор 1С 7.7 (например, если состав ключевого поля "Ответственный (пользователь)" через формат EnterpriseData версии 1.5 передан не полностью (без части физического лица).
Например для подстановки определенного пользователя, если он не создался из-за неверной передачи через XML, поможет следующий код 1C 8.3:
ОбъектСпр = Справочники.Пользователи.СоздатьЭлемент();
СтрокаGUID = "42050320-2020-2020-2037-343238c1c120";
ГрнGUID = Новый УникальныйИдентификатор(СтрокаGUID);
ОбъектСпр.Наименование = "Ключникова";
ОбъектСпр.УстановитьСсылкуНового(Справочники.Пользователи.ПолучитьСсылку(ГрнGUID));
ОбъектСпр.Записать();
//статьи нет в справочнике ЕРП, импортируем новую в 1С 8
ОбъектСпр = Справочники.СтатьиДвиженияДенежныхСредств.СоздатьЭлемент();
СтрокаGUID = "42426420-2020-2020-2020-203132c1c120";
ГрнGUID = Новый УникальныйИдентификатор(СтрокаGUID);
ОбъектСпр.Наименование = "Командировочные расходы";
ОбъектСпр.УстановитьСсылкуНового(Справочники.СтатьиДвиженияДенежныхСредств.ПолучитьСсылку(ГрнGUID));
ОбъектСпр.Записать();
ИначеЕсли СокрЛП(ДвижениеДенежныхСредств)="Командировочные расходы" Тогда
//статьи нет в справочнике ЕРП, импортируем её и подключаем её в 7.7
//ОбъектСпр = Справочники.СтатьиДвиженияДенежныхСредств.СоздатьЭлемент();
//СтрокаGUID = "42426420-2020-2020-2020-203132c1c120";
//ГрнGUID = Новый УникальныйИдентификатор(СтрокаGUID);
//ОбъектСпр.Наименование = "Командировочные расходы";
//ОбъектСпр.УстановитьСсылкуНового(Справочники.СтатьиДвиженияДенежныхСредств.ПолучитьСсылку(ГрнGUID));
//ОбъектСпр.Записать();
СтатьяДДС = СоздатьОбъект("СписокЗначений");
СтатьяДДС.ДобавитьЗначение("42426420-2020-2020-2020-203132c1c120","Ссылка");
СтатьяДДС.ДобавитьЗначение("ЦБ-000019","КодВПрограмме");
СтатьяДДС.ДобавитьЗначение("Командировочные расходы","Наименование");
Иначе
Ссылка = ПолучитьУникальныйИдентификатор(ДвижениеДенежныхСредств);
Сообщить("Не сопоставлена статья "+СокрЛП(ДвижениеДенежныхСредств)+": "+Ссылка);
КонецЕсли;
Еще может возникнуть ошибка преобразования данных XDTO "Структура объекта не соответствует типу". Например если в выписке банка (расход) не заполнен банковский счет контрагента, можно получить сообщение с указанием номера предыдущего выгружаемого документа и текстом "не установлено значение свойства БИК".
В ходе выполнения операции возникли ошибки:
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(1614)}: Ошибка при вызове метода контекста (ПрочитатьXML)
ФабрикаXDTO.Тип(КомпонентыОбмена.ФайлОбмена.URIПространстваИмен, КомпонентыОбмена.ФайлОбмена.ЛокальноеИмя));
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: - [70,42]
Проверка дополнительного свойства:
форма: Элемент
имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5}Организация
по причине:
Ошибка проверки данных XDTO: Структура объекта не соответствует типу:
1) Открываем сгенерированный файл, находим проблемное место.
<Владелец>
<Организация>
<Ссылка>7d84c015-df1a-11e7-80d4-b0cb018bb13a</Ссылка>
<Наименование>Общество с ограниченной ответственностью «Сигма»</Наименование>
<НаименованиеСокращенное>ООО «Сигма»</НаименованиеСокращенное>
<НаименованиеПолное>Общество с ограниченной ответственностью «Сигма»</НаименованиеПолное>
<ИНН>3662238642</ИНН>
<КПП>366201001</КПП>
<ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
</Организация>
</Владелец>
2) Открываем схему XDTO и сравниваем с сомнительным фрагментом
<xs:element name="Владелец">
<xs:complexType>
<xs:sequence>
<xs:element name="КонтрагентыСсылка" type="tns:КлючевыеСвойстваКонтрагент" minOccurs="0"/>
<xs:element name="ОрганизацииСсылка" type="tns:КлючевыеСвойстваОрганизация" minOccurs="0"/>
<xs:element name="ФизическиеЛицаСсылка" type="tns:КлючевыеСвойстваФизическоеЛицо" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
3) Нихрена не понятно что не устраивает, уже хотим копать в другом месте и вдруг осеняет... во владельце у нас хранится тег "Организация", а в схеме он называется "ОрганизацииСсылка". Исправляем - всё работает.
Такую картинку позволяет создать XML редактор WMHelp XMLPad в разделе Документация.
Иногда бывает сложно сразу понять, в каком именно месте заключается ошибка. Например вид ошибки, Структура объекта не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5}РасшифровкаПлатежа. (никакой другой информации сообщение об ошибке не несет).
Дело в том, что внутри "РасшифровкаПлатежа" я написал "РасшифровкаПлатежаСтрока" а должно было быть "Строка". Было неправильно:
РасшифровкаПлатежа.ДобавитьЗначение(РасшифровкаПлатежаСтрока,"РасшифровкаПлатежаСтрока");
Исправил:
РасшифровкаПлатежа.ДобавитьЗначение(РасшифровкаПлатежаСтрока,"Строка");
Теперь внимательо следим за названием каждого элемента схемы XDTO пакета.
Нарушен порядок следования значений свойств тоже не всегда однозначно наводит на верный путь, нужно исследовать проблему гораздо шире чем к этому призывает сообщение об ошибке.
В ходе выполнения операции возникли ошибки:
Событие: Получение.
Объект XDTO: Не определено, .
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(1614)}: Ошибка при вызове метода контекста (ПрочитатьXML)
ФабрикаXDTO.Тип(КомпонентыОбмена.ФайлОбмена.URIПространстваИмен, КомпонентыОбмена.ФайлОбмена.ЛокальноеИмя));
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5}КлючевыеСвойстваСтатьяДДС - [96,5]
Проверка свойства 'Ссылка':
форма: Элемент
имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5}Ссылка
тип: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5}СправочникСсылка.СтатьиДДС
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5}КлючевыеСвойстваСтатьяДДС
Проверка свойства 'Ссылка':
форма: Элемент
имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5}Ссылка
тип: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5}СправочникСсылка.СтатьиДДС
Нарушен порядок следования значений свойств
На вид сгенерированный фрагмент, вызывающий ошибку, соответствует схеме.
<РасшифровкаПлатежа>
<Строка>
<СтатьяДДС>
<Ссылка>c95a4a77-734f-11e6-9fac-001517fd8aac</Ссылка>
<КодВПрограмме>УТ-000005</КодВПрограмме>
<Наименование>Поступление оплаты от клиента</Наименование>
<Ссылка>c95a4a77-734f-11e6-9fac-001517fd8aac</Ссылка>
</СтатьяДДС>
<Сумма>3123719.69</Сумма>
<СуммаВзаиморасчетов>3123719.69</СуммаВзаиморасчетов>
</Строка>
</РасшифровкаПлатежа>
Ан нет, оказывается "ссылку" написал два раза. Исправляем, загружаем.
Отправка из 1C 7.7 EnterpriseData
На Инфостарт есть единственный пример генерации файла обмена EnterpriseData формата 1.2, смотрите публикацию План обмена в формате "EnterpriseData" для 1С 7.7. В нем описана отправка и получение XML заказа и реализации EnterpriseData из 1С 7.7.
Мой код выгружает приходный кассовый ордер из Комплексной конфигурации редакции 4.2 универсального формата обмена EnterpriseData версии 1.5 пригодный для загрузки в любую современную конфигурацию, нет необходимости обновлять устаревшую конфигурацию-источник. Правила выгрузки я создал в "Конвертация данных 3.0.5.3" и перенес в данный код в виде комментариев (эти комментарии начинаются с номера 2). Попутно у меня открыт пример из описания формата EnterpriseData и собственно само описание, которое тоже присутствует в комментариях (описание формата в комментариях начинается с номера 1).
Файл для загрузки в современную конфигурацию можно создать во внешней обработке 1С 7.7 примерно следующим образом.
//*******************************************
//Воспользоваться современным средством переноса данных "Конвертация данных 3.0.5.3" можно только выгрузив из системы - источника
//данных XML в формате обмена данными EnterpriseData. В этой публикации я публикую приемы выгрузки из 1С 7.7 универсального
//формата обмена для Конвертации данных 3. На первой стадии еще не опубликовано иного способа получить данный файл кроме как
//сформировать его вручную, постараемся решить данную проблему.
//Для облегчения интеграции с программными продуктами фирмы «1С» разработан формат обмена данными EnterpriseData. Формат
//основан на XML и является бизнес-ориентированным – описанные в нем структуры данных соответствуют бизнес-сущностям (документам
//и элементам справочников), представленным в программах «1С», например: акт выполненных работ, приходный кассовый ордер,
//контрагент, договор и т. п. Это делает формат интуитивно понятным и легким в использовании.
//Формат EnterpriseData предназначен для обмена данными внутри компании (в том числе между разнородными и территориально
//удаленными информационными системами) и призван покрыть все сферы деятельности предприятия – финансы, производство, закупки и
//продажи, складские операции и т. п.
//По ссылке https://its.1c.ru/db/metod8dev#content:5934:hdoc доступно описание формата EnterpriseData который можно создать во внешней
//обработке 1С 7.7 примерно следующим образом.
//Данный код выгружает приходный кассовый опдер из Комплексной конфигурации редакции 4.2 в ниверсального формата обмена
//EnterpriseData версии 1.5, нет необходимости обновлять типовую конфигурацию.
Процедура Сформировать()
ДокПКО = СоздатьОбъект("Документ");
ДокПКО.НайтиПоНомеру("ПОСкНС000151",ТекущаяДата(),"ПКО");
ПКОРозничнаяВыручка = СоздатьОбъект("Документ.ПКО");
ПКОРозничнаяВыручка.НайтиДокумент(ДокПКО);
//Правила выгрузки я создал в "Конвертация данных
//3.0.5.3" и перенес в данный код в виде комментариев (эти комментарии начинаются с номера 2). Попутно у меня открыт пример из
//описания формата EnterpriseData и собственно само описание, которое тоже присутствует в комментариях (описание формата в
//комментариях начинается с номера 1).
//Шапка шаблона формата ЕД
//Свойства Тип значения Обязательный Пояснение
//КлючевыеСвойства КлючевыеСвойстваПКОРозничнаяВыручка Да
//1. Дата dateTime Да
//1. Номер ТипНомерДокумента Да
//1. Организация КлючевыеСвойстваОрганизация Да
//1. ГоловнаяОрганизация КлючевыеСвойстваОрганизация
//1. ИНН string (12)
//1. КПП string (9)
//1. Наименование string Да
//1. НаименованиеПолное string
//1. НаименованиеСокращенное string
//1. Ссылка СправочникСсылка.Организации
//1. ЮридическоеФизическоеЛицо ЮридическоеФизическоеЛицо Да
//1. Ссылка ДокументСсылка.ПКОРозничнаяВыручка
//1.Валюта КлючевыеСвойстваВалюта Да
//1. Код string (3) Да
//1. Наименование string Да
//1. Ссылка СправочникСсылка.Валюты
//1.ВТомЧислеНДС string
//1.ВыручкаНТТ boolean Да
//1.ГлавныйБухгалтер string
//1.Комментарий string
//1.НомерЧекаККМ string
//1.Основание string
//1.Ответственный КлючевыеСвойстваПользователь
//1. Наименование string Да
//1. Ссылка СправочникСсылка.Пользователи
//1. ФизическоеЛицо КлючевыеСвойстваФизическоеЛицо
//1. ДатаРождения date
//1. Имя string
//1. ИНН string (12)
//1. КодВПрограмме string
//1. Отчество string
//1. Ссылка СправочникСсылка.ФизическиеЛица
//1. Фамилия string
//1. ФИО string Да
//1.Подразделение КлючевыеСвойстваПодразделение
//1. ВышестоящееПодразделение КлючевыеСвойстваПодразделение
//1. Наименование string Да
//1. Ссылка СправочникСсылка.Подразделения
//1.Приложение string
//1.ПринятоОт string
//1.Склад КлючевыеСвойстваСклад
//1. Наименование string Да
//1. Ссылка СправочникСсылка.Склады
//1. ТипСклада ТипыСкладов
//1.Сумма ТипСумма Да
ТекДата = ТекущаяДата();
ГодДаты = СокрЛП(ДатаГод(ТекДата));
МесяцДаты = Формат(ДатаМесяц(ТекДата),"Ч(0)2");
ДеньДаты = Формат(ДатаЧисло(ТекДата),"Ч(0)2");
ТекДатаФорм = ГодДаты+"-"+МесяцДаты+"-"+ДеньДаты;
чч = 0; мм = 0; сс = 0;
ТекущееВремя(чч,мм,сс);
ШтампДатаВремя = ТекДатаФорм+"T"+Формат(чч,"Ч(0)2")+":"+Формат(мм,"Ч(0)2")+":"+Формат(сс,"Ч(0)2");
ТекущийДокументСсылка = ПКОРозничнаяВыручка;
ЗаголовокXML =
"<?xml version=""1.0""?>
|<Message xmlns:msg=""http://www.1c.ru/SSL/Exchange/Message"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">
| <msg:Header>
| <msg:Format>http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5</msg:Format>
| <msg:CreationDate>"+ШтампДатаВремя+"</msg:CreationDate>
| <msg:AvailableVersion>1.5</msg:AvailableVersion>
| </msg:Header>
| <Body xmlns=""http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5"">
| <Документ.ПКОРозничнаяВыручка>";
Сообщить(ЗаголовокXML);
//Щаблон правила конвертации свойств:
//Свойство конфигурации Свойство формата Тип свойства конфигурации Тип свойства формата
//2.ДатаДок Дата Дата dateTime
//2.НомерДок Номер Строка (П12) ТипНомерДокумента
//2.Ссылка Ссылка ДокументСсылка.ПКО ДокументСсылка.ПКОРозничнаяВыручка
//2.Фирма Организация СправочникСсылка.Фирмы КлючевыеСвойстваОрганизация
//2.Автор Ответственный СправочникСсылка.Пользователи КлючевыеСвойстваПользователь
//2.Валюта Валюта СправочникСсылка.Валюты КлючевыеСвойстваВалюта
//2.ДвижениеДенежныхСредств ОбщиеДанные СправочникСсылка.ДвиженияДенежныхСредств ОбщиеСвойстваПКО
//2.Договор ОбщиеДанные СправочникСсылка.Договоры ОбщиеСвойстваПКО
//2.Основание Основание Строка (П64) string
//2.Касса ОбщиеДанные СправочникСсылка.Кассы ОбщиеСвойстваПКО
//2.КодОперации ОбщиеДанные ПеречислениеСсылка.КодыОпераций ОбщиеСвойстваПКО
//2.Комментарий Комментарий Строка (Неогр) string
//2.Контрагент ОбщиеДанные СправочникСсылка.Контрагенты ОбщиеСвойстваПКО
//2.НомерЧекаККМ НомерЧекаККМ Число (10.0) string
//2.Приложение Приложение Строка (П150) string
//2.ПринятоОт ПринятоОт Строка (П80) string
//2.Проект ОбщиеДанные СправочникСсылка.Проекты ОбщиеСвойстваПКО
//2.СтавкаНДС ОбщиеДанные ПеречислениеСсылка.СтавкиНДС ОбщиеСвойстваПКО
//2.Субконто1 ОбщиеДанные ОбщиеСвойстваПКО
//2.Субконто2 ОбщиеДанные ОбщиеСвойстваПКО
//2.Субконто3 ОбщиеДанные ОбщиеСвойстваПКО
//2.Сумма Сумма Число (15.2) ТипСумма
//2.СуммаВзаиморасчетов Сумма Число (15.2) ТипСумма
//2.Счет ОбщиеДанные ОбщиеСвойстваПКО
//2.ФизЛицо ОбщиеДанные СправочникСсылка.ФизЛица ОбщиеСвойстваПКО
//2.Фирма Организация СправочникСсылка.Фирмы КлючевыеСвойстваОрганизация
//2.ЧекПробитККМ ОбщиеДанные Число (1.0) ОбщиеСвойстваПКО
//КлючевыеСвойства КлючевыеСвойстваПКОРозничнаяВыручка Да
//Первая строчка (1) из версии 1.5 по шаблону формата ЕД, а вторая (2) по шаблону правила конвертации свойств:
КлючевыеСвойстваXMLСсылка = ПолучитьУникальныйИдентификатор(ТекущийДокументСсылка);
//Шапка шаблона формата ЕД
//Свойства Тип значения Обязательный Пояснение
//1. Дата dateTime Да
//2. ДатаДок Дата Дата dateTime
чч = 0; мм = 0; сс = 0;
ТекущийДокументСсылка.ПолучитьВремя(чч,мм,сс);
ГодДаты = СокрЛП(ДатаГод(ТекущийДокументСсылка.ДатаДок));
МесяцДаты = Формат(ДатаМесяц(ТекущийДокументСсылка.ДатаДок),"Ч(0)2");
ДеньДаты = Формат(ДатаЧисло(ТекущийДокументСсылка.ДатаДок),"Ч(0)2");
ТекДатаФорм = ГодДаты+"-"+МесяцДаты+"-"+ДеньДаты;
чч = 0; мм = 0; сс = 0;
ТекущееВремя(чч,мм,сс);
КлючевыеСвойстваXMLШтампДатаДок = ТекДатаФорм+"T"+Формат(чч,"Ч(0)2")+":"+Формат(мм,"Ч(0)2")+":"+Формат(сс,"Ч(0)2");
//1, Номер ТипНомерДокумента Да
//2, НомерДок Номер Строка (П12) ТипНомерДокумента
КлючевыеСвойстваXMLШтампНомерДок = ТекущийДокументСсылка.НомерДок;
//1. Организация КлючевыеСвойстваОрганизация Да
//1. ГоловнаяОрганизация КлючевыеСвойстваОрганизация
//1. ИНН string (12)
//1. КПП string (9)
//1. Наименование string Да
//1. НаименованиеПолное string
//1. НаименованиеСокращенное string
//1. Ссылка СправочникСсылка.Организации
//1. ЮридическоеФизическоеЛицо ЮридическоеФизическоеЛицо Да
//1. Ссылка ДокументСсылка.ПКОРозничнаяВыручка
//2.Ссылка Ссылка ДокументСсылка.ПКО ДокументСсылка.ПКОРозничнаяВыручка
//1.Валюта КлючевыеСвойстваВалюта Да
//1. Код string (3) Да
//1. Наименование string Да
//1. Ссылка СправочникСсылка.Валюты
КлючевыеСвойстваXML = "
| <КлючевыеСвойства>
| <Ссылка>"+КлючевыеСвойстваXMLСсылка+"</Ссылка>
| <Дата>"+КлючевыеСвойстваXMLШтампДатаДок+"</Дата>
| <Номер>"+КлючевыеСвойстваXMLШтампНомерДок+"</Номер>
| <Организация>
// <Ссылка>"+ПолучитьУникальныйИдентификатор(ТекущийДокументСсылка.Фирма)+"</Ссылка>
| <Ссылка>7d84c015-df1a-11e7-80d4-b0cb018bb13a</Ссылка>
| <Наименование>Общество с ограниченной ответственностью «Сигма»</Наименование>
| <НаименованиеСокращенное>ООО «Сигма»</НаименованиеСокращенное>
| <НаименованиеПолное>Общество с ограниченной ответственностью «Сигма»</НаименованиеПолное>
| <ИНН>3662238642</ИНН>
| <КПП>366201001</КПП>
//| <ГоловнаяОрганизация/>
| <ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
| </Организация>
| </КлючевыеСвойства>";
Сообщить(КлючевыеСвойстваXML);
//1.ВТомЧислеНДС string
//1.ГлавныйБухгалтер string
//1.Комментарий string
//1.Основание string
//1.Ответственный КлючевыеСвойстваПользователь
//1. Наименование string Да
//1. Ссылка СправочникСсылка.Пользователи
//1.Приложение string
//1.ПринятоОт string
КлючевыеСвойстваПользовательНаименование = СокрЛП(ТекущийДокументСсылка.Автор.Наименование);
КлючевыеСвойстваПользовательСсылка = ПолучитьУникальныйИдентификатор(ТекущийДокументСсылка.Автор);
ВалютаДокумента = "";
РасшифровкаПлатежа = "";
ДобавлятьТекстВТомЧисле = 1;
ВТомЧислеНДС = ТекстСуммаНДСПлатежа(ВалютаДокумента, РасшифровкаПлатежа, ДобавлятьТекстВТомЧисле, ТекущийДокументСсылка);
Руководитель = СокрЛП(ТекущийДокументСсылка.Фирма.ЮрЛицо.Руководитель.Получить(ТекущийДокументСсылка.ДатаДок));
ГлавныйБухгалтер = СокрЛП(ТекущийДокументСсылка.Фирма.ЮрЛицо.Глбухгалтер.Получить(ТекущийДокументСсылка.ДатаДок));
Комментарий = СокрЛП(ТекущийДокументСсылка.Комментарий);
Подразделение = ТекущийДокументСсылка.Касса;
КлючевыеСвойстваПодразделениеНаименование = "Касса "+СокрЛП(Подразделение.Наименование);
КлючевыеСвойстваПодразделениеСсылка = ПолучитьУникальныйИдентификатор(Подразделение);
Основание = СокрЛП(ТекущийДокументСсылка.Основание);
Приложение = СокрЛП(ТекущийДокументСсылка.Приложение);
ПринятоОт = СокрЛП(ТекущийДокументСсылка.ПринятоОт);
//1. ФизическоеЛицо КлючевыеСвойстваФизическоеЛицо
//1. ДатаРождения date
//1. Имя string
//1. ИНН string (12)
//1. КодВПрограмме string
//1. Отчество string
//1. Ссылка СправочникСсылка.ФизическиеЛица
//1. Фамилия string
//1. ФИО string Да
ФизЛицо = ТекущийДокументСсылка.ФизЛицо;
Если СокрЛП(ФизЛицо)="" Тогда
СпрФЛ = СоздатьОбъект("Справочник.ФизЛица");
СпрФЛ.НайтиПоКоду("Бб000612",0);
ФизЛицо = СпрФЛ.ТекущийЭлемент();
КонецЕсли;
ИмяФЛ = ""; ФамилияФЛ = ""; ОтчествоФЛ = "";
глФамилияИмяОтчество(ФизЛицо,ФамилияФЛ,ИмяФЛ,ОтчествоФЛ);
ФизЛицоДатаРождения = ФизЛицо.ДатаРождения;
ГодДаты = СокрЛП(ДатаГод(ФизЛицоДатаРождения));
МесяцДаты = Формат(ДатаМесяц(ФизЛицоДатаРождения),"Ч(0)2");
ДеньДаты = Формат(ДатаЧисло(ФизЛицоДатаРождения),"Ч(0)2");
ФизЛицоДатаРождения = ГодДаты+"-"+МесяцДаты+"-"+ДеньДаты;
КлючевыеСвойстваФизическоеЛицоДатаРождения = ФизЛицоДатаРождения;//+"T"+Формат(чч,"Ч(0)2")+":"+Формат(мм,"Ч(0)2")+":"+Формат(сс,"Ч(0)2");
КлючевыеСвойстваФизическоеЛицоИмя = ИмяФЛ;
КлючевыеСвойстваФизическоеЛицоИНН = ФизЛицо.ИНН;
КлючевыеСвойстваФизическоеЛицоКодВПрограмме = ФизЛицо.Код;
КлючевыеСвойстваФизическоеЛицоОтчество = ОтчествоФЛ;
КлючевыеСвойстваФизическоеЛицоСсылка = ПолучитьУникальныйИдентификатор(ФизЛицо);
КлючевыеСвойстваФизическоеЛицоФамилия = ФамилияФЛ;
КлючевыеСвойстваФизическоеЛицоФИО = СокрЛП(ФизЛицо.ПолнНаименование);
ТелоПерваяЧастьСтрокXML =
" <ОбщиеДанные>
| <Ответственный>
| <Ссылка>"+КлючевыеСвойстваПользовательСсылка+"</Ссылка>
| <Наименование>"+КлючевыеСвойстваПользовательНаименование+"</Наименование>
| <ФизическоеЛицо>
| <Ссылка>"+КлючевыеСвойстваФизическоеЛицоСсылка+"</Ссылка>
| <ФИО>"+КлючевыеСвойстваФизическоеЛицоФИО+"</ФИО>
| <Фамилия>"+КлючевыеСвойстваФизическоеЛицоФамилия+"</Фамилия>
| <Имя>"+КлючевыеСвойстваФизическоеЛицоИмя+"</Имя>
| <Отчество>"+КлючевыеСвойстваФизическоеЛицоОтчество+"</Отчество>
| <ДатаРождения>"+КлючевыеСвойстваФизическоеЛицоДатаРождения+"</ДатаРождения>
| <КодВПрограмме>"+КлючевыеСвойстваФизическоеЛицоКодВПрограмме+"</КодВПрограмме>
| <ИНН>"+КлючевыеСвойстваФизическоеЛицоИНН+"</ИНН>
| </ФизическоеЛицо>
| </Ответственный>
| <Валюта>
| <Ссылка>af5ac665-734f-11e6-9fac-001517fd8aac</Ссылка>
| <Код>643</Код>
| <Наименование>Российский рубль</Наименование>
| </Валюта>
| <Сумма>"+ТекущийДокументСсылка.Сумма+"</Сумма>
| <Комментарий>"+Комментарий+"</Комментарий>
| <Подразделение>
| <Ссылка>"+КлючевыеСвойстваПодразделениеСсылка+"</Ссылка>
| <Наименование>"+КлючевыеСвойстваПодразделениеНаименование+"</Наименование>
//|<ВышестоящееПодразделение/>
| </Подразделение>
| <Основание>"+Основание+"</Основание>
| <Приложение>"+Приложение+"</Приложение>
| <ПринятоОт>"+ПринятоОт+"</ПринятоОт>
| <ВТомЧислеНДС>"+ВТомЧислеНДС+"</ВТомЧислеНДС>
| <ГлавныйБухгалтер>"+ГлавныйБухгалтер+"</ГлавныйБухгалтер>
| </ОбщиеДанные>";
Сообщить(ТелоПерваяЧастьСтрокXML);
//1.Сумма ТипСумма Да
//1.НомерЧекаККМ string
НомерЧекаККМ = СокрЛП(ТекущийДокументСсылка.НомерЧекаККМ);
//1.Склад КлючевыеСвойстваСклад
//1. Наименование string Да
//1. Ссылка СправочникСсылка.Склады
//1. ТипСклада ТипыСкладов
//1.ВыручкаНТТ boolean Да
//ВыручкаНТТ = "Истина"; true
Склад = ТекущийДокументСсылка.ДокОснование.Склад;
КлючевыеСвойстваСкладНаименование = Склад.Наименование;
//это на случай если главный склад в новой конфигурации завели до того, как произвели конвертацию
Если КлючевыеСвойстваСкладНаименование = "ГЛАВНЫЙ СКЛАД ФИРМЫ Новосибирская" Тогда
КлючевыеСвойстваСкладСсылка = "6922b788-0bd6-11e8-80dd-e11ff638f0cc";
Иначе
КлючевыеСвойстваСкладСсылка = ПолучитьУникальныйИдентификатор(Склад);
КонецЕсли;
Если Склад.РозничныйСклад = 1 Тогда
КлючевыеСвойстваСкладТипСклада = "Розничный";
Иначе
КлючевыеСвойстваСкладТипСклада = "Оптовый";
КонецЕсли;
ВыручкаНТТ = "false";
ТелоВтораяЧастьСтрокXMLКлючевыеСвойстваСклад =
" <НомерЧекаККМ>"+НомерЧекаККМ+"</НомерЧекаККМ>
| <Склад>
| <Ссылка>"+КлючевыеСвойстваСкладСсылка+"</Ссылка>
| <Наименование>"+КлючевыеСвойстваСкладНаименование+"</Наименование>
| <ТипСклада>"+КлючевыеСвойстваСкладТипСклада+"</ТипСклада>
| </Склад>
| <ВыручкаНТТ>"+ВыручкаНТТ+"</ВыручкаНТТ>";
Сообщить(ТелоВтораяЧастьСтрокXMLКлючевыеСвойстваСклад);
//1.Подразделение КлючевыеСвойстваПодразделение
//1. ВышестоящееПодразделение КлючевыеСвойстваПодразделение
//1. Наименование string Да
//1. Ссылка СправочникСсылка.Подразделения
//1.КлючевыеСвойстваПодразделениеВышестоящееПодразделение = NULL
Подразделение = ТекущийДокументСсылка.Касса;
КлючевыеСвойстваПодразделениеНаименование = "Касса "+СокрЛП(Подразделение.Наименование);
КлючевыеСвойстваПодразделениеСсылка = ПолучитьУникальныйИдентификатор(Подразделение);
КлючевыеСвойстваПользовательФизическоеЛицоПодразделение =
" <ФизическоеЛицо>
| <Ссылка>"+КлючевыеСвойстваФизическоеЛицоСсылка+"</Ссылка>
| <ФИО>"+КлючевыеСвойстваФизическоеЛицоФИО+"</ФИО>
| <Фамилия>"+КлючевыеСвойстваФизическоеЛицоФамилия+"</Фамилия>
| <Имя>"+КлючевыеСвойстваФизическоеЛицоИмя+"</Имя>
| <Отчество>"+КлючевыеСвойстваФизическоеЛицоОтчество+"</Отчество>
| <ДатаРождения>"+КлючевыеСвойстваФизическоеЛицоДатаРождения+"</ДатаРождения>
| <КодВПрограмме>"+КлючевыеСвойстваФизическоеЛицоКодВПрограмме+"</КодВПрограмме>
| <ИНН>"+КлючевыеСвойстваФизическоеЛицоИНН+"</ИНН>
| </ФизическоеЛицо>
| <Подразделение>
| <Ссылка>"+КлючевыеСвойстваПодразделениеСсылка+"</Ссылка>
| <Наименование>"+КлючевыеСвойстваПодразделениеНаименование+"</Наименование>
| <ВышестоящееПодразделение/>
| </Подразделение>";
Сообщить(КлючевыеСвойстваПользовательФизическоеЛицоПодразделение);
ТелоТретьяЧастьСтрокXML =
" </Документ.ПКОРозничнаяВыручка>
| </Body>
|</Message>";
Сообщить(ТелоТретьяЧастьСтрокXML);
КонецПроцедуры
В результате работы процедуры получился следующий XML файл, который успешно загружен в 1С 8.3.
Листинг сформированого XML EnterpriseData
<?xml version="1.0"?>
<Message xmlns:msg="http://www.1c.ru/SSL/Exchange/Message" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<msg:Header>
<msg:Format>http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5</msg:Format>
<msg:CreationDate>2018-02-27T15:14:35</msg:CreationDate>
<msg:AvailableVersion>1.5</msg:AvailableVersion>
</msg:Header>
<Body xmlns="http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5">
<Документ.ПКОРозничнаяВыручка>
<КлючевыеСвойства>
<Ссылка>4f219620-2020-2020-2020-202030202020</Ссылка>
<Дата>2018-02-21T15:14:35</Дата>
<Номер>ПОСкНС000151</Номер>
<Организация>
<Ссылка>7d84c015-df1a-11e7-80d4-b0cb018bb13a</Ссылка>
<Наименование>Общество с ограниченной ответственностью «Сигма»</Наименование>
<НаименованиеСокращенное>ООО «Сигма»</НаименованиеСокращенное>
<НаименованиеПолное>Общество с ограниченной ответственностью «Сигма»</НаименованиеПолное>
<ИНН>3662238642</ИНН>
<КПП>366201001</КПП>
<ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
</Организация>
</КлючевыеСвойства>
<ОбщиеДанные>
<Ответственный>
<Ссылка>42003020-2020-2020-2020-323633cac120</Ссылка>
<Наименование>Ключникова</Наименование>
<ФизическоеЛицо>
<Ссылка>42050320-2020-2020-2037-343238c1c120</Ссылка>
<ФИО>Ключникова Светлана Николаевна</ФИО>
<Фамилия>Ключникова</Фамилия>
<Имя>Светлана</Имя>
<Отчество>Николаевна</Отчество>
<ДатаРождения>1962-07-25</ДатаРождения>
<КодВПрограмме>Бб000612</КодВПрограмме>
<ИНН> </ИНН>
</ФизическоеЛицо>
</Ответственный>
<Валюта>
<Ссылка>af5ac665-734f-11e6-9fac-001517fd8aac</Ссылка>
<Код>643</Код>
<Наименование>Российский рубль</Наименование>
</Валюта>
<Сумма>6710.47</Сумма>
<Комментарий>Создана автоматически 14.02.18.По ФАКТУ</Комментарий>
<Подразделение>
<Ссылка>42180920-2020-2020-2020-202032202020</Ссылка>
<Наименование>Касса Опт</Наименование>
</Подразделение>
<Основание>Оплата за товар</Основание>
<Приложение></Приложение>
<ПринятоОт>Индивидуальный предприниматель Донченко Сергей Николаевич</ПринятоОт>
<ВТомЧислеНДС>в т.ч. ; НДС(18%) 1023 руб. 61 коп.</ВТомЧислеНДС>
<ГлавныйБухгалтер>Родионов Александр Владимирович</ГлавныйБухгалтер>
</ОбщиеДанные>
<НомерЧекаККМ>1376</НомерЧекаККМ>
<Склад>
<Ссылка>6922b788-0bd6-11e8-80dd-e11ff638f0cc</Ссылка>
<Наименование>ГЛАВНЫЙ СКЛАД ФИРМЫ Новосибирская</Наименование>
<ТипСклада>Оптовый</ТипСклада>
</Склад>
<ВыручкаНТТ>false</ВыручкаНТТ>
<ФизическоеЛицо>
<Ссылка>42050320-2020-2020-2037-343238c1c120</Ссылка>
<ФИО>Ключникова Светлана Николаевна</ФИО>
<Фамилия>Ключникова</Фамилия>
<Имя>Светлана</Имя>
<Отчество>Николаевна</Отчество>
<ДатаРождения>1962-07-25</ДатаРождения>
<КодВПрограмме>Бб000612</КодВПрограмме>
<ИНН> </ИНН>
</ФизическоеЛицо>
<Подразделение>
<Ссылка>42180920-2020-2020-2020-202032202020</Ссылка>
<Наименование>Касса Опт</Наименование>
<ВышестоящееПодразделение/>
</Подразделение>
</Документ.ПКОРозничнаяВыручка>
</Body>
</Message>
Его загрузка приводит к появлению в 1С 8.3 вот такого документа (приводится печатная форма результата загрузки из 1С 8.3.
Данный опубликованный выше модуль 1С 7.7 EnterpriseData выгрузки документа ПКО в XML получился не лаконичным (даже сумбурным) ввиду того, что я сперва заточил его под распечатанный из статьи ИТС стандарт и впоследствии по выявлении несогласованности его с реальной схемой вынужден был в корне перекроить модуль на основании выгруженной схемы XSDschemeEntepriseData15.xsd формирования XML.
В схеме EnterpriseData присутствует несколько шаблонов импорта кассовых и банковских документов (которым в 7.7 соответствуют разные коды операций).
На основании данных выявленных используемых кодов операций проводим сопоставление с шаблонами.
Затем, в каждом кодов операций (и соответствующих им шаблонах) в кассовых документах могут быть выбраны несколько статей движения денежных средств, которые тоже нужно сопоставить между собой.
Такую функцию прийдется вызывать во всех кассовых и банковских документах.
//данные из конфигурации-приемника
Функция ОпределитьСтатьюДДСдляФормата83По77(ДвижениеДенежныхСредств)
Если СокрЛП(ДвижениеДенежныхСредств)="Поступления от покупателей" Тогда
СтатьяДДС = СоздатьОбъект("СписокЗначений");
СтатьяДДС.ДобавитьЗначение("c95a4a77-734f-11e6-9fac-001517fd8aac","Ссылка");
СтатьяДДС.ДобавитьЗначение("УТ-000005","КодВПрограмме");
СтатьяДДС.ДобавитьЗначение("Поступление оплаты от клиента","Наименование");
ИначеЕсли СокрЛП(ДвижениеДенежныхСредств)="Оплата поставщику" Тогда
СтатьяДДС = СоздатьОбъект("СписокЗначений");
СтатьяДДС.ДобавитьЗначение("c95a4a71-734f-11e6-9fac-001517fd8aac","Ссылка");
СтатьяДДС.ДобавитьЗначение("УТ-000006","КодВПрограмме");
СтатьяДДС.ДобавитьЗначение("Оплата поставщику","Наименование");
ИначеЕсли СокрЛП(ДвижениеДенежныхСредств)="Возврат подотчетных сумм" Тогда
СтатьяДДС = СоздатьОбъект("СписокЗначений");
СтатьяДДС.ДобавитьЗначение("0b4242cc-9a11-11e7-80cf-f206734d160c","Ссылка");
СтатьяДДС.ДобавитьЗначение("00-000013","КодВПрограмме");
СтатьяДДС.ДобавитьЗначение("Выдача денежных средств в подотчет","Наименование");
ИначеЕсли СокрЛП(ДвижениеДенежныхСредств)="Прочие поступления" Тогда
СтатьяДДС = СоздатьОбъект("СписокЗначений");
СтатьяДДС.ДобавитьЗначение("27af9a45-7fc2-11e6-982a-001517fd8aac","Ссылка");
СтатьяДДС.ДобавитьЗначение("00-000002","КодВПрограмме");
СтатьяДДС.ДобавитьЗначение("Прочее поступление","Наименование");
ИначеЕсли СокрЛП(ДвижениеДенежныхСредств)="Платежи в бюджет" Тогда
СтатьяДДС = СоздатьОбъект("СписокЗначений");
СтатьяДДС.ДобавитьЗначение("a0b9bdc9-9f42-11e6-92d4-001517fd8aac","Ссылка");
СтатьяДДС.ДобавитьЗначение("00-000008","КодВПрограмме");
СтатьяДДС.ДобавитьЗначение("Уплата налогов и сборов","Наименование");
ИначеЕсли СокрЛП(ДвижениеДенежныхСредств)="Прочие выплаты" Тогда
СтатьяДДС = СоздатьОбъект("СписокЗначений");
СтатьяДДС.ДобавитьЗначение("9aef688a-2dc8-11e8-80e8-0015171205b1","Ссылка");
СтатьяДДС.ДобавитьЗначение("ЦБ-000017","КодВПрограмме");
СтатьяДДС.ДобавитьЗначение("Прочий расход ДС (по умолчанию)","Наименование");
ИначеЕсли СокрЛП(ДвижениеДенежныхСредств)="Сдача наличных в банк" Тогда
СтатьяДДС = СоздатьОбъект("СписокЗначений");
СтатьяДДС.ДобавитьЗначение("c95a4a7a-734f-11e6-9fac-001517fd8aac","Ссылка");
СтатьяДДС.ДобавитьЗначение("УТ-000001","КодВПрограмме");
СтатьяДДС.ДобавитьЗначение("Сдача денежных средств в банк (в рублях)","Наименование");
ИначеЕсли СокрЛП(ДвижениеДенежныхСредств)="Получение наличных из банка" Тогда
СтатьяДДС = СоздатьОбъект("СписокЗначений");
СтатьяДДС.ДобавитьЗначение("c95a4a74-734f-11e6-9fac-001517fd8aac","Ссылка");
СтатьяДДС.ДобавитьЗначение("УТ-000004","КодВПрограмме");
СтатьяДДС.ДобавитьЗначение("Поступление денежных средств из банка (в рублях)","Наименование");
ИначеЕсли СокрЛП(ДвижениеДенежныхСредств)="Выдача под авансовый отчет" Тогда
СтатьяДДС = СоздатьОбъект("СписокЗначений");
СтатьяДДС.ДобавитьЗначение("0b4242cc-9a11-11e7-80cf-f206734d160c","Ссылка");
СтатьяДДС.ДобавитьЗначение("00-000013","КодВПрограмме");
СтатьяДДС.ДобавитьЗначение("Выдача денежных средств в подоотчет","Наименование");
ИначеЕсли СокрЛП(ДвижениеДенежныхСредств)="Выплата зарплаты" Тогда
СтатьяДДС = СоздатьОбъект("СписокЗначений");
СтатьяДДС.ДобавитьЗначение("c95a4a6f-734f-11e6-9fac-001517fd8aac","Ссылка");
СтатьяДДС.ДобавитьЗначение("УТ-000014","КодВПрограмме");
СтатьяДДС.ДобавитьЗначение("Выплата заработной платы","Наименование");
ИначеЕсли СокрЛП(ДвижениеДенежныхСредств)="Командировочные расходы" Тогда
//статьи нет в справочнике ЕРП, импортируем её и подключаем её в 7.7
//ОбъектСпр = Справочники.СтатьиДвиженияДенежныхСредств.СоздатьЭлемент();
//СтрокаGUID = "42426420-2020-2020-2020-203132c1c120";
//ГрнGUID = Новый УникальныйИдентификатор(СтрокаGUID);
//ОбъектСпр.Наименование = "Командировочные расходы";
//ОбъектСпр.УстановитьСсылкуНового(Справочники.СтатьиДвиженияДенежныхСредств.ПолучитьСсылку(ГрнGUID));
//ОбъектСпр.Записать();
СтатьяДДС = СоздатьОбъект("СписокЗначений");
СтатьяДДС.ДобавитьЗначение("42426420-2020-2020-2020-203132c1c120","Ссылка");
СтатьяДДС.ДобавитьЗначение("ЦБ-000019","КодВПрограмме");
СтатьяДДС.ДобавитьЗначение("Командировочные расходы","Наименование");
Иначе
Ссылка = ПолучитьУникальныйИдентификатор(ДвижениеДенежныхСредств);
Сообщить("Не сопоставлена статья "+СокрЛП(ДвижениеДенежныхСредств)+": "+Ссылка);
КонецЕсли;
Возврат СтатьяДДС;
КонецФункции
Длэ этого потребуется сделать запрос и определить, какие именно виды операций задействованы у нас в учете и встретятся при выборке документов. Создаем обработку извлекающую коды операций из базы.
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ТекущийДокумент = Документ.ПКО.ТекущийДокумент;
|КодОперации = Документ.ПКО.КодОперации;
|Группировка ТекущийДокумент;
|";
ТЗ = СоздатьОбъект("ТаблицаЗначений");
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Запрос.Выгрузить(ТЗ,1,0);
ТЗ.НоваяКолонка("Количество");
ТЗ.Заполнить(1,,,"Количество");
ТЗ.Свернуть("КодОперации","Количество");
глПечатьТаблицы(ТЗ);
КонецПроцедуры
ВыбНачПериода = Дата(2017,01,01);
ВыбКонПериода = ТекущаяДата();
Я использовал Процедуру универсальной печати таблицы значений Бориса Абрамука //infostart.ru/public/317185/, ему большое спасибо!
Для данных кодов и напишем процедуры переноса данных:
КодОперации | Количество |
Прочее | 9 |
Оплата от покупателя | 1713 |
Возврат от подотчетника | 11 |
Выгрузка Расходного кассового ордера (РКО) из 1С 7.7 в EnterpriseData.
На момент выгрузки РКО разработаны процедуры выгрузки каждой секйии документа, добавлены наиболее часто востребованные функции. Теперь же начнем с того, что перекроим сохраненную схему в нечто пригодное для заполнения кодом 1С. Тройка в начале комментария в модуле означает, что он взят из схемы.
Собранная из кусочков .xsd исходного пакета XDTO конструкция вышла немного громоздкой и ввиду кропотливости процесса не очень точной.
<xs:element name="КлючевыеСвойства" type="tns:КлючевыеСвойстваРКОНаБанковскийСчет"/>
<xs:complexType name="КлючевыеСвойстваРКОНаБанковскийСчет">
<xs:sequence>
<xs:element name="Ссылка" type="tns:ДокументСсылка.РКОНаБанковскийСчет" minOccurs="0"/>
<xs:element name="Дата" type="xs:dateTime"/>
<xs:element name="Номер" type="tns:ТипНомерДокумента"/>
<xs:element name="Организация" type="tns:КлючевыеСвойстваОрганизация"/>
<xs:complexType name="КлючевыеСвойстваОрганизация">
<xs:sequence>
<xs:element name="Ссылка" type="tns:СправочникСсылка.Организации" minOccurs="0"/>
<xs:element name="Наименование" type="xs:string"/>
<xs:element name="НаименованиеСокращенное" type="xs:string" minOccurs="0"/>
<xs:element name="НаименованиеПолное" type="xs:string" minOccurs="0"/>
<xs:element name="ИНН" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="12"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="КПП" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="9"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ГоловнаяОрганизация" type="tns:КлючевыеСвойстваОрганизация" minOccurs="0"/>
<xs:element name="ЮридическоеФизическоеЛицо" type="tns:ЮридическоеФизическоеЛицо"/>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:element name="ОбщиеДанные" type="tns:ОбщиеСвойстваРКО"/>
<xs:complexType name="ОбщиеСвойстваРКО">
<xs:sequence>
<xs:element name="Ответственный" type="tns:КлючевыеСвойстваПользователь" minOccurs="0"/>
<xs:complexType name="КлючевыеСвойстваПользователь">
<xs:sequence>
<xs:element name="Ссылка" type="tns:СправочникСсылка.Пользователи" minOccurs="0"/>
<xs:element name="Наименование" type="xs:string"/>
<xs:element name="ФизическоеЛицо" type="tns:КлючевыеСвойстваФизическоеЛицо" minOccurs="0"/>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
<xs:element name="Валюта" type="tns:КлючевыеСвойстваВалюта"/>
<xs:complexType name="КлючевыеСвойстваВалюта">
<xs:sequence>
<xs:element name="Ссылка" type="tns:СправочникСсылка.Валюты" minOccurs="0"/>
<xs:element name="Код">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Наименование" type="xs:string"/>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
<xs:element name="Сумма" type="tns:ТипСумма"/>
<xs:element name="Комментарий" type="xs:string" minOccurs="0"/>
<xs:element name="НазначениеПлатежа" type="xs:string" minOccurs="0"/>
<xs:element name="Подразделение" type="tns:КлючевыеСвойстваПодразделение" minOccurs="0"/>
<xs:element name="Основание" type="xs:string" minOccurs="0"/>
<xs:element name="Приложение" type="xs:string" minOccurs="0"/>
<xs:element name="Выдать" type="xs:string" minOccurs="0"/>
<xs:element name="ПоДокументу" type="xs:string" minOccurs="0"/>
<xs:element name="Руководитель" type="xs:string" minOccurs="0"/>
<xs:element name="ГлавныйБухгалтер" type="xs:string" minOccurs="0"/>
<xs:element name="ДополнительныеРеквизиты" type="tns:ДополнительныеРеквизиты" minOccurs="0"/>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
<xs:element name="БанковскийСчет" type="tns:КлючевыеСвойстваБанковскийСчет" minOccurs="0"/>
<xs:element name="ВидОперации" type="tns:ВидыОперацийРКОНаБанковскийСчет"/>
<xs:simpleType name="ВидыОперацийРКОНаБанковскийСчет">
<xs:restriction base="xs:string">
<xs:enumeration value="ВзносНаличными"/>
<xs:enumeration value="Инкассация"/>
</xs:restriction>
</xs:simpleType>
При составлении данной структуры с помощью XML редактора WMHelp можно перемещаться по уровням вложенности схемы с помощью контекстного меню Go to Definition и главного меню View - Navigate Backward.
Это главное преимещество специализированного XML редактора (потому что в просмотрщике пакета XDTO кофигуратора не хватает рекурсии, а с помощью простого текстового редактора все составные типы прийдется соединять с помощью копи-паста из разных фрагментов текста, что довольно неудобно). Да и структуры собственно не вышло, так как правильно последовательность открывающихся и закрывающихся тегов при копи-пасте восстановить оказалось сложно. Вывод — формирование кусочковой схемы в комментариях сложное и неблагодарное занятие.
Привожу текст программы выгрузки документа Расходного кассового ордера (РКО) в 1С 7.7 EnterpriseData
//*******************************************
Процедура ВыгрузитьРасходныйКассовыйОрдер()
ДокРКО = СоздатьОбъект("Документ");
ДокРКО.НайтиПоНомеру("РоСкНС000110",ТекущаяДата(),"РКО");
РКОНаБанковскийСчет = СоздатьОбъект("Документ.РКО");
РКОНаБанковскийСчет.НайтиДокумент(ДокРКО);
ТекДата = ТекущаяДата();
ГодДаты = СокрЛП(ДатаГод(ТекДата));
МесяцДаты = Формат(ДатаМесяц(ТекДата),"Ч(0)2");
ДеньДаты = Формат(ДатаЧисло(ТекДата),"Ч(0)2");
ТекДатаФорм = ГодДаты+"-"+МесяцДаты+"-"+ДеньДаты;
чч = 0; мм = 0; сс = 0;
ТекущееВремя(чч,мм,сс);
ШтампДатаВремя = ТекДатаФорм+"T"+Формат(чч,"Ч(0)2")+":"+Формат(мм,"Ч(0)2")+":"+Формат(сс,"Ч(0)2");
ТекущийДокументСсылка = РКОНаБанковскийСчет;
ЗаголовокXML =
"<?xml version=""1.0""?>
|<Message xmlns:msg=""http://www.1c.ru/SSL/Exchange/Message"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">
| <msg:Header>
| <msg:Format>http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5</msg:Format>
| <msg:CreationDate>"+ШтампДатаВремя+"</msg:CreationDate>
| <msg:AvailableVersion>1.5</msg:AvailableVersion>
| </msg:Header>
| <Body xmlns=""http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5"">
| <Документ.РКОНаБанковскийСчет>";
Сообщить(ЗаголовокXML);
//3.<xs:element name="КлючевыеСвойства" type="tns:КлючевыеСвойстваРКОНаБанковскийСчет"/>
//3. <xs:complexType name="КлючевыеСвойстваРКОНаБанковскийСчет">
//3. <xs:element name="Ссылка" type="tns:ДокументСсылка.РКОНаБанковскийСчет" minOccurs="0"/>
КлючевыеСвойстваXMLСсылка = ПолучитьУникальныйИдентификатор(ТекущийДокументСсылка);
//3. <xs:element name="Дата" type="xs:dateTime"/>
чч = 0; мм = 0; сс = 0;
ТекущийДокументСсылка.ПолучитьВремя(чч,мм,сс);
ГодДаты = СокрЛП(ДатаГод(ТекущийДокументСсылка.ДатаДок));
МесяцДаты = Формат(ДатаМесяц(ТекущийДокументСсылка.ДатаДок),"Ч(0)2");
ДеньДаты = Формат(ДатаЧисло(ТекущийДокументСсылка.ДатаДок),"Ч(0)2");
ТекДатаФорм = ГодДаты+"-"+МесяцДаты+"-"+ДеньДаты;
чч = 0; мм = 0; сс = 0;
ТекущееВремя(чч,мм,сс);
КлючевыеСвойстваXMLШтампДатаДок = ТекДатаФорм+"T"+Формат(чч,"Ч(0)2")+":"+Формат(мм,"Ч(0)2")+":"+Формат(сс,"Ч(0)2");
//3. <xs:element name="Номер" type="tns:ТипНомерДокумента"/>
КлючевыеСвойстваXMLШтампНомерДок = ТекущийДокументСсылка.НомерДок;
//3. <xs:element name="Организация" type="tns:КлючевыеСвойстваОрганизация"/>
//3. <xs:complexType name="КлючевыеСвойстваОрганизация">
//3. <xs:sequence>
//3. <xs:element name="Ссылка" type="tns:СправочникСсылка.Организации" minOccurs="0"/>
//3. <xs:element name="Наименование" type="xs:string"/>
//3. <xs:element name="НаименованиеСокращенное" type="xs:string" minOccurs="0"/>
//3. <xs:element name="НаименованиеПолное" type="xs:string" minOccurs="0"/>
//3. <xs:element name="ИНН" minOccurs="0">
//3. <xs:simpleType>
//3. <xs:restriction base="xs:string">
//3. <xs:maxLength value="12"/>
//3. </xs:restriction>
//3. </xs:simpleType>
//3. </xs:element>
//3. <xs:element name="КПП" minOccurs="0">
//3. <xs:simpleType>
//3. <xs:restriction base="xs:string">
//3. <xs:maxLength value="9"/>
//3. </xs:restriction>
//3. </xs:simpleType>
//3. </xs:element>
//3. <xs:element name="ГоловнаяОрганизация" type="tns:КлючевыеСвойстваОрганизация" minOccurs="0"/>
//3. <xs:element name="ЮридическоеФизическоеЛицо" type="tns:ЮридическоеФизическоеЛицо"/>
//3. <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
//3. </xs:sequence>
//3. <xs:anyAttribute namespace="##any" processContents="lax"/>
//3. </xs:complexType>
//3. <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
//3. </xs:sequence>
КлючевыеСвойстваXML = "
| <КлючевыеСвойства>
| <Ссылка>"+КлючевыеСвойстваXMLСсылка+"</Ссылка>
| <Дата>"+КлючевыеСвойстваXMLШтампДатаДок+"</Дата>
| <Номер>"+КлючевыеСвойстваXMLШтампНомерДок+"</Номер>
| <Организация>
// <Ссылка>"+ПолучитьУникальныйИдентификатор(ТекущийДокументСсылка.Фирма)+"</Ссылка>
| <Ссылка>7d84c015-df1a-11e7-80d4-b0cb018bb13a</Ссылка>
| <Наименование>Общество с ограниченной ответственностью «Сигма»</Наименование>
| <НаименованиеСокращенное>ООО «Сигма»</НаименованиеСокращенное>
| <НаименованиеПолное>Общество с ограниченной ответственностью «Сигма»</НаименованиеПолное>
| <ИНН>3662238642</ИНН>
| <КПП>366201001</КПП>
//| <ГоловнаяОрганизация/>
| <ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
| </Организация>
| </КлючевыеСвойства>";
Сообщить(КлючевыеСвойстваXML);
//3.<xs:element name="ОбщиеДанные" type="tns:ОбщиеСвойстваРКО"/>
//3. <xs:complexType name="ОбщиеСвойстваРКО">
//3. <xs:sequence>
//3. <xs:element name="Ответственный" type="tns:КлючевыеСвойстваПользователь" minOccurs="0"/>
//3. <xs:complexType name="КлючевыеСвойстваПользователь">
//3. <xs:sequence>
//3. <xs:element name="Ссылка" type="tns:СправочникСсылка.Пользователи" minOccurs="0"/>
КлючевыеСвойстваПользовательСсылка = ПолучитьУникальныйИдентификатор(ТекущийДокументСсылка.Автор);
//3. <xs:element name="Наименование" type="xs:string"/>
КлючевыеСвойстваПользовательНаименование = СокрЛП(ТекущийДокументСсылка.Автор.Наименование);
//3. <xs:element name="ФизическоеЛицо" type="tns:КлючевыеСвойстваФизическоеЛицо" minOccurs="0"/>
//3. <xs:complexType name="КлючевыеСвойстваФизическоеЛицо">
//3. <xs:sequence>
//3. <xs:element name="Ссылка" type="tns:СправочникСсылка.ФизическиеЛица" minOccurs="0"/>
//3. <xs:element name="ФИО" type="xs:string"/>
ФизЛицо = ТекущийДокументСсылка.ФизЛицо;
Если СокрЛП(ФизЛицо)="" Тогда
СпрФЛ = СоздатьОбъект("Справочник.ФизЛица");
СпрФЛ.НайтиПоКоду("Бб000612",0);
ФизЛицо = СпрФЛ.ТекущийЭлемент();
КонецЕсли;
КлючевыеСвойстваФизическоеЛицоСсылка = ПолучитьУникальныйИдентификатор(ФизЛицо);
КлючевыеСвойстваФизическоеЛицоФИО = СокрЛП(ФизЛицо.ПолнНаименование);
//3. <xs:element name="Фамилия" type="xs:string" minOccurs="0"/>
//3. <xs:element name="Имя" type="xs:string" minOccurs="0"/>
//3. <xs:element name="Отчество" type="xs:string" minOccurs="0"/>
ИмяФЛ = ""; ФамилияФЛ = ""; ОтчествоФЛ = "";
глФамилияИмяОтчество(ФизЛицо,ФамилияФЛ,ИмяФЛ,ОтчествоФЛ);
КлючевыеСвойстваФизическоеЛицоИмя = ИмяФЛ;
КлючевыеСвойстваФизическоеЛицоОтчество = ОтчествоФЛ;
КлючевыеСвойстваФизическоеЛицоФамилия = ФамилияФЛ;
//3. <xs:element name="ДатаРождения" type="xs:date" minOccurs="0"/>
ФизЛицоДатаРождения = ФизЛицо.ДатаРождения;
ГодДаты = СокрЛП(ДатаГод(ФизЛицоДатаРождения));
МесяцДаты = Формат(ДатаМесяц(ФизЛицоДатаРождения),"Ч(0)2");
ДеньДаты = Формат(ДатаЧисло(ФизЛицоДатаРождения),"Ч(0)2");
ФизЛицоДатаРождения = ГодДаты+"-"+МесяцДаты+"-"+ДеньДаты;
КлючевыеСвойстваФизическоеЛицоДатаРождения = ФизЛицоДатаРождения;//+"T"+Формат(чч,"Ч(0)2")+":"+Формат(мм,"Ч(0)2")+":"+Формат(сс,"Ч(0)2");
//3. <xs:element name="КодВПрограмме" type="xs:string" minOccurs="0"/>
КлючевыеСвойстваФизическоеЛицоКодВПрограмме = ФизЛицо.Код;
//3. <xs:element name="ИНН" minOccurs="0">
//3. <xs:simpleType>
//3. <xs:restriction base="xs:string">
//3. <xs:maxLength value="12"/>
//3. </xs:restriction>
//3. </xs:simpleType>
КлючевыеСвойстваФизическоеЛицоИНН = ФизЛицо.ИНН;
//3. </xs:element>
//3. <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
//3. </xs:sequence>
//3. <xs:anyAttribute namespace="##any" processContents="lax"/>
//3. </xs:complexType>
//3. <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
//3. </xs:sequence>
//3. <xs:anyAttribute namespace="##any" processContents="lax"/>
//3. </xs:complexType>
//3. <xs:element name="Валюта" type="tns:КлючевыеСвойстваВалюта"/>
//3. <xs:complexType name="КлючевыеСвойстваВалюта">
//3. <xs:sequence>
//3. <xs:element name="Ссылка" type="tns:СправочникСсылка.Валюты" minOccurs="0"/>
ВалютаДокумента = "";
//3. <xs:element name="Код">
//3. <xs:simpleType>
//3. <xs:restriction base="xs:string">
//3. <xs:maxLength value="3"/>
//3. </xs:restriction>
//3. </xs:simpleType>
//3. </xs:element>
//3. <xs:element name="Наименование" type="xs:string"/>
//3. <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
//3. </xs:sequence>
//3. <xs:anyAttribute namespace="##any" processContents="lax"/>
//3. </xs:complexType>
//3. <xs:element name="Сумма" type="tns:ТипСумма"/>
//3. <xs:element name="Комментарий" type="xs:string" minOccurs="0"/>
Комментарий = СокрЛП(ТекущийДокументСсылка.Комментарий);
//3. <xs:element name="НазначениеПлатежа" type="xs:string" minOccurs="0"/>
НазначениеПлатежа = "";//ТекущийДокументСсылка.НазначениеПлатежа;
//3. <xs:element name="Подразделение" type="tns:КлючевыеСвойстваПодразделение" minOccurs="0"/>
Подразделение = ТекущийДокументСсылка.Касса;
КлючевыеСвойстваПодразделениеНаименование = "Касса "+СокрЛП(Подразделение.Наименование);
КлючевыеСвойстваПодразделениеСсылка = ПолучитьУникальныйИдентификатор(Подразделение);
//3. <xs:element name="Основание" type="xs:string" minOccurs="0"/>
Основание = СокрЛП(ТекущийДокументСсылка.Основание);
//3. <xs:element name="Приложение" type="xs:string" minOccurs="0"/>
Приложение = СокрЛП(ТекущийДокументСсылка.Приложение);
//3. <xs:element name="Выдать" type="xs:string" minOccurs="0"/>
Выдать = СокрЛП(ТекущийДокументСсылка.Выдать);
//3. <xs:element name="ПоДокументу" type="xs:string" minOccurs="0"/>
ФизЛицо = ТекущийДокументСсылка.ФизЛицо;
Контрагент = ТекущийДокументСсылка.Контрагент;
Субконто1 = ТекущийДокументСсылка.Субконто1;
Если ПустоеЗначение(ФизЛицо) = 0 Тогда
ПоДокументу = глПредставлениеУдостоверения(ФизЛицо.ДокументУдЛичность);
ИначеЕсли Контрагент.ЮрФизЛицо.Вид() = "ФизЛица" Тогда
ПоДокументу = глПредставлениеУдостоверения(Контрагент.ЮрФизЛицо.ДокументУдЛичность);
ИначеЕсли ПустоеЗначение(Субконто1)=0 Тогда
Попытка
Если Субконто1.Вид()="ФизЛица" Тогда
ПоДокументу = глПредставлениеУдостоверения(Субконто1.ДокументУдЛичность);
ИначеЕсли Субконто1.ЮрФизЛицо.Вид()="ФизЛица" Тогда
ПоДокументу = глПредставлениеУдостоверения(Субконто1.ЮрФизЛицо.ДокументУдЛичность);
Иначе
ПоДокументу = "";
КонецЕсли;
Исключение
ПоДокументу = "";
КонецПопытки;
Иначе
ПоДокументу = "";
КонецЕсли;
//3. <xs:element name="Руководитель" type="xs:string" minOccurs="0"/>
Руководитель = СокрЛП(ТекущийДокументСсылка.Фирма.ЮрЛицо.Руководитель.Получить(ТекущийДокументСсылка.ДатаДок));
//3. <xs:element name="ГлавныйБухгалтер" type="xs:string" minOccurs="0"/>
ГлавныйБухгалтер = СокрЛП(ТекущийДокументСсылка.Фирма.ЮрЛицо.Глбухгалтер.Получить(ТекущийДокументСсылка.ДатаДок));
//3. <xs:element name="ДополнительныеРеквизиты" type="tns:ДополнительныеРеквизиты" minOccurs="0"/>
//3. <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
//3. </xs:sequence>
//3. <xs:anyAttribute namespace="##any" processContents="lax"/>
//3. </xs:complexType>
ТелоОбщиеСвойстваXML =
" <ОбщиеДанные>
| <Ответственный>
| <Ссылка>"+КлючевыеСвойстваПользовательСсылка+"</Ссылка>
| <Наименование>"+КлючевыеСвойстваПользовательНаименование+"</Наименование>
| <ФизическоеЛицо>
| <Ссылка>"+КлючевыеСвойстваФизическоеЛицоСсылка+"</Ссылка>
| <ФИО>"+КлючевыеСвойстваФизическоеЛицоФИО+"</ФИО>
| <Фамилия>"+КлючевыеСвойстваФизическоеЛицоФамилия+"</Фамилия>
| <Имя>"+КлючевыеСвойстваФизическоеЛицоИмя+"</Имя>
| <Отчество>"+КлючевыеСвойстваФизическоеЛицоОтчество+"</Отчество>
| <ДатаРождения>"+КлючевыеСвойстваФизическоеЛицоДатаРождения+"</ДатаРождения>
| <КодВПрограмме>"+КлючевыеСвойстваФизическоеЛицоКодВПрограмме+"</КодВПрограмме>
| <ИНН>"+КлючевыеСвойстваФизическоеЛицоИНН+"</ИНН>
| </ФизическоеЛицо>
| </Ответственный>
| <Валюта>
| <Ссылка>af5ac665-734f-11e6-9fac-001517fd8aac</Ссылка>
| <Код>643</Код>
| <Наименование>Российский рубль</Наименование>
| </Валюта>
| <Сумма>"+ТекущийДокументСсылка.Сумма+"</Сумма>
| <Комментарий>"+Комментарий+"</Комментарий>
| <НазначениеПлатежа>"+НазначениеПлатежа+"</НазначениеПлатежа>
| <Подразделение>
| <Ссылка>"+КлючевыеСвойстваПодразделениеСсылка+"</Ссылка>
| <Наименование>"+КлючевыеСвойстваПодразделениеНаименование+"</Наименование>
| </Подразделение>
| <Основание>"+Основание+"</Основание>
| <Приложение>"+Приложение+"</Приложение>
| <Выдать>"+Выдать+"</Выдать>
| <ПоДокументу>"+ПоДокументу+"</ПоДокументу>
| <Руководитель>"+Руководитель+"</Руководитель>
| <ГлавныйБухгалтер>"+ГлавныйБухгалтер+"</ГлавныйБухгалтер>
| </ОбщиеДанные>";
Сообщить(ТелоОбщиеСвойстваXML);
//3.<xs:element name="БанковскийСчет" type="tns:КлючевыеСвойстваБанковскийСчет" minOccurs="0"/>
//3. <xs:complexType name="КлючевыеСвойстваБанковскийСчет">
//3. <xs:sequence>
//3. <xs:element name="Ссылка" type="tns:СправочникСсылка.БанковскиеСчета" minOccurs="0"/>
//3. <xs:element name="НомерСчета">
//3. <xs:simpleType>
//3. <xs:restriction base="xs:string">
//3. <xs:maxLength value="34"/>
//3. </xs:restriction>
//3. </xs:simpleType>
//3. </xs:element>
//3. <xs:element name="Банк" type="tns:КлючевыеСвойстваБанк" minOccurs="0"/>
//3. <xs:element name="БанкДляРасчетов" type="tns:КлючевыеСвойстваБанк" minOccurs="0"/>
//3. <xs:element name="Владелец">
//3. <xs:complexType>
//3. <xs:sequence>
//3. <xs:element name="КонтрагентыСсылка" type="tns:КлючевыеСвойстваКонтрагент" minOccurs="0"/>
//3. <xs:element name="ОрганизацииСсылка" type="tns:КлючевыеСвойстваОрганизация" minOccurs="0"/>
//3. <xs:element name="ФизическиеЛицаСсылка" type="tns:КлючевыеСвойстваФизическоеЛицо" minOccurs="0"/>
//3. </xs:sequence>
//3. </xs:complexType>
//3. </xs:element>
//3. <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
//3. </xs:sequence>
//3. <xs:anyAttribute namespace="##any" processContents="lax"/>
//3. </xs:complexType>
//3. <xs:complexType name="КлючевыеСвойстваВалюта">
//3.<xs:element name="ВидОперации" type="tns:ВидыОперацийРКОНаБанковскийСчет"/>
//3. <xs:simpleType name="ВидыОперацийРКОНаБанковскийСчет">
//3. <xs:restriction base="xs:string">
//3. <xs:enumeration value="ВзносНаличными"/>
//3. <xs:enumeration value="Инкассация"/>
//3. </xs:restriction>
//3. </xs:simpleType>
ВидОперации = "ВзносНаличными";
ТелоТретьяЧастьСтрокXML =
" <ВидОперации>"+ВидОперации+"</ВидОперации>
| </Документ.РКОНаБанковскийСчет>
| </Body>
|</Message>";
Сообщить(ТелоТретьяЧастьСтрокXML);
КонецПроцедуры
Привожу листинг сформированного XML 1С 7.7 EnterpriseData.
<?xml version="1.0"?>
<Message xmlns:msg="http://www.1c.ru/SSL/Exchange/Message" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<msg:Header>
<msg:Format>http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5</msg:Format>
<msg:CreationDate>2018-02-28T05:33:17</msg:CreationDate>
<msg:AvailableVersion>1.5</msg:AvailableVersion>
</msg:Header>
<Body xmlns="http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5">
<Документ.РКОНаБанковскийСчет>
<КлючевыеСвойства>
<Ссылка>4f222520-2020-2020-2020-202030202020</Ссылка>
<Дата>2018-02-26T05:33:17</Дата>
<Номер>РоСкНС000110</Номер>
<Организация>
<Ссылка>7d84c015-df1a-11e7-80d4-b0cb018bb13a</Ссылка>
<Наименование>Общество с ограниченной ответственностью «Сигма»</Наименование>
<НаименованиеСокращенное>ООО «Сигма»</НаименованиеСокращенное>
<НаименованиеПолное>Общество с ограниченной ответственностью «Сигма»</НаименованиеПолное>
<ИНН>3662238642</ИНН>
<КПП>366201001</КПП>
<ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
</Организация>
</КлючевыеСвойства>
<ОбщиеДанные>
<Ответственный>
<Ссылка>42003020-2020-2020-2020-343339cac120</Ссылка>
<Наименование>Белгород</Наименование>
<ФизическоеЛицо>
<Ссылка>42050320-2020-2020-2037-343238c1c120</Ссылка>
<ФИО>Ключникова Светлана Николаевна</ФИО>
<Фамилия>Ключникова</Фамилия>
<Имя>Светлана</Имя>
<Отчество>Николаевна</Отчество>
<ДатаРождения>1962-07-25</ДатаРождения>
<КодВПрограмме>Бб000612</КодВПрограмме>
<ИНН> </ИНН>
</ФизическоеЛицо>
</Ответственный>
<Валюта>
<Ссылка>af5ac665-734f-11e6-9fac-001517fd8aac</Ссылка>
<Код>643</Код>
<Наименование>Российский рубль</Наименование>
</Валюта>
<Сумма>171450</Сумма>
<Комментарий></Комментарий>
<НазначениеПлатежа></НазначениеПлатежа>
<Подразделение>
<Ссылка>42180920-2020-2020-2020-202037cac120</Ссылка>
<Наименование>Касса Касса Белгород</Наименование>
</Подразделение>
<Основание></Основание>
<Приложение></Приложение>
<Выдать></Выдать>
<ПоДокументу></ПоДокументу>
<Руководитель>Родионов Александр Владимирович</Руководитель>
<ГлавныйБухгалтер>Родионов Александр Владимирович</ГлавныйБухгалтер>
</ОбщиеДанные>
<ВидОперации>ВзносНаличными</ВидОперации>
</Документ.РКОНаБанковскийСчет>
</Body>
</Message>
Данный XML файл загружается в современную конфигурацию (администрирование - синхронизация данных - загрузка данных EnterpriseData) в документ Расходный кассовый ордер.
Рассмотрим еще один способ визуализации информации об объектах пакета EnterpriseData версии 1.5 - запрос в консоли запросов на языке запросов 1С 8.3 в конфигурации Конвертация данных 3.
Структуру полей соответствующую XDTO пакету современной конфигурации необходимо иметь в комментарии обработки выгрузки данных из устаревшей системы, чтобы больше не париться с ошибками порядка вывода полей при рахборе XML файла на принимающей стороне.
ВЫБРАТЬ РАЗЛИЧНЫЕ
ВЫБОР
КОГДА ОбъектыФормата.Наименование ПОДОБНО "Справочник%"
ТОГДА "Справочники"
КОГДА ОбъектыФормата.Наименование ПОДОБНО "Документ%"
ТОГДА "Документы"
ИНАЧЕ "Прочее"
КОНЕЦ КАК Группа1,
ВЫБОР
КОГДА ОбъектыФормата.Наименование ПОДОБНО "Справочник%"
ТОГДА 1
КОГДА ОбъектыФормата.Наименование ПОДОБНО "Документ%"
ТОГДА 2
ИНАЧЕ 3
КОНЕЦ КАК Группа1Сортировка,
ВЫБОР
КОГДА ОбъектыФормата.Наименование ПОДОБНО "Справочник%"
ТОГДА 8
КОГДА ОбъектыФормата.Наименование ПОДОБНО "Документ%"
ТОГДА 11
ИНАЧЕ 0
КОНЕЦ КАК КодКартинки_Группа,
ОбъектыФормата.Ссылка КАК Группа2,
ОбъектыФормата.Наименование КАК Группа2Сортировка,
СвойстваФормата.Ссылка КАК Группа3,
СвойстваФормата.Порядок КАК Группа3Порядок,
СвойстваФормата.Наименование КАК Группа3Сортировка,
СвойстваФормата.Обязательное КАК Обязательное,
ВЫБОР
КОГДА СвойстваФормата.ЭтоГруппа
ТОГДА ЛОЖЬ
ИНАЧЕ СвойстваФормата.СоставнойТип
КОНЕЦ КАК ЭтоСоставнойТип,
СвойстваФормата.Наименование КАК ИмяСоставногоТипа,
ВЫБОР
КОГДА СвойстваФормата.ОбъектХранительСвойств = ""
И (СвойстваФормата.Родитель = ЗНАЧЕНИЕ(Справочник.СвойстваФормата.ПустаяСсылка)
ИЛИ СвойстваФормата.Родитель.ОбъектХранительСвойств = "")
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ДоступноИзменение,
ВЫРАЗИТЬ(СвойстваФормата.Тип КАК СТРОКА(1000)) КАК ТипСвойстваСтрокой,
ВЫБОР
КОГДА СвойстваФормата.ЭтоГруппа
ТОГДА СвойстваФормата.ТипОбщегоСвойства
ИНАЧЕ СвойстваФормата.Родитель.ТипОбщегоСвойства
КОНЕЦ КАК ТипОбщегоРеквизита,
ВЫБОР
КОГДА СвойстваФормата.Родитель.ТипОбщегоСвойства = ЗНАЧЕНИЕ(Перечисление.ТипыОбщихРеквизитов.КлючевыеСвойства)
ТОГДА 3
КОГДА СвойстваФормата.Родитель.ТипОбщегоСвойства = ЗНАЧЕНИЕ(Перечисление.ТипыОбщихРеквизитов.ГруппаОбщихСвойств)
ИЛИ СвойстваФормата.Родитель.ТипОбщегоСвойства = ЗНАЧЕНИЕ(Перечисление.ТипыОбщихРеквизитов.ОбщаяТабличнаяЧасть)
ТОГДА 9
ИНАЧЕ 5
КОНЕЦ КАК КодКартинки
ПОМЕСТИТЬ ВсеОбъектыФормата
ИЗ
Справочник.ОбъектыФормата КАК ОбъектыФормата
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СвойстваФормата КАК СвойстваФормата
ПО (СвойстваФормата.Владелец = ОбъектыФормата.Ссылка)
И (НЕ СвойстваФормата.ПометкаУдаления)
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияФормата КАК ЗначенияФормата
ПО (ЗначенияФормата.Владелец = ОбъектыФормата.Ссылка)
ГДЕ
ОбъектыФормата.ТипОбщегоРеквизита = ЗНАЧЕНИЕ(Перечисление.ТипыОбщихРеквизитов.ПустаяСсылка)
И ОбъектыФормата.Владелец = &ВерсияФормата
И ЗначенияФормата.Ссылка ЕСТЬ NULL
И НЕ ОбъектыФормата.ПометкаУдаления
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВЫБОР
КОГДА ВсеОбъектыФормата.Группа3.Родитель = &ПустойРодитель
ТОГДА ВсеОбъектыФормата.Группа3
ИНАЧЕ ВЫБОР
КОГДА ВсеОбъектыФормата.Группа3.Родитель.Родитель = &ПустойРодитель
ТОГДА ВсеОбъектыФормата.Группа3.Родитель
ИНАЧЕ ВЫБОР
КОГДА ВсеОбъектыФормата.Группа3.Родитель.Родитель.Родитель = &ПустойРодитель
ТОГДА ВсеОбъектыФормата.Группа3.Родитель.Родитель
ИНАЧЕ ВЫБОР
КОГДА ВсеОбъектыФормата.Группа3.Родитель.Родитель.Родитель.Родитель = &ПустойРодитель
ТОГДА ВсеОбъектыФормата.Группа3.Родитель.Родитель.Родитель
ИНАЧЕ ВсеОбъектыФормата.Группа3.Родитель.Родитель.Родитель.Родитель
КОНЕЦ
КОНЕЦ
КОНЕЦ
КОНЕЦ КАК ОбластьФормата,
ВсеОбъектыФормата.Группа3 КАК ПолеФормата,
ВсеОбъектыФормата.Группа3Порядок КАК ПорядокПоля,
ВсеОбъектыФормата.Группа3Сортировка КАК СортировкаПоля,
ВсеОбъектыФормата.Обязательное КАК Обязательное,
ВсеОбъектыФормата.ЭтоСоставнойТип КАК ЭтоСоставнойТип,
ВсеОбъектыФормата.ИмяСоставногоТипа КАК ИмяСоставногоТипа,
ВсеОбъектыФормата.ДоступноИзменение КАК ДоступноИзменение,
ВсеОбъектыФормата.ТипСвойстваСтрокой КАК ТипСвойстваСтрокой,
ВсеОбъектыФормата.ТипОбщегоРеквизита КАК ТипОбщегоРеквизита,
ВсеОбъектыФормата.КодКартинки КАК КодКартинки
ИЗ
ВсеОбъектыФормата КАК ВсеОбъектыФормата
ГДЕ
ВсеОбъектыФормата.Группа2 = &Группа2
И НЕ ВсеОбъектыФормата.Группа3.Наименование ПОДОБНО "Свойство"
И НЕ ВсеОбъектыФормата.Группа3.Наименование ПОДОБНО "ЗначениеСвойства"
УПОРЯДОЧИТЬ ПО
ОбластьФормата,
ПорядокПоля
Параметры запроса:
Имя параметра | Это выражение | Значение параметра |
ВерсияФормата | Нет | ТаблицаЗначений : 0 стр. |
Группа2 | Нет | Документ.РКОНаБанковскийСчет |
ПустойРодитель | Нет |
Теперь уже гораздо проще и быстрее пойдет написание модулей для других документов.
Область | Поле | ПорядокПоля | Обязательное | ЭтоСоставнойТип | ИмяСоставногоТипа | ДоступноИзменение | ТипСвойстваСтрокой | ТипОбщегоРеквизита |
КлючевыеСвойства | КлючевыеСвойства | 1 | Да | Нет | КлючевыеСвойства | Нет | КлючевыеСвойстваРКОНаБанковскийСчет | Ключевые свойства |
КлючевыеСвойства | Ссылка | 1 | Нет | Нет | Ссылка | Нет | ДокументСсылка.РКОНаБанковскийСчет | Ключевые свойства |
КлючевыеСвойства | Дата | 2 | Да | Нет | Дата | Нет | dateTime | Ключевые свойства |
КлючевыеСвойства | Номер | 3 | Да | Нет | Номер | Нет | ТипНомерДокумента | Ключевые свойства |
КлючевыеСвойства | Организация | 4 | Да | Нет | Организация | Нет | КлючевыеСвойстваОрганизация | Ключевые свойства |
ОбщиеДанные | Ответственный | 1 | Нет | Нет | Ответственный | Нет | КлючевыеСвойстваПользователь | Группа общих свойств |
ОбщиеДанные | Валюта | 2 | Да | Нет | Валюта | Нет | КлючевыеСвойстваВалюта | Группа общих свойств |
ОбщиеДанные | ОбщиеДанные | 2 | Да | Нет | ОбщиеДанные | Нет | ОбщиеСвойстваРКО | Группа общих свойств |
ОбщиеДанные | Сумма | 3 | Да | Нет | Сумма | Нет | ТипСумма | Группа общих свойств |
ОбщиеДанные | Комментарий | 4 | Нет | Нет | Комментарий | Нет | string | Группа общих свойств |
ОбщиеДанные | НазначениеПлатежа | 5 | Нет | Нет | НазначениеПлатежа | Нет | string | Группа общих свойств |
ОбщиеДанные | Подразделение | 6 | Нет | Нет | Подразделение | Нет | КлючевыеСвойстваПодразделение | Группа общих свойств |
ОбщиеДанные | Основание | 7 | Нет | Нет | Основание | Нет | string | Группа общих свойств |
ОбщиеДанные | Приложение | 8 | Нет | Нет | Приложение | Нет | string | Группа общих свойств |
ОбщиеДанные | Выдать | 9 | Нет | Нет | Выдать | Нет | string | Группа общих свойств |
ОбщиеДанные | ПоДокументу | 10 | Нет | Нет | ПоДокументу | Нет | string | Группа общих свойств |
ОбщиеДанные | Руководитель | 11 | Нет | Нет | Руководитель | Нет | string | Группа общих свойств |
ОбщиеДанные | ГлавныйБухгалтер | 12 | Нет | Нет | ГлавныйБухгалтер | Нет | string | Группа общих свойств |
ОбщиеДанные | ДополнительныеРеквизиты | 13 | Нет | Нет | ДополнительныеРеквизиты | Нет | ДополнительныеРеквизиты | Общая табличная часть |
БанковскийСчет | БанковскийСчет | 3 | Нет | Нет | БанковскийСчет | Да | КлючевыеСвойстваБанковскийСчет | |
ВидОперации | ВидОперации | 4 | Да | Нет | ВидОперации | Да | ВидыОперацийРКОНаБанковскийСчет |
Таким образом Данный запрос позволил нам автоматически сформировать структуру тегов для аполнения в 7ке.
Тут можно на шаг продвинуться к созданию правил переноса данных для 7ки. Разработаем алгоритм, который заполнит часть кода 1С 7.7 автоматически.
Данный код работает в Запроснике (это разновидность консоли запросов на управляемых формах) и автоматически заполняет часть кода модуля 1С 7.7
ИсходнаяОбластьФормата="";
Для Каждого СтрокаРезультата Из Параметры.ТаблицаРезультата Цикл
Если СтрокаРезультата.Обязательное = "Да" Тогда
СтрокаРезультатаОбязательное ="Обязат.";
Иначе
СтрокаРезультатаОбязательное ="Не обяз.";
КонецЕсли;
Сообщить("//"+СокрЛП(СтрокаРезультата.ОбластьФормата)+";"+СокрЛП(СтрокаРезультата.ПолеФормата)+";"+СтрокаРезультатаОбязательное);
Сообщить(СокрЛП(СтрокаРезультата.ОбластьФормата)+СокрЛП(СтрокаРезультата.ПолеФормата)+"= ;");
КонецЦикла;
Сообщить("РезXML = """";");
Для Каждого СтрокаРезультата Из Параметры.ТаблицаРезультата Цикл
Если ИсходнаяОбластьФормата <> СокрЛП(СтрокаРезультата.ОбластьФормата) Тогда
Если ИсходнаяОбластьФормата <> "" Тогда
Сообщить("</"+ИсходнаяОбластьФормата+">");
КонецЕсли;
Сообщить("<"+СокрЛП(СтрокаРезультата.ОбластьФормата)+">");
ИсходнаяОбластьФормата = СокрЛП(СтрокаРезультата.ОбластьФормата);
КонецЕсли;
Если СтрокаРезультата.Обязательное = "Да" Тогда
СтрокаРезультатаОбязательное ="Обязат.";
Иначе
СтрокаРезультатаОбязательное ="Не обяз.";
КонецЕсли;
Сообщить("//"+СокрЛП(СтрокаРезультата.ОбластьФормата)+";"+СокрЛП(СтрокаРезультата.ПолеФормата)+";"+СтрокаРезультатаОбязательное);
Сообщить("РезXML = РезXML +""<"+СокрЛП(СтрокаРезультата.ПолеФормата)+">"+СокрЛП(СтрокаРезультата.ОбластьФормата)+СокрЛП(СтрокаРезультата.ПолеФормата)+"</"+СокрЛП(СтрокаРезультата.ПолеФормата)+">"";");
КонецЦикла;
Результат автоматической генерации текста программы 1С 7.7 следующий (его нужно почистить и дописать вручную).
//КлючевыеСвойства;КлючевыеСвойства;Не обяз.
КлючевыеСвойстваКлючевыеСвойства= ;
//КлючевыеСвойства;Ссылка;Не обяз.
КлючевыеСвойстваСсылка= ;
//КлючевыеСвойства;Дата;Не обяз.
КлючевыеСвойстваДата= ;
//КлючевыеСвойства;Номер;Не обяз.
КлючевыеСвойстваНомер= ;
//КлючевыеСвойства;Организация;Не обяз.
КлючевыеСвойстваОрганизация= ;
//ОбщиеДанные;ДатаВыписки;Не обяз.
ОбщиеДанныеДатаВыписки= ;
//ОбщиеДанные;Ответственный;Не обяз.
ОбщиеДанныеОтветственный= ;
//ОбщиеДанные;ДатаВходящегоДокумента;Не обяз.
ОбщиеДанныеДатаВходящегоДокумента= ;
//ОбщиеДанные;НомерВходящегоДокумента;Не обяз.
ОбщиеДанныеНомерВходящегоДокумента= ;
//ОбщиеДанные;ТипПлатежногоДокумента;Не обяз.
ОбщиеДанныеТипПлатежногоДокумента= ;
//ОбщиеДанные;Валюта;Не обяз.
ОбщиеДанныеВалюта= ;
//ОбщиеДанные;Сумма;Не обяз.
ОбщиеДанныеСумма= ;
//ОбщиеДанные;Комментарий;Не обяз.
ОбщиеДанныеКомментарий= ;
//ОбщиеДанные;БанковскийСчетОрганизации;Не обяз.
ОбщиеДанныеБанковскийСчетОрганизации= ;
//ОбщиеДанные;НазначениеПлатежа;Не обяз.
ОбщиеДанныеНазначениеПлатежа= ;
//ОбщиеДанные;Подразделение;Не обяз.
ОбщиеДанныеПодразделение= ;
//ОбщиеДанные;ДополнительныеРеквизиты;Не обяз.
ОбщиеДанныеДополнительныеРеквизиты= ;
//ВидРасчетов;ВидРасчетов;Не обяз.
ВидРасчетовВидРасчетов= ;
//Контрагент;Контрагент;Не обяз.
КонтрагентКонтрагент= ;
//БанковскийСчетКонтрагента;БанковскийСчетКонтрагента;Не обяз.
БанковскийСчетКонтрагентаБанковскийСчетКонтрагента= ;
//РасшифровкаПлатежа;Заказ;Не обяз.
РасшифровкаПлатежаЗаказ= ;
//РасшифровкаПлатежа;Договор;Не обяз.
РасшифровкаПлатежаДоговор= ;
//РасшифровкаПлатежа;ВалютаВзаиморасчетов;Не обяз.
РасшифровкаПлатежаВалютаВзаиморасчетов= ;
//РасшифровкаПлатежа;СтатьяДДС;Не обяз.
РасшифровкаПлатежаСтатьяДДС= ;
//РасшифровкаПлатежа;Сумма;Не обяз.
РасшифровкаПлатежаСумма= ;
//РасшифровкаПлатежа;КурсВзаиморасчетов;Не обяз.
РасшифровкаПлатежаКурсВзаиморасчетов= ;
//РасшифровкаПлатежа;СуммаВзаиморасчетов;Не обяз.
РасшифровкаПлатежаСуммаВзаиморасчетов= ;
//РасшифровкаПлатежа;КратностьВзаиморасчетов;Не обяз.
РасшифровкаПлатежаКратностьВзаиморасчетов= ;
//РасшифровкаПлатежа;СуммаНДС;Не обяз.
РасшифровкаПлатежаСуммаНДС= ;
//РасшифровкаПлатежа;РасчетыВУсловныхЕдиницах;Не обяз.
РасшифровкаПлатежаРасчетыВУсловныхЕдиницах= ;
//РасшифровкаПлатежа;СчетУчетаРасчетовСКонтрагентом;Не обяз.
РасшифровкаПлатежаСчетУчетаРасчетовСКонтрагентом= ;
//РасшифровкаПлатежа;СтавкаНДС;Не обяз.
РасшифровкаПлатежаСтавкаНДС= ;
//РасшифровкаПлатежа;РасшифровкаПлатежа;Не обяз.
РасшифровкаПлатежаРасшифровкаПлатежа= ;
//РасшифровкаПлатежа;ДанныеВзаиморасчетов;Не обяз.
РасшифровкаПлатежаДанныеВзаиморасчетов= ;
//РасшифровкаПлатежа;СчетУчетаРасчетовПоАвансам;Не обяз.
РасшифровкаПлатежаСчетУчетаРасчетовПоАвансам= ;
//РасшифровкаПлатежа;ВидРасчетовРасширенный;Не обяз.
РасшифровкаПлатежаВидРасчетовРасширенный= ;
//РасшифровкаПлатежа;СпособПогашенияЗадолженности;Не обяз.
РасшифровкаПлатежаСпособПогашенияЗадолженности= ;
//РасшифровкаПлатежа;ДокументРасчетов;Не обяз.
РасшифровкаПлатежаДокументРасчетов= ;
РезXML = "";
<КлючевыеСвойства>
//КлючевыеСвойства;КлючевыеСвойства;Не обяз.
РезXML = РезXML +"<КлючевыеСвойства>КлючевыеСвойстваКлючевыеСвойства</КлючевыеСвойства>";
//КлючевыеСвойства;Ссылка;Не обяз.
РезXML = РезXML +"<Ссылка>КлючевыеСвойстваСсылка</Ссылка>";
//КлючевыеСвойства;Дата;Не обяз.
РезXML = РезXML +"<Дата>КлючевыеСвойстваДата</Дата>";
//КлючевыеСвойства;Номер;Не обяз.
РезXML = РезXML +"<Номер>КлючевыеСвойстваНомер</Номер>";
//КлючевыеСвойства;Организация;Не обяз.
РезXML = РезXML +"<Организация>КлючевыеСвойстваОрганизация</Организация>";
</КлючевыеСвойства>
<ОбщиеДанные>
//ОбщиеДанные;ДатаВыписки;Не обяз.
РезXML = РезXML +"<ДатаВыписки>ОбщиеДанныеДатаВыписки</ДатаВыписки>";
//ОбщиеДанные;Ответственный;Не обяз.
РезXML = РезXML +"<Ответственный>ОбщиеДанныеОтветственный</Ответственный>";
//ОбщиеДанные;ДатаВходящегоДокумента;Не обяз.
РезXML = РезXML +"<ДатаВходящегоДокумента>ОбщиеДанныеДатаВходящегоДокумента</ДатаВходящегоДокумента>";
//ОбщиеДанные;НомерВходящегоДокумента;Не обяз.
РезXML = РезXML +"<НомерВходящегоДокумента>ОбщиеДанныеНомерВходящегоДокумента</НомерВходящегоДокумента>";
//ОбщиеДанные;ТипПлатежногоДокумента;Не обяз.
РезXML = РезXML +"<ТипПлатежногоДокумента>ОбщиеДанныеТипПлатежногоДокумента</ТипПлатежногоДокумента>";
//ОбщиеДанные;Валюта;Не обяз.
РезXML = РезXML +"<Валюта>ОбщиеДанныеВалюта</Валюта>";
//ОбщиеДанные;Сумма;Не обяз.
РезXML = РезXML +"<Сумма>ОбщиеДанныеСумма</Сумма>";
//ОбщиеДанные;Комментарий;Не обяз.
РезXML = РезXML +"<Комментарий>ОбщиеДанныеКомментарий</Комментарий>";
//ОбщиеДанные;БанковскийСчетОрганизации;Не обяз.
РезXML = РезXML +"<БанковскийСчетОрганизации>ОбщиеДанныеБанковскийСчетОрганизации</БанковскийСчетОрганизации>";
//ОбщиеДанные;НазначениеПлатежа;Не обяз.
РезXML = РезXML +"<НазначениеПлатежа>ОбщиеДанныеНазначениеПлатежа</НазначениеПлатежа>";
//ОбщиеДанные;Подразделение;Не обяз.
РезXML = РезXML +"<Подразделение>ОбщиеДанныеПодразделение</Подразделение>";
//ОбщиеДанные;ДополнительныеРеквизиты;Не обяз.
РезXML = РезXML +"<ДополнительныеРеквизиты>ОбщиеДанныеДополнительныеРеквизиты</ДополнительныеРеквизиты>";
</ОбщиеДанные>
<ВидРасчетов>
//ВидРасчетов;ВидРасчетов;Не обяз.
РезXML = РезXML +"<ВидРасчетов>ВидРасчетовВидРасчетов</ВидРасчетов>";
</ВидРасчетов>
<Контрагент>
//Контрагент;Контрагент;Не обяз.
РезXML = РезXML +"<Контрагент>КонтрагентКонтрагент</Контрагент>";
</Контрагент>
<БанковскийСчетКонтрагента>
//БанковскийСчетКонтрагента;БанковскийСчетКонтрагента;Не обяз.
РезXML = РезXML +"<БанковскийСчетКонтрагента>БанковскийСчетКонтрагентаБанковскийСчетКонтрагента</БанковскийСчетКонтрагента>";
</БанковскийСчетКонтрагента>
<РасшифровкаПлатежа>
//РасшифровкаПлатежа;Заказ;Не обяз.
РезXML = РезXML +"<Заказ>РасшифровкаПлатежаЗаказ</Заказ>";
//РасшифровкаПлатежа;Договор;Не обяз.
РезXML = РезXML +"<Договор>РасшифровкаПлатежаДоговор</Договор>";
//РасшифровкаПлатежа;ВалютаВзаиморасчетов;Не обяз.
РезXML = РезXML +"<ВалютаВзаиморасчетов>РасшифровкаПлатежаВалютаВзаиморасчетов</ВалютаВзаиморасчетов>";
//РасшифровкаПлатежа;СтатьяДДС;Не обяз.
РезXML = РезXML +"<СтатьяДДС>РасшифровкаПлатежаСтатьяДДС</СтатьяДДС>";
//РасшифровкаПлатежа;Сумма;Не обяз.
РезXML = РезXML +"<Сумма>РасшифровкаПлатежаСумма</Сумма>";
//РасшифровкаПлатежа;КурсВзаиморасчетов;Не обяз.
РезXML = РезXML +"<КурсВзаиморасчетов>РасшифровкаПлатежаКурсВзаиморасчетов</КурсВзаиморасчетов>";
//РасшифровкаПлатежа;СуммаВзаиморасчетов;Не обяз.
РезXML = РезXML +"<СуммаВзаиморасчетов>РасшифровкаПлатежаСуммаВзаиморасчетов</СуммаВзаиморасчетов>";
//РасшифровкаПлатежа;КратностьВзаиморасчетов;Не обяз.
РезXML = РезXML +"<КратностьВзаиморасчетов>РасшифровкаПлатежаКратностьВзаиморасчетов</КратностьВзаиморасчетов>";
//РасшифровкаПлатежа;СуммаНДС;Не обяз.
РезXML = РезXML +"<СуммаНДС>РасшифровкаПлатежаСуммаНДС</СуммаНДС>";
//РасшифровкаПлатежа;РасчетыВУсловныхЕдиницах;Не обяз.
РезXML = РезXML +"<РасчетыВУсловныхЕдиницах>РасшифровкаПлатежаРасчетыВУсловныхЕдиницах</РасчетыВУсловныхЕдиницах>";
//РасшифровкаПлатежа;СчетУчетаРасчетовСКонтрагентом;Не обяз.
РезXML = РезXML +"<СчетУчетаРасчетовСКонтрагентом>РасшифровкаПлатежаСчетУчетаРасчетовСКонтрагентом</СчетУчетаРасчетовСКонтрагентом>";
//РасшифровкаПлатежа;СтавкаНДС;Не обяз.
РезXML = РезXML +"<СтавкаНДС>РасшифровкаПлатежаСтавкаНДС</СтавкаНДС>";
//РасшифровкаПлатежа;РасшифровкаПлатежа;Не обяз.
РезXML = РезXML +"<РасшифровкаПлатежа>РасшифровкаПлатежаРасшифровкаПлатежа</РасшифровкаПлатежа>";
//РасшифровкаПлатежа;ДанныеВзаиморасчетов;Не обяз.
РезXML = РезXML +"<ДанныеВзаиморасчетов>РасшифровкаПлатежаДанныеВзаиморасчетов</ДанныеВзаиморасчетов>";
//РасшифровкаПлатежа;СчетУчетаРасчетовПоАвансам;Не обяз.
РезXML = РезXML +"<СчетУчетаРасчетовПоАвансам>РасшифровкаПлатежаСчетУчетаРасчетовПоАвансам</СчетУчетаРасчетовПоАвансам>";
//РасшифровкаПлатежа;ВидРасчетовРасширенный;Не обяз.
РезXML = РезXML +"<ВидРасчетовРасширенный>РасшифровкаПлатежаВидРасчетовРасширенный</ВидРасчетовРасширенный>";
//РасшифровкаПлатежа;СпособПогашенияЗадолженности;Не обяз.
РезXML = РезXML +"<СпособПогашенияЗадолженности>РасшифровкаПлатежаСпособПогашенияЗадолженности</СпособПогашенияЗадолженности>";
//РасшифровкаПлатежа;ДокументРасчетов;Не обяз.
РезXML = РезXML +"<ДокументРасчетов>РасшифровкаПлатежаДокументРасчетов</ДокументРасчетов>";
Тут же в запроснике в Конвертации данных 3 из результатов приведенного выше запроса можно открыть свойство формата и увидеть список его разрешенных значений, очень удобно.
Создаем модуль экспорта 1С 7.7 EnterpriseData для документа "Строка выписки банка (приход)".
В нашем случае структура строк табличной части вот такая (схему строит XML-редактор, берем из него):
****************************************************************************************************
В конфигурации "Конвертация данных 3" можно открыть свойства формата, левее есть колонка "Обязательное поле":
****************************************************************************************************
Выдержка из описания схемы XDTO строки табличной части расшифровки платежа, обратите внимание - у обязательных полей отсутствует свойство minOccurs="0":
<xs:complexType name="РасшифровкаПлатежа.Строка">
<xs:sequence>
<xs:element name="Заказ" minOccurs="0">
<xs:complexType>
<xs:choice>
<xs:element name="ЗаказКлиента" type="tns:КлючевыеСвойстваЗаказКлиента" minOccurs="0"/>
<xs:element name="ЗаказПоставщику" type="tns:КлючевыеСвойстваЗаказПоставщику" minOccurs="0"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="СтатьяДДС" type="tns:КлючевыеСвойстваСтатьяДДС" minOccurs="0"/>
<xs:element name="Сумма" type="tns:ТипСумма"/>
<xs:element name="СуммаВзаиморасчетов" type="tns:ТипСумма" minOccurs="0"/>
<xs:element name="СуммаНДС" type="tns:ТипСумма" minOccurs="0"/>
<xs:element name="СтавкаНДС" type="tns:СтавкиНДС" minOccurs="0"/>
<xs:element name="ДанныеВзаиморасчетов" type="tns:ОбщиеСвойстваДанныеВзаиморасчетов"/>
<xs:element name="ВидРасчетовРасширенный" minOccurs="0">
<xs:complexType>
<xs:choice>
<xs:element name="ВидРасчетовСПокупателямиПоставщиками" type="tns:ВидыРасчетовСПокупателямиПоставщиками" minOccurs="0"/>
<xs:element name="ВидРасчетовПоКредитамИЗаймам" type="tns:ВидыРасчетовПоКредитамИЗаймам" minOccurs="0"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="СпособПогашенияЗадолженности" type="tns:СпособыПогашенияЗадолженности" minOccurs="0"/>
<xs:element name="ДокументРасчетов" type="tns:СоставнойДокументРасчетов" minOccurs="0"/>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
Документ кассовый или банковский отличается небольшим количеством реквизитов (вложенных объектов). Задача формирования файлов EnterpriseData хорошо структурируется. Однако работа довольно кропотливая. В коде расширен состав классификации пронумерованных видов комментариев.
Вот модуль выгрузки строки банковской выписки (приход) через EnterpriseData в ПБДС 1С 8.3
Функция СформироватьДату(Дата1С="")
Если Дата1С="" Тогда
Дата1С = ТекущаяДата();
КонецЕсли;
ГодДаты = СокрЛП(ДатаГод(Дата1С));
МесяцДаты = Формат(ДатаМесяц(Дата1С),"Ч(0)2");
ДеньДаты = Формат(ДатаЧисло(Дата1С),"Ч(0)2");
ТекДатаФорм = ГодДаты+"-"+МесяцДаты+"-"+ДеньДаты;
Возврат ТекДатаФорм;
КонецФункции
Функция СформироватьДатуВремя(ТекущийДокументСсылка="");
ГодДаты = СокрЛП(ДатаГод(ТекущийДокументСсылка.ДатаДок));
МесяцДаты = Формат(ДатаМесяц(ТекущийДокументСсылка.ДатаДок),"Ч(0)2");
ДеньДаты = Формат(ДатаЧисло(ТекущийДокументСсылка.ДатаДок),"Ч(0)2");
ТекДатаФорм = ГодДаты+"-"+МесяцДаты+"-"+ДеньДаты;
чч = 0; мм = 0; сс = 0;
ТекущийДокументСсылка.ПолучитьВремя(чч,мм,сс);
КлючевыеСвойстваXMLШтампДатаДок = ТекДатаФорм+"T"+Формат(чч,"Ч(0)2")+":"+Формат(мм,"Ч(0)2")+":"+Формат(сс,"Ч(0)2");
КонецФункции
Функция ДобавитьЗаголовокXML(ТекущийДокументСсылка)
ТекДата = ТекущаяДата();
ГодДаты = СокрЛП(ДатаГод(ТекДата));
МесяцДаты = Формат(ДатаМесяц(ТекДата),"Ч(0)2");
ДеньДаты = Формат(ДатаЧисло(ТекДата),"Ч(0)2");
ТекДатаФорм = ГодДаты+"-"+МесяцДаты+"-"+ДеньДаты;
чч = 0; мм = 0; сс = 0;
ТекущееВремя(чч,мм,сс);
ШтампДатаВремя = ТекДатаФорм+"T"+Формат(чч,"Ч(0)2")+":"+Формат(мм,"Ч(0)2")+":"+Формат(сс,"Ч(0)2");
ЗаголовокXML =
"<?xml version=""1.0""?>
|<Message xmlns:msg=""http://www.1c.ru/SSL/Exchange/Message"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">
| <msg:Header>
| <msg:Format>http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5</msg:Format>
| <msg:CreationDate>"+ШтампДатаВремя+"</msg:CreationDate>
| <msg:AvailableVersion>1.5</msg:AvailableVersion>
| </msg:Header>
| <Body xmlns=""http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5"">
| <Документ.ПБДСРасчетыСКонтрагентами>";
Возврат ЗаголовокXML;
КонецФункции
//Цифрой 1 обозначены описания из формата EnterpriseData на сайте 1С
//Цифрой 2 обозначены Правила выгрузки из списка "Конвертация данных 3.0.5.3"
//Цифрой 3 обозначены записи структуры пакета XDTO
//Цифрой 4 обозначены результаты запроса в Конвертации данных 3 к пакету XDTO
//Цифрой 5 обозначен автоматический код сформированный алгритмом запросника
//на основе результата запроса по данному документу к пакету XDTO КД3
//Цифрой 6 в начале комментария обозначен список реквизитов базы источника из конфигурации конвертация данных 3
//Цифрой 7 в начале комментария обозначена структура вложенного объекта формата из конвертации данных 3
Функция ДобавитьКлючевыеСвойстваОрганизация(ДляБанковскогоСчета=0)
//4.КлючевыеСвойства Организация Да КлючевыеСвойстваОрганизация Ключевые свойства
//3. <xs:element name="Организация" type="tns:КлючевыеСвойстваОрганизация"/>
//3. <xs:complexType name="КлючевыеСвойстваОрганизация">
//3. <xs:sequence>
//3. <xs:element name="Ссылка" type="tns:СправочникСсылка.Организации" minOccurs="0"/>
//3. <xs:element name="Наименование" type="xs:string"/>
//3. <xs:element name="НаименованиеСокращенное" type="xs:string" minOccurs="0"/>
//3. <xs:element name="НаименованиеПолное" type="xs:string" minOccurs="0"/>
//3. <xs:element name="ИНН" minOccurs="0">
//3. <xs:simpleType>
//3. <xs:restriction base="xs:string">
//3. <xs:maxLength value="12"/>
//3. </xs:restriction>
//3. </xs:simpleType>
//3. </xs:element>
//3. <xs:element name="КПП" minOccurs="0">
//3. <xs:simpleType>
//3. <xs:restriction base="xs:string">
//3. <xs:maxLength value="9"/>
//3. </xs:restriction>
//3. </xs:simpleType>
//3. </xs:element>
//3. <xs:element name="ГоловнаяОрганизация" type="tns:КлючевыеСвойстваОрганизация" minOccurs="0"/>
//3. <xs:element name="ЮридическоеФизическоеЛицо" type="tns:ЮридическоеФизическоеЛицо"/>
//3. <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
//3. </xs:sequence>
//3. <xs:anyAttribute namespace="##any" processContents="lax"/>
//3. </xs:complexType>
//3. <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
//3. </xs:sequence>
Если ДляБанковскогоСчета=0 Тогда
Возврат " <Организация>
// <Ссылка>"+ПолучитьУникальныйИдентификатор(ТекущийДокументСсылка.Фирма)+"</Ссылка>
| <Ссылка>7d84c015-df1a-11e7-80d4-b0cb018bb13a</Ссылка>
| <Наименование>Общество с ограниченной ответственностью «Сигма»</Наименование>
| <НаименованиеСокращенное>ООО «Сигма»</НаименованиеСокращенное>
| <НаименованиеПолное>Общество с ограниченной ответственностью «Сигма»</НаименованиеПолное>
| <ИНН>3662238642</ИНН>
| <КПП>366201001</КПП>
//| <ГоловнаяОрганизация/>
| <ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
| </Организация>
|";
Иначе
Возврат " <ОрганизацииСсылка>
// <Ссылка>"+ПолучитьУникальныйИдентификатор(ТекущийДокументСсылка.Фирма)+"</Ссылка>
| <Ссылка>7d84c015-df1a-11e7-80d4-b0cb018bb13a</Ссылка>
| <Наименование>Общество с ограниченной ответственностью «Сигма»</Наименование>
| <НаименованиеСокращенное>ООО «Сигма»</НаименованиеСокращенное>
| <НаименованиеПолное>Общество с ограниченной ответственностью «Сигма»</НаименованиеПолное>
| <ИНН>3662238642</ИНН>
| <КПП>366201001</КПП>
//| <ГоловнаяОрганизация/>
| <ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
| </ОрганизацииСсылка>
|";
КонецЕсли;
КонецФункции
Функция ДобавитьКлючевыеСвойстваФизическоеЛицо(ФизЛицо="", ТекущийДокументСсылка)
//3.<xs:element name="ФизическоеЛицо" type="tns:КлючевыеСвойстваФизическоеЛицо" minOccurs="0"/>
//3. <xs:complexType name="КлючевыеСвойстваФизическоеЛицо">
//3. <xs:sequence>
//3. <xs:element name="Ссылка" type="tns:СправочникСсылка.ФизическиеЛица" minOccurs="0"/>
//3. <xs:element name="ФИО" type="xs:string"/>
Если СокрЛП(ФизЛицо)="" Тогда
СпрФЛ = СоздатьОбъект("Справочник.ФизЛица");
СпрФЛ.НайтиПоНаименованию(ТекущийДокументСсылка.Автор.Наименование);
ФизЛицо = СпрФЛ.ТекущийЭлемент();
Если СокрЛП(ФизЛицо)="" Тогда
СпрФЛ = СоздатьОбъект("Справочник.ФизЛица");
СпрФЛ.НайтиПоКоду("Бб002006",0);
ФизЛицо = СпрФЛ.ТекущийЭлемент();
КонецЕсли;
КонецЕсли;
КлючевыеСвойстваФизическоеЛицоСсылка = ПолучитьУникальныйИдентификатор(ФизЛицо);
КлючевыеСвойстваФизическоеЛицоФИО = СокрЛП(ФизЛицо.ПолнНаименование);
//3. <xs:element name="Фамилия" type="xs:string" minOccurs="0"/>
//3. <xs:element name="Имя" type="xs:string" minOccurs="0"/>
//3. <xs:element name="Отчество" type="xs:string" minOccurs="0"/>
ИмяФЛ = ""; ФамилияФЛ = ""; ОтчествоФЛ = "";
глФамилияИмяОтчество(ФизЛицо,ФамилияФЛ,ИмяФЛ,ОтчествоФЛ);
КлючевыеСвойстваФизическоеЛицоИмя = ИмяФЛ;
КлючевыеСвойстваФизическоеЛицоОтчество = ОтчествоФЛ;
КлючевыеСвойстваФизическоеЛицоФамилия = ФамилияФЛ;
//3. <xs:element name="ДатаРождения" type="xs:date" minOccurs="0"/>
ФизЛицоДатаРождения = ФизЛицо.ДатаРождения;
ГодДаты = СокрЛП(ДатаГод(ФизЛицоДатаРождения));
МесяцДаты = Формат(ДатаМесяц(ФизЛицоДатаРождения),"Ч(0)2");
ДеньДаты = Формат(ДатаЧисло(ФизЛицоДатаРождения),"Ч(0)2");
ФизЛицоДатаРождения = ГодДаты+"-"+МесяцДаты+"-"+ДеньДаты;
КлючевыеСвойстваФизическоеЛицоДатаРождения = ФизЛицоДатаРождения;//+"T"+Формат(чч,"Ч(0)2")+":"+Формат(мм,"Ч(0)2")+":"+Формат(сс,"Ч(0)2");
//3. <xs:element name="КодВПрограмме" type="xs:string" minOccurs="0"/>
КлючевыеСвойстваФизическоеЛицоКодВПрограмме = ФизЛицо.Код;
//3. <xs:element name="ИНН" minOccurs="0">
//3. <xs:simpleType>
//3. <xs:restriction base="xs:string">
//3. <xs:maxLength value="12"/>
//3. </xs:restriction>
//3. </xs:simpleType>
КлючевыеСвойстваФизическоеЛицоИНН = ФизЛицо.ИНН;
//3. </xs:element>
//3. <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
//3. </xs:sequence>
//3. <xs:anyAttribute namespace="##any" processContents="lax"/>
//3. </xs:complexType>
Возврат
" <ФизическоеЛицо>
| <Ссылка>"+КлючевыеСвойстваФизическоеЛицоСсылка+"</Ссылка>
| <ФИО>"+КлючевыеСвойстваФизическоеЛицоФИО+"</ФИО>
| <Фамилия>"+КлючевыеСвойстваФизическоеЛицоФамилия+"</Фамилия>
| <Имя>"+КлючевыеСвойстваФизическоеЛицоИмя+"</Имя>
| <Отчество>"+КлючевыеСвойстваФизическоеЛицоОтчество+"</Отчество>
| <ДатаРождения>"+КлючевыеСвойстваФизическоеЛицоДатаРождения+"</ДатаРождения>
| <КодВПрограмме>"+КлючевыеСвойстваФизическоеЛицоКодВПрограмме+"</КодВПрограмме>
| <ИНН>"+КлючевыеСвойстваФизическоеЛицоИНН+"</ИНН>
| </ФизическоеЛицо>
|";
КонецФункции
Функция ДобавитьКлючевыеСвойстваПользователь(Пользователь, ТекущийДокументСсылка)
Если Пользователь="" Тогда
Пользователь= ТекущийДокументСсылка.Автор;
КонецЕсли;
//3. <xs:element name="Ответственный" type="tns:КлючевыеСвойстваПользователь" minOccurs="0"/>
//3. <xs:complexType name="КлючевыеСвойстваПользователь">
//3. <xs:sequence>
//3. <xs:element name="Ссылка" type="tns:СправочникСсылка.Пользователи" minOccurs="0"/>
КлючевыеСвойстваПользовательСсылка = ПолучитьУникальныйИдентификатор(Пользователь);
//3. <xs:element name="Наименование" type="xs:string"/>
КлючевыеСвойстваПользовательНаименование = СокрЛП(Пользователь.Наименование);
//5.ОбщиеДанные;Ответственный;Не обяз.
Возврат "
| <Ответственный>
| <Ссылка>"+КлючевыеСвойстваПользовательСсылка+"</Ссылка>
| <Наименование>"+КлючевыеСвойстваПользовательНаименование+"</Наименование>
|"+ДобавитьКлючевыеСвойстваФизическоеЛицо("", ТекущийДокументСсылка)+"
| </Ответственный>
|";
КонецФункции
Функция ДобавитьКлючевыеСвойстваВалюта()
Возврат "<Валюта>
| <Ссылка>af5ac665-734f-11e6-9fac-001517fd8aac</Ссылка>
| <Код>643</Код>
| <Наименование>Российский рубль</Наименование>
| </Валюта>
|";
КонецФункции
Функция ДобавитьКлючевыеСвойстваБанковскийСчетОрганизации(БанковскийСчет="",ТекущийДокументСсылка)
//5.ОбщиеДанные;БанковскийСчетОрганизации;Не обяз.
//6.Наименование Синоним Комментарий Типы
//6.Банк СправочникСсылка.Банки
//6.БанкДляРасчетов Банк непрямых расчетов СправочникСсылка.Банки
//6.ВалютаСчета Валюта счета СправочникСсылка.Валюты
//6.ВидСчета Вид счета расчетный (текущий), ссудный, депозитный, иной счет Строка (П20)
//6.ДатаЗакрытияСчета Дата закрытия счета Дата
//6.ДатаОткрытияСчета Дата открытия счета Дата
//6.Код Код Код Строка (П8)
//6.МесяцПрописью Месяц прописью 1 - выводить месяц прописью Число (1.0)
//6.Назначение Назначение платежа Строка (Неогр)
//6.Наименование Наименование Наименование Строка (П25)
//6.НомерИДатаРазрешения Номер и дата разрешения на открытие счета в иностранной валюте Строка (П35)
//6.НомерСчета Номер счета Строка (П20)
//6.ПометкаУдаления Пометка удаления Пометка удаления Число (1.0)
//6.РеквизитыПлательщикаИлиПолучателя Реквизиты плательщика или получателя подставляемые по умолчанию в формы платежных документов Строка (Неогр)
//6.СуммаБез00Копеек Сумма без 00 копеек 1 - выводить сумму без 00 копеек Число (1.0)
//6.ЮрФизЛицо Юридическое или физическое лицо СправочникСсылка.Аналоги, СправочникСсылка.Банки,
//7.Наименование Тип
//7.Банк КлючевыеСвойстваБанк
//7.БанкДляРасчетов КлючевыеСвойстваБанк
//7.Владелец КлючевыеСвойстваКонтрагент;КлючевыеСвойстваОрганизация;КлючевыеСвойстваФизическоеЛицо
//7.НомерСчета string (34)
//7.Ссылка СправочникСсылка.БанковскиеСчета
//3.<xs:complexType name="КлючевыеСвойстваБанковскийСчет">
//3. <xs:sequence>
//3. <xs:element name="Ссылка" type="tns:СправочникСсылка.БанковскиеСчета" minOccurs="0"/>
//3. <xs:element name="НомерСчета">
//3. <xs:simpleType>
//3. <xs:restriction base="xs:string">
//3. <xs:maxLength value="34"/>
//3. </xs:restriction>
//3. </xs:simpleType>
//3. </xs:element>
//3. <xs:element name="Банк" type="tns:КлючевыеСвойстваБанк" minOccurs="0"/>
//3. <xs:element name="БанкДляРасчетов" type="tns:КлючевыеСвойстваБанк" minOccurs="0"/>
//3. <xs:element name="Владелец">
//3. <xs:complexType>
//3. <xs:sequence>
//3. <xs:element name="КонтрагентыСсылка" type="tns:КлючевыеСвойстваКонтрагент" minOccurs="0"/>
//3. <xs:element name="ОрганизацииСсылка" type="tns:КлючевыеСвойстваОрганизация" minOccurs="0"/>
//3. <xs:element name="ФизическиеЛицаСсылка" type="tns:КлючевыеСвойстваФизическоеЛицо" minOccurs="0"/>
//3. </xs:sequence>
//3. </xs:complexType>
//3. </xs:element>
//3. <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
//3. </xs:sequence>
//3. <xs:anyAttribute namespace="##any" processContents="lax"/>
//3.</xs:complexType>
Если БанковскийСчет="" Тогда
БанковскийСчет = ТекущийДокументСсылка.БанковскийСчет;
КонецЕсли;
//ОбщиеДанныеБанковскийСчетОрганизацииСсылка= ПолучитьУникальныйИдентификатор(БанковскийСчет);
//подменяем на существующий в новой программе счет
ОбщиеДанныеБанковскийСчетОрганизацииСсылка= "14786e8d-fdc3-11e7-80dd-e11ff638f0cc";
ОбщиеДанныеБанковскийСчетОрганизацииНомерСчета= БанковскийСчет.НомерСчета;
Банк = БанковскийСчет.Банк;
//3.<xs:complexType name="КлючевыеСвойстваБанк">
//3. <xs:sequence>
//3. <xs:element name="Ссылка" type="tns:СправочникСсылка.Банки" minOccurs="0"/>
//3. <xs:element name="БИК">
//3. <xs:simpleType>
//3. <xs:restriction base="xs:string">
//3. <xs:maxLength value="9"/>
//3. </xs:restriction>
//3. </xs:simpleType>
//3. </xs:element>
//3. <xs:element name="КоррСчет" minOccurs="0">
//3. <xs:simpleType>
//3. <xs:restriction base="xs:string">
//3. <xs:maxLength value="20"/>
//3. </xs:restriction>
//3. </xs:simpleType>
//3. </xs:element>
//3. <xs:element name="Наименование" type="xs:string" minOccurs="0"/>
//3. <xs:element name="СВИФТБИК" minOccurs="0">
//3. <xs:simpleType>
//3. <xs:restriction base="xs:string">
//3. <xs:maxLength value="11"/>
//3. </xs:restriction>
//3. </xs:simpleType>
//3. </xs:element>
//3. <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
//3. </xs:sequence>
//3. <xs:anyAttribute namespace="##any" processContents="lax"/>
//3. </xs:complexType>
//КлючевыеСвойстваБанкСсылка= ПолучитьУникальныйИдентификатор(Банк);
//подменяем на существующий в новой программе банк
КлючевыеСвойстваБанкСсылка= "14722e08-7350-11e6-9fac-001517fd8aac";
КлючевыеСвойстваБанкБИК=СокрЛП(Банк.Код);
КлючевыеСвойстваБанкКоррСчет=СокрЛП(Банк.КоррСчет);
КлючевыеСвойстваБанкНаименование=СокрЛП(Банк.Наименование);
КлючевыеСвойстваБанкСВИФТБИК="";
//3.<xs:element name="БанкДляРасчетов" type="tns:КлючевыеСвойстваБанк" minOccurs="0"/>
//3.<xs:element name="Владелец">
//3. <xs:complexType>
//3. <xs:sequence>
//3. <xs:element name="КонтрагентыСсылка" type="tns:КлючевыеСвойстваКонтрагент" minOccurs="0"/>
//3. <xs:element name="ОрганизацииСсылка" type="tns:КлючевыеСвойстваОрганизация" minOccurs="0"/>
//3. <xs:element name="ФизическиеЛицаСсылка" type="tns:КлючевыеСвойстваФизическоеЛицо" minOccurs="0"/>
//3. </xs:sequence>
//3. </xs:complexType>
//3.</xs:element>
//3.<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
ОбщиеДанныеБанковскийСчетОрганизацииВладелецОрганизация = "";
//РезXML = РезXML +"<БанковскийСчетОрганизации>ОбщиеДанныеБанковскийСчетОрганизации</БанковскийСчетОрганизации>
//|";
РезXML =
" <БанковскийСчетОрганизации>
| <Ссылка>"+ОбщиеДанныеБанковскийСчетОрганизацииСсылка+"</Ссылка>
| <НомерСчета>"+ОбщиеДанныеБанковскийСчетОрганизацииНомерСчета+"</НомерСчета>
| <Банк>
| <Ссылка>"+КлючевыеСвойстваБанкСсылка+"</Ссылка>
| <БИК>"+КлючевыеСвойстваБанкБИК+"</БИК>
| <КоррСчет>"+КлючевыеСвойстваБанкКоррСчет+"</КоррСчет>
| <Наименование>"+КлючевыеСвойстваБанкНаименование+"</Наименование>
| </Банк>
| <Владелец>
|"+ДобавитьКлючевыеСвойстваОрганизация(1)+"
| </Владелец>
| </БанковскийСчетОрганизации>
|";
Возврат РезXML;
КонецФункции
Функция ДобавитьКлючевыеСвойстваБанковскийСчетКонтрагента(БанковскийСчет="",ТекущийДокументСсылка) Далее
Функция ДобавитьКлючевыеСвойстваКонтрагент(Контрагент = "", ТекущийДокументСсылка)
флДобавитьВложенныйБанковскийСчет = 1;
Если Контрагент = "" Тогда
флДобавитьВложенныйБанковскийСчет = 0;
Контрагент = ТекущийДокументСсылка.Контрагент;
КонецЕсли;
//3.xs:complexType name="КлючевыеСвойстваКонтрагент">
//3. <xs:sequence>
//3. <xs:element name="Ссылка" type="tns:СправочникСсылка.Контрагенты" minOccurs="0"/>
//3. <xs:element name="Наименование" type="xs:string"/>
//3. <xs:element name="НаименованиеПолное" type="xs:string" minOccurs="0"/>
//3. <xs:element name="ИНН" minOccurs="0">
//3. <xs:simpleType>
//3. <xs:restriction base="xs:string">
//3. <xs:maxLength value="12"/>
//3. </xs:restriction>
//3. </xs:simpleType>
//3. </xs:element>
//3. <xs:element name="КПП" minOccurs="0">
//3. <xs:simpleType>
//3. <xs:restriction base="xs:string">
//3. <xs:maxLength value="9"/>
//3. </xs:restriction>
//3. </xs:simpleType>
//3. </xs:element>
//3. <xs:element name="ЮридическоеФизическоеЛицо" type="tns:ЮридическоеФизическоеЛицо"/>
//3. <xs:element name="СтранаРегистрации" type="tns:КлючевыеСвойстваСтранаМира" minOccurs="0"/>
//3. <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
//3. </xs:sequence>
//3. <xs:anyAttribute namespace="##any" processContents="lax"/>
//3. </xs:complexType>
КлючевыеСвойстваКонтрагентСсылка = ПолучитьУникальныйИдентификатор(Контрагент);
КлючевыеСвойстваКонтрагентНаименование = Контрагент.Наименование;
КлючевыеСвойстваКонтрагентНаименованиеПолное = Контрагент.ЮрФизЛицо.ТекущийЭлемент().ПолнНаименование;
КлючевыеСвойстваКонтрагентИНН = Лев(Контрагент.ЮрФизЛицо.ТекущийЭлемент().ИНН,10);
КлючевыеСвойстваКонтрагентКПП = Прав(Контрагент.ЮрФизЛицо.ТекущийЭлемент().ИНН,9);
КлючевыеСвойстваКонтрагентРасшифровкаПлатежа = СокрЛП(ТекущийДокументСсылка.Комментарий);
РезXML = " <Контрагент>
| <Ссылка>"+КлючевыеСвойстваКонтрагентСсылка+"</Ссылка>
| <Наименование>"+КлючевыеСвойстваКонтрагентНаименование+"</Наименование>
| <НаименованиеПолное>"+КлючевыеСвойстваКонтрагентНаименованиеПолное+"</НаименованиеПолное>
| <ИНН>"+КлючевыеСвойстваКонтрагентИНН+"</ИНН>
| <КПП>"+КлючевыеСвойстваКонтрагентКПП+"</КПП>
| <ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>";
Если флДобавитьВложенныйБанковскийСчет = 1 Тогда
РезXML = РезXML + ДобавитьКлючевыеСвойстваБанковскийСчетКонтрагента("",ТекущийДокументСсылка)+"
|";
КонецЕсли;
//УИД, код, наименование страны в конфигурации приемнике
РезXML = РезXML + " <СтранаРегистрации>
| <Ссылка>621aa67c-734f-11e6-9fac-001517fd8aac</Ссылка>
| <Код>643</Код>
| <Наименование>РОССИЯ</Наименование>
| </СтранаРегистрации>
| </Контрагент>
|";
//РезXML = " <КонтрагентыСсылка>
//| <Ссылка>"+КлючевыеСвойстваКонтрагентСсылка+"</Ссылка>
//| <Наименование>"+КлючевыеСвойстваКонтрагентНаименование+"</Наименование>
//| <НаименованиеПолное>"+КлючевыеСвойстваКонтрагентНаименованиеПолное+"</НаименованиеПолное>
//| <ИНН>"+КлючевыеСвойстваКонтрагентИНН+"</ИНН>
//| <КПП>"+КлючевыеСвойстваКонтрагентКПП+"</КПП>
//| <ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>";
//Если флДобавитьВложенныйБанковскийСчет = 1 Тогда
// РезXML = РезXML + ДобавитьКлючевыеСвойстваБанковскийСчетКонтрагента("",ТекущийДокументСсылка)+"
// |";
//КонецЕсли;
// РезXML = РезXML + " <СтранаРегистрации>Российская Федерация</СтранаРегистрации>
//| </КонтрагентыСсылка>
//|";
Возврат РезXML;
КонецФункции
Функция ДобавитьКлючевыеСвойстваБанковскийСчетКонтрагента(БанковскийСчет="",ТекущийДокументСсылка)
Если БанковскийСчет="" Тогда
БанковскийСчет = ТекущийДокументСсылка.Контрагент.ОсновнойСчет;
КонецЕсли;
ОбщиеДанныеБанковскийСчетКонтрагентаСсылка= ПолучитьУникальныйИдентификатор(БанковскийСчет);
ОбщиеДанныеБанковскийСчетКонтрагентаНомерСчета= БанковскийСчет.НомерСчета;
Банк = БанковскийСчет.Банк;
КлючевыеСвойстваБанкКонтрагентаСсылка= ПолучитьУникальныйИдентификатор(Банк);
КлючевыеСвойстваБанкКонтрагентаБИК=СокрЛП(Банк.Код);
КлючевыеСвойстваБанкКонтрагентаКоррСчет=СокрЛП(Банк.КоррСчет);
КлючевыеСвойстваБанкКонтрагентаНаименование=СокрЛП(Банк.Наименование);
КлючевыеСвойстваБанкКонтрагентаСВИФТБИК="";
//3.<xs:element name="БанкДляРасчетов" type="tns:КлючевыеСвойстваБанк" minOccurs="0"/>
//ОбщиеДанныеБанковскийСчетКонтрагентаВладелец = "";
//РезXML = РезXML +"<БанковскийСчетОрганизации>ОбщиеДанныеБанковскийСчетОрганизации</БанковскийСчетОрганизации>
//|";
Возврат "
| <БанковскийСчетКонтрагента>
| <Ссылка>"+ОбщиеДанныеБанковскийСчетКонтрагентаСсылка+"</Ссылка>
| <НомерСчета>"+ОбщиеДанныеБанковскийСчетКонтрагентаНомерСчета+"</НомерСчета>
| <Банк>
| <Ссылка>"+КлючевыеСвойстваБанкКонтрагентаСсылка+"</Ссылка>
| <БИК>"+КлючевыеСвойстваБанкКонтрагентаБИК+"</БИК>
| <КоррСчет>"+КлючевыеСвойстваБанкКонтрагентаКоррСчет+"</КоррСчет>
| <Наименование>"+КлючевыеСвойстваБанкКонтрагентаНаименование+"</Наименование>
| </Банк>
| <Владелец>
|"+ДобавитьКлючевыеСвойстваКонтрагент(ТекущийДокументСсылка.Контрагент,ТекущийДокументСсылка)+"
| </Владелец>
| </БанковскийСчетКонтрагента>";
КонецФункции
Функция ДобавитьКлючевыеСвойстваКонтрагентРасшифровкаПлатежа(ТекущийДокументСсылка)
//из конфигурации приемника
РезXML =
" <Строка>
| <СтатьяДДС>
| <Ссылка>c95a4a77-734f-11e6-9fac-001517fd8aac</Ссылка>
| <КодВПрограмме>УТ-000005</КодВПрограмме>
| <Наименование>Поступление оплаты от клиента</Наименование>
| </СтатьяДДС>
| <Сумма>"+ТекущийДокументСсылка.Сумма+"</Сумма>
| <СуммаВзаиморасчетов>"+ТекущийДокументСсылка.Сумма+"</СуммаВзаиморасчетов>
| <ДанныеВзаиморасчетов>
| "+ДобавитьКлючевыеСвойстваВалюта()+"
| </ДанныеВзаиморасчетов>
| </Строка>";
Возврат РезXML;
КонецФункции
//*******************************************
Процедура ВыгрузитьСтрокиВыпискиБанкаВходящие()
//Документ.ПБДСРасчетыСКонтрагентами
//Цифрой 1 обозначены описания из формата EnterpriseData на сайте 1С
//Цифрой 2 обозначены Правила выгрузки из списка "Конвертация данных 3.0.5.3"
//Цифрой 3 обозначены записи структуры пакета XDTO
//Цифрой 4 обозначены результаты запроса в Конвертации данных 3 к пакету XDTO
//Цифрой 5 обозначен автоматический код сформированный алгритмом запросника
//на основе результата запроса по данному документу к пакету XDTO КД3
//Цифрой 6 в начале комментария обозначен список реквизитов базы источника из конфигурации конвертация данных 3
//Цифрой 7 в начале комментария обозначена структура вложенного объекта формата из конвертации данных 3
ДокСтрокаВыпискиПриход = СоздатьОбъект("Документ");
ДокСтрокаВыпискиПриход.НайтиПоНомеру("СбНС00000467",ТекущаяДата(),"СтрокаВыпискиПриход");
ПБДСРасчетыСКонтрагентами = СоздатьОбъект("Документ.СтрокаВыпискиПриход");
ПБДСРасчетыСКонтрагентами.НайтиДокумент(ДокСтрокаВыпискиПриход);
ТекущийДокументСсылка = ПБДСРасчетыСКонтрагентами;
ЗаголовокXML = ДобавитьЗаголовокXML(ТекущийДокументСсылка);
Сообщить(ЗаголовокXML);
//4.ОбластьФормата ПолеФормата Обяз ТипСвойстваСтрокой ТипОбщегоРеквизита
//4.КлючевыеСвойства КлючевыеСвойства Да КлючевыеСвойстваПБДСРасчетыСКонтрагентами Ключевые свойства
//4.КлючевыеСвойства Ссылка Нет ДокументСсылка.ПБДСРасчетыСКонтрагентами Ключевые свойства
//4.КлючевыеСвойства Дата Да dateTime Ключевые свойства
//4.КлючевыеСвойства Номер Да ТипНомерДокумента Ключевые свойства
//4.КлючевыеСвойства Организация Да КлючевыеСвойстваОрганизация Ключевые свойства
//4.ОбщиеДанные ДатаВыписки Да date Группа общих свойств
//4.ОбщиеДанные ОбщиеДанные Да ОбщиеСвойстваПБДС Группа общих свойств
//4.ОбщиеДанные Ответственный Нет КлючевыеСвойстваПользователь Группа общих свойств
//4.ОбщиеДанные ДатаВходящегоДокумента Нет date Группа общих свойств
//4.ОбщиеДанные НомерВходящегоДокумента Нет ТипНомерДокумента Группа общих свойств
//4.ОбщиеДанные ТипПлатежногоДокумента Нет ТипыПлатежныхДокументов Группа общих свойств
//4.ОбщиеДанные Валюта Да КлючевыеСвойстваВалюта Группа общих свойств
//4.ОбщиеДанные Сумма Да ТипСумма Группа общих свойств
//4.ОбщиеДанные Комментарий Нет string Группа общих свойств
//4.ОбщиеДанные БанковскийСчетОрганизации Да КлючевыеСвойстваБанковскийСчет Группа общих свойств
//7.Наименование Тип
//7.Банк КлючевыеСвойстваБанк
//7.БанкДляРасчетов КлючевыеСвойстваБанк
//7.Владелец КлючевыеСвойстваКонтрагент;КлючевыеСвойстваОрганизация;КлючевыеСвойстваФизическоеЛицо
//7.НомерСчета string (34)
//7.Ссылка СправочникСсылка.БанковскиеСчета
//4.ОбщиеДанные НазначениеПлатежа Нет string Группа общих свойств
//4.ОбщиеДанные Подразделение Нет КлючевыеСвойстваПодразделение Группа общих свойств
//4.ОбщиеДанные ДополнительныеРеквизиты Нет ДополнительныеРеквизиты Общая табличная часть
//4.ВидРасчетов ВидРасчетов Да ВидыРасчетовСКонтрагентами
//4.Контрагент Контрагент Нет КлючевыеСвойстваКонтрагент
//4.БанковскийСчетКонтрагента БанковскийСчетКонтрагента Нет КлючевыеСвойстваБанковскийСчет
//7.Наименование Тип
//7.Банк КлючевыеСвойстваБанк
//7.БанкДляРасчетов КлючевыеСвойстваБанк
//7.Владелец КлючевыеСвойстваКонтрагент;КлючевыеСвойстваОрганизация;КлючевыеСвойстваФизическоеЛицо
//7.НомерСчета string (34)
//7.Ссылка СправочникСсылка.БанковскиеСчета
//4.РасшифровкаПлатежа Заказ Нет КлючевыеСвойстваЗаказКлиента;КлючевыеСвойстваЗаказПоставщику Общая табличная часть
//4.РасшифровкаПлатежа Договор Нет КлючевыеСвойстваДоговор Группа общих свойств
//4.РасшифровкаПлатежа ВалютаВзаиморасчетов Нет КлючевыеСвойстваВалюта Группа общих свойств
//4.РасшифровкаПлатежа СтатьяДДС Нет КлючевыеСвойстваСтатьяДДС Общая табличная часть
//4.РасшифровкаПлатежа Сумма Да ТипСумма Общая табличная часть
//4.РасшифровкаПлатежа КурсВзаиморасчетов Нет ТипКурс Группа общих свойств
//4.РасшифровкаПлатежа СуммаВзаиморасчетов Нет ТипСумма Общая табличная часть
//4.РасшифровкаПлатежа КратностьВзаиморасчетов Нет ТипКратность Группа общих свойств
//4.РасшифровкаПлатежа СуммаНДС Нет ТипСумма Общая табличная часть
//4.РасшифровкаПлатежа РасчетыВУсловныхЕдиницах Нет boolean Группа общих свойств
//4.РасшифровкаПлатежа СчетУчетаРасчетовСКонтрагентом Нет string Группа общих свойств
//4.РасшифровкаПлатежа СтавкаНДС Нет СтавкиНДС Общая табличная часть
//4.РасшифровкаПлатежа РасшифровкаПлатежа Да РасшифровкаПлатежа Общая табличная часть
//4.РасшифровкаПлатежа ДанныеВзаиморасчетов Да ОбщиеСвойстваДанныеВзаиморасчетов Группа общих свойств
//4.РасшифровкаПлатежа СчетУчетаРасчетовПоАвансам Нет string Группа общих свойств
//4.РасшифровкаПлатежа ВидРасчетовРасширенный Нет ВидыРасчетовСПокупателямиПоставщиками;ВидыРасчетовПоКредитамИЗаймам Общая табличная часть
//4.РасшифровкаПлатежа СпособПогашенияЗадолженности Нет СпособыПогашенияЗадолженности Общая табличная часть
//4.РасшифровкаПлатежа ДокументРасчетов Нет
//Цифрой 4 обозначен результат запроса по данному документу к пакету XDTO КД3
//4.ОбластьФормата ПолеФормата Обяз ТипСвойстваСтрокой ТипОбщегоРеквизита
//4.КлючевыеСвойства КлючевыеСвойства Да КлючевыеСвойстваПБДСРасчетыСКонтрагентами Ключевые свойства
//4.КлючевыеСвойства Ссылка Нет ДокументСсылка.ПБДСРасчетыСКонтрагентами Ключевые свойства
//4.КлючевыеСвойства Дата Да dateTime Ключевые свойства
//4.КлючевыеСвойства Номер Да ТипНомерДокумента Ключевые свойства
КлючевыеСвойстваXMLСсылка = ПолучитьУникальныйИдентификатор(ТекущийДокументСсылка);
чч = 0; мм = 0; сс = 0;
ТекущийДокументСсылка.ПолучитьВремя(чч,мм,сс);
ГодДаты = СокрЛП(ДатаГод(ТекущийДокументСсылка.ДатаДок));
МесяцДаты = Формат(ДатаМесяц(ТекущийДокументСсылка.ДатаДок),"Ч(0)2");
ДеньДаты = Формат(ДатаЧисло(ТекущийДокументСсылка.ДатаДок),"Ч(0)2");
ТекДатаФорм = ГодДаты+"-"+МесяцДаты+"-"+ДеньДаты;
чч = 0; мм = 0; сс = 0;
ТекущееВремя(чч,мм,сс);
КлючевыеСвойстваXMLШтампДатаДок = ТекДатаФорм+"T"+Формат(чч,"Ч(0)2")+":"+Формат(мм,"Ч(0)2")+":"+Формат(сс,"Ч(0)2");
КлючевыеСвойстваXMLШтампНомерДок = ТекущийДокументСсылка.НомерДок;
КлючевыеСвойстваXML = "
| <КлючевыеСвойства>
| <Ссылка>"+КлючевыеСвойстваXMLСсылка+"</Ссылка>
| <Дата>"+КлючевыеСвойстваXMLШтампДатаДок+"</Дата>
| <Номер>"+КлючевыеСвойстваXMLШтампНомерДок+"</Номер>
|"+ДобавитьКлючевыеСвойстваОрганизация(0)+"
| </КлючевыеСвойства>";
Сообщить(КлючевыеСвойстваXML);
//4.ОбщиеДанные ДатаВыписки Да date Группа общих свойств
//4.ОбщиеДанные ОбщиеДанные Да ОбщиеСвойстваПБДС Группа общих свойств
//4.ОбщиеДанные Ответственный Нет КлючевыеСвойстваПользователь Группа общих свойств
//4.ОбщиеДанные ДатаВходящегоДокумента Нет date Группа общих свойств
//4.ОбщиеДанные НомерВходящегоДокумента Нет ТипНомерДокумента Группа общих свойств
//4.ОбщиеДанные ТипПлатежногоДокумента Нет ТипыПлатежныхДокументов Группа общих свойств
//4.ОбщиеДанные Валюта Да КлючевыеСвойстваВалюта Группа общих свойств
//4.ОбщиеДанные Сумма Да ТипСумма Группа общих свойств
//4.ОбщиеДанные Комментарий Нет string Группа общих свойств
//4.ОбщиеДанные БанковскийСчетОрганизации Да КлючевыеСвойстваБанковскийСчет Группа общих свойств
//4.ОбщиеДанные НазначениеПлатежа Нет string Группа общих свойств
//4.ОбщиеДанные Подразделение Нет КлючевыеСвойстваПодразделение Группа общих свойств
//5.ОбщиеДанные;ДатаВыписки;Не обяз.
ОбщиеДанныеДатаВыписки= СформироватьДату(ТекущийДокументСсылка.ДатаДок);
//5.ОбщиеДанные;Ответственный;Не обяз.
// ОбщиеДанныеОтветственный= ; заполняется ниже как в предыдущих документах
//5.ОбщиеДанные;ДатаВходящегоДокумента;Не обяз.
ОбщиеДанныеДатаВходящегоДокумента= СформироватьДату(ТекущийДокументСсылка.ДатаДок);
//5.ОбщиеДанные;НомерВходящегоДокумента;Не обяз.
ОбщиеДанныеНомерВходящегоДокумента= ТекущийДокументСсылка.НомерПлат;
//5.ОбщиеДанные;ТипПлатежногоДокумента;Не обяз.
ОбщиеДанныеТипПлатежногоДокумента= "ПлатежноеПоручение";
//5.ОбщиеДанные;Валюта;Не обяз.
//ОбщиеДанныеВалюта= ; взято из предыдущих документов
//5.ОбщиеДанные;Сумма;Не обяз.
ОбщиеДанныеСумма= ТекущийДокументСсылка.Сумма;
//5.ОбщиеДанные;Комментарий;Не обяз.
//3. <xs:element name="Комментарий" type="xs:string" minOccurs="0"/>
ОбщиеДанныеКомментарий= СокрЛП(ТекущийДокументСсылка.Комментарий); // в документе УС нет такого поля
РезXML = "";
РезXML = РезXML +"
| <ОбщиеДанные>
|";
//5.ОбщиеДанные;ДатаВыписки;Не обяз.
РезXML = РезXML +" <ДатаВыписки>"+ОбщиеДанныеДатаВыписки+"</ДатаВыписки>
|"+ДобавитьКлючевыеСвойстваПользователь("",ТекущийДокументСсылка)+"
|";
//5.ОбщиеДанные;ДатаВходящегоДокумента;Не обяз.
РезXML = РезXML +" <ДатаВходящегоДокумента>"+ОбщиеДанныеДатаВходящегоДокумента+"</ДатаВходящегоДокумента>
|";
//5.ОбщиеДанные;НомерВходящегоДокумента;Не обяз.
РезXML = РезXML +" <НомерВходящегоДокумента>"+ОбщиеДанныеНомерВходящегоДокумента+"</НомерВходящегоДокумента>
|";
//5.ОбщиеДанные;ТипПлатежногоДокумента;Не обяз.
РезXML = РезXML +" <ТипПлатежногоДокумента>"+ОбщиеДанныеТипПлатежногоДокумента+"</ТипПлатежногоДокумента>
|"+ДобавитьКлючевыеСвойстваВалюта()+"
|";
//5.ОбщиеДанные;Сумма;Не обяз.
РезXML = РезXML +" <Сумма>"+ОбщиеДанныеСумма+"</Сумма>
|";
//5.ОбщиеДанные;Комментарий;Не обяз.
РезXML = РезXML +" <Комментарий>"+ОбщиеДанныеКомментарий+"</Комментарий>
|"+ДобавитьКлючевыеСвойстваБанковскийСчетОрганизации("",ТекущийДокументСсылка)+"
|";
//5.ОбщиеДанные;НазначениеПлатежа;Не обяз.
//3. <xs:element name="НазначениеПлатежа" type="xs:string" minOccurs="0"/>
ОбщиеДанныеНазначениеПлатежа= СокрЛП(ТекущийДокументСсылка.Комментарий);
//5.ОбщиеДанные;Подразделение;Не обяз.
//3. <xs:element name="Подразделение" type="tns:КлючевыеСвойстваПодразделение" minOccurs="0"/>
ДокОснование = ТекущийДокументСсылка.ДокОснование;
Если СокрЛП(ДокОснование)>"" Тогда
Подразделение = ДокОснование.Склад;
Иначе
Подразделение = "";
КонецЕсли;
Если СокрЛП(Подразделение)="" Тогда
СпрСклад = СоздатьОбъект("Справочник.Склады");
СпрСклад.НайтиПоКоду("2",0);
Подразделение = СпрСклад.ТекущийЭлемент();
КонецЕсли;
Если Найти(нрег(Подразделение.Наименование),"склад")>0 Тогда
КлючевыеСвойстваПодразделениеНаименование = СокрЛП(Подразделение.Наименование);
Иначе
КлючевыеСвойстваПодразделениеНаименование = "Склад "+СокрЛП(Подразделение.Наименование);
КонецЕсли;
КлючевыеСвойстваПодразделениеСсылка = ПолучитьУникальныйИдентификатор(Подразделение);
//5.ОбщиеДанные;НазначениеПлатежа;Не обяз.
РезXML = РезXML +" <НазначениеПлатежа>"+ОбщиеДанныеНазначениеПлатежа+"</НазначениеПлатежа>
|";
//5.ОбщиеДанные;Подразделение;Не обяз.
РезXML = РезXML +
" <Подразделение>
| <Ссылка>"+КлючевыеСвойстваПодразделениеСсылка+"</Ссылка>
| <Наименование>"+КлючевыеСвойстваПодразделениеНаименование+"</Наименование>
| </Подразделение>
| </ОбщиеДанные>
|";
//3.<xs:simpleType name="ВидыРасчетовСКонтрагентами">
//3. <xs:restriction base="xs:string">
//3. <xs:enumeration value="СПоставщиком"/>
//3. <xs:enumeration value="СПокупателем"/>
//3. <xs:enumeration value="КредитыИЗаймы"/>
//3. <xs:enumeration value="Прочее"/>
//3. </xs:restriction>
КлючевыеСвойстваКонтрагентРасшифровкаПлатежа = ДобавитьКлючевыеСвойстваКонтрагентРасшифровкаПлатежа(ТекущийДокументСсылка);
РезXML = РезXML +" <ВидРасчетов>СПокупателем</ВидРасчетов>
|"+ДобавитьКлючевыеСвойстваКонтрагент("",ТекущийДокументСсылка)+"
| <РасшифровкаПлатежа>
|"+КлючевыеСвойстваКонтрагентРасшифровкаПлатежа+"
| </РасшифровкаПлатежа>
| </Документ.ПБДСРасчетыСКонтрагентами>
| </Body>
|</Message>";
Сообщить(РезXML);
КонецПроцедуры
Все поля заполнены, всё загружается в 1С 8.3
Написали программу, формируем файл.
Файл загружен в конфигурацию-приемник.
<?xml version="1.0"?>
<Message xmlns:msg="http://www.1c.ru/SSL/Exchange/Message" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<msg:Header>
<msg:Format>http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5</msg:Format>
<msg:CreationDate>2018-03-04T13:06:51</msg:CreationDate>
<msg:AvailableVersion>1.5</msg:AvailableVersion>
</msg:Header>
<Body xmlns="http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5">
<Документ.ПБДСРасчетыСКонтрагентами>
<КлючевыеСвойства>
<Ссылка>4f325920-2020-2020-2020-202030202020</Ссылка>
<Дата>2018-02-22T13:06:51</Дата>
<Номер>СбНС00000467</Номер>
<Организация>
<Ссылка>7d84c015-df1a-11e7-80d4-b0cb018bb13a</Ссылка>
<Наименование>Общество с ограниченной ответственностью «Сигма»</Наименование>
<НаименованиеСокращенное>ООО «Сигма»</НаименованиеСокращенное>
<НаименованиеПолное>Общество с ограниченной ответственностью «Сигма»</НаименованиеПолное>
<ИНН>3662238642</ИНН>
<КПП>366201001</КПП>
<ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
</Организация>
</КлючевыеСвойства>
<ОбщиеДанные>
<ДатаВыписки>2018-02-22</ДатаВыписки>
<Ответственный>
<Ссылка>42003020-2020-2020-2020-353139c1c120</Ссылка>
<Наименование>Зеленская</Наименование>
<ФизическоеЛицо>
<Ссылка>42050320-2020-2020-3130-303336c1c120</Ссылка>
<ФИО>Зеленская Татьяна Олеговна</ФИО>
<Фамилия>Зеленская</Фамилия>
<Имя>Татьяна</Имя>
<Отчество>Олеговна</Отчество>
<ДатаРождения>1966-06-28</ДатаРождения>
<КодВПрограмме>Бб002006</КодВПрограмме>
<ИНН>263204236331</ИНН>
</ФизическоеЛицо>
</Ответственный>
<ДатаВходящегоДокумента>2018-02-22</ДатаВходящегоДокумента>
<НомерВходящегоДокумента>496</НомерВходящегоДокумента>
<ТипПлатежногоДокумента>ПлатежноеПоручение</ТипПлатежногоДокумента>
<Валюта>
<Ссылка>af5ac665-734f-11e6-9fac-001517fd8aac</Ссылка>
<Код>643</Код>
<Наименование>Российский рубль</Наименование>
</Валюта>
<Сумма>3123719.69</Сумма>
<Комментарий>Оплата за товар</Комментарий>
<БанковскийСчетОрганизации>
<Ссылка>14786e8d-fdc3-11e7-80dd-e11ff638f0cc</Ссылка>
<НомерСчета>40702810713000017534</НомерСчета>
<Банк>
<Ссылка>14722e08-7350-11e6-9fac-001517fd8aac</Ссылка>
<БИК>042007681</БИК>
<КоррСчет>30101810600000000681</КоррСчет>
<Наименование>ЦЕНТРАЛЬНО-ЧЕРНОЗЕМНЫЙ БАНК ПАО СБЕРБАНК</Наименование>
</Банк>
<Владелец>
<ОрганизацииСсылка>
<Ссылка>7d84c015-df1a-11e7-80d4-b0cb018bb13a</Ссылка>
<Наименование>Общество с ограниченной ответственностью «Сигма»</Наименование>
<НаименованиеСокращенное>ООО «Сигма»</НаименованиеСокращенное>
<НаименованиеПолное>Общество с ограниченной ответственностью «Сигма»</НаименованиеПолное>
<ИНН>3662238642</ИНН>
<КПП>366201001</КПП>
<ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
</ОрганизацииСсылка>
</Владелец>
</БанковскийСчетОрганизации>
<НазначениеПлатежа>Оплата за товар</НазначениеПлатежа>
<Подразделение>
<Ссылка>42005520-2020-2020-2020-323133cac120</Ссылка>
<Наименование>ГЛАВНЫЙ СКЛАД ФИРМЫ Новосибирская</Наименование>
</Подразделение>
</ОбщиеДанные>
<ВидРасчетов>СПокупателем</ВидРасчетов>
<Контрагент>
<Ссылка>42017220-2020-2020-3132-313033cac120</Ссылка>
<Наименование>Смирных Татьяна Владимировна ИП</Наименование>
<НаименованиеПолное>Индивидуальный предприниматель Смирных Татьяна Владимировна</НаименованиеПолное>
<ИНН>3665165776</ИНН>
<КПП>3 </КПП>
<ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо> <СтранаРегистрации>
<Ссылка>621aa67c-734f-11e6-9fac-001517fd8aac</Ссылка>
<Код>643</Код>
<Наименование>РОССИЯ</Наименование>
</СтранаРегистрации>
</Контрагент>
<РасшифровкаПлатежа>
<Строка>
<СтатьяДДС>
<Ссылка>c95a4a77-734f-11e6-9fac-001517fd8aac</Ссылка>
<КодВПрограмме>УТ-000005</КодВПрограмме>
<Наименование>Поступление оплаты от клиента</Наименование>
</СтатьяДДС>
<Сумма>3123719.69</Сумма>
<СуммаВзаиморасчетов>3123719.69</СуммаВзаиморасчетов>
<ДанныеВзаиморасчетов>
<Валюта>
<Ссылка>af5ac665-734f-11e6-9fac-001517fd8aac</Ссылка>
<Код>643</Код>
<Наименование>Российский рубль</Наименование>
</Валюта>
</ДанныеВзаиморасчетов>
</Строка>
</РасшифровкаПлатежа>
</Документ.ПБДСРасчетыСКонтрагентами>
</Body>
</Message>
Теперь в общем понятно как действовать. На следующий документ переработаю типизацию комментариев, впредь номером буду обозначать — уровень сущности внутри структуры XDTO. Попробую прикрутить парсер XML.
Разработка переноса из 1С 7.7 Строки выписки банка (расход) в EnterpriseData
Добавил использование парсера "AddIn.XMLParser" из "v7plus.dll". Особенность моего подхода в том, что можно использовать в парсере поля XML, созданные вручную в виде сложного текстового фрагмента без использования парсера и оформленные в виде блоков текста (на тот случай, когда часть элементов XML просто заимствована из современной учетной системы, в которую мы переносим данные). Если требуется добавить в XML самописный текстовый узел используем методы ADODB.Stream. С учетом заимствования ранее выгруженных узлов и применения парсера теперь подготовка тела XML занимает реально короткое время. Но подход конечно нужно продолжать унифицировать для применения на других объектах.
За пример работы с парсером для выгрузки XML большое спасибо Денису Новоселову за его open source проект План обмена в формате "EnterpriseData" для 1С 7.7.
//*****************************************************************************
Процедура ВложитьСтруктуруВУзелХМЛ(пУзел,пСтруктура)
Для Номер = 1 По пСтруктура.РазмерСписка() Цикл
лИмяЭлемента = "";
лЭлементСписка = пСтруктура.ПолучитьЗначение(Номер,лИмяЭлемента);
Если ТипЗначенияСтр(лЭлементСписка) = "СписокЗначений" Тогда
лУзел = пУзел.СоздатьПодчиненныйЭлемент(лИмяЭлемента);
ВложитьСтруктуруВУзелХМЛ(лУзел,лЭлементСписка);
ИначеЕсли ПустоеЗначение(лЭлементСписка) = 0 Тогда
Если Строка(лЭлементСписка)=лЭлементСписка Тогда
лЭлементСписка = СтрЗаменить(СтрЗаменить(лЭлементСписка, "<"+лИмяЭлемента+">", ""), "</"+лИмяЭлемента+">", "");
КонецЕсли;
лУзел = пУзел.СоздатьПодчиненныйЭлемент(лИмяЭлемента);
лУзел.Значение = лЭлементСписка;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция ВыгрузитьДокументОснованиеПлатежноеПоручение(ТекущийДокументСсылка);
лПлатежноеПоручениеСсылка = ПолучитьУникальныйИдентификатор(ТекущийДокументСсылка.ДокОснование);
лПлатежноеПоручениеДата = СформироватьДату(ТекущийДокументСсылка.ДокОснование);
лПлатежноеПоручениеНомер = ТекущийДокументСсылка.ДокОснование.НомерДок;
ПлатежноеПоручениеОрганизация = ДобавитьКлючевыеСвойстваОрганизация(0);
СтруктураПП = СоздатьОбъект("СписокЗначений");
СтруктураПП.ДобавитьЗначение(лПлатежноеПоручениеСсылка,"Ссылка");
СтруктураПП.ДобавитьЗначение(лПлатежноеПоручениеДата,"Дата");
СтруктураПП.ДобавитьЗначение(лПлатежноеПоручениеНомер,"Номер");
СтруктураПП.ДобавитьЗначение(ПлатежноеПоручениеОрганизация,"Организация");
Возврат СтруктураПП;
КонецФункции
Процедура Преобразовать(Имя)
Байт=-2;//построчная обработка
СтримВход=СоздатьОбъект("ADODB.Stream");
СтримВход.Type=2;
СтримВход.charset="utf-8";
СтримВход.Open();
СтримВход.LoadFromFile(Имя);
СтримВыход=СоздатьОбъект("ADODB.Stream");
СтримВыход.Type=2;
СтримВыход.charset="utf-8";
СтримВыход.LineSeparator=-1;
СтримВыход.Open();
Всего=СтримВход.size;
Пока СтримВход.EOS=0 Цикл
СтрXML = СтримВход.ReadText(Байт);
СтрXML = СтрЗаменить(СтрXML, "<","<");
СтрXML = СтрЗаменить(СтрXML, ">",">");
СтримВыход.WriteText(СтрXML,?(Байт=-2,1,0));
Состояние("" + Формат(100 * СтримВход.position/Всего,"Ч(0)5.2")+"%");
КонецЦикла;
СтримВыход.SaveToFile(Имя,2);//+".utf8"
КонецПроцедуры
Процедура ВыгрузитьСтрокиВыпискиБанкаИсходящие()
ИсходящийФайл = "pp4.xml";
ХмлДокумент = ПарсерXML.СоздатьДокумент();
ХмлДокумент.Кодировка = "UTF-8";
пХмлДокумент = ХмлДокумент;
лСписокУзлов = СоздатьОбъект("СписокЗначений");
ХмлУзел = "";
ДокСтрокаВыпискиРасход = СоздатьОбъект("Документ");
ДокСтрокаВыпискиРасход.НайтиПоНомеру("СбСбНС000389",ТекущаяДата(),"СтрокаВыпискиРасход");
СБДСРасчетыСКонтрагентами = СоздатьОбъект("Документ.СтрокаВыпискиРасход");
СБДСРасчетыСКонтрагентами.НайтиДокумент(ДокСтрокаВыпискиРасход);
ТекущийДокументСсылка = СБДСРасчетыСКонтрагентами;
лДатаДок = СформироватьДатуВремя(ТекущийДокументСсылка);
лНомерДок = ТекущийДокументСсылка.НомерДок;
лСсылкаОрганизации = ПолучитьУникальныйИдентификатор(ТекущийДокументСсылка.Фирма);
лНаименованиеОрганизации = Строка(ТекущийДокументСсылка.Фирма);
Если ПустаяСтрока(лНаименованиеОрганизации) = 1 Тогда
лНаименованиеОрганизации = "НеИзвестно";
КонецЕсли;
лДатаВыписки = СформироватьДату(ТекущийДокументСсылка);
ТекстОтветственный = ДобавитьКлючевыеСвойстваПользователь("", ТекущийДокументСсылка);
лТипПлатежногоДокумента = "ПлатежноеПоручение";
ТекстВалюта = ДобавитьКлючевыеСвойстваВалюта();
лСумма = ТекущийДокументСсылка.Сумма;
лСуммаДокумента = ТекущийДокументСсылка.Сумма;
ТекстБанковскийСчетКонтрагента = ДобавитьКлючевыеСвойстваБанковскийСчетКонтрагента("",ТекущийДокументСсылка);
ТекстБанковскийСчетОрганизации = ДобавитьКлючевыеСвойстваБанковскийСчетОрганизации("",ТекущийДокументСсылка);
ПлатежноеПоручение = ВыгрузитьДокументОснованиеПлатежноеПоручение(ТекущийДокументСсылка);
лСсылкаКонтрагент = ПолучитьУникальныйИдентификатор(ТекущийДокументСсылка.Контрагент);
лНаименованиеКонтрагента = Строка(ТекущийДокументСсылка.Контрагент);
Если ПустаяСтрока(лНаименованиеКонтрагента) = 1 Тогда
лНаименованиеКонтрагента = "НеИзвестно";
КонецЕсли;
лВидРасчета = "СПоставщиком";
// -------------------
ХмлНовыйУзел = пХмлДокумент.СоздатьУзел("element","Документ.СБДСРасчетыСКонтрагентами","http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5");
лОрганизация = СоздатьОбъект("СписокЗначений");
лОрганизация.ДобавитьЗначение(лСсылкаОрганизации,"Ссылка");
лОрганизация.ДобавитьЗначение(лНаименованиеОрганизации,"Наименование");
лОрганизация.ДобавитьЗначение("ЮридическоеЛицо","ЮридическоеФизическоеЛицо");
лКонтрагент = СоздатьОбъект("СписокЗначений");
лКонтрагент.ДобавитьЗначение(лСсылкаКонтрагент,"Ссылка");
лКонтрагент.ДобавитьЗначение(лНаименованиеКонтрагента,"Наименование");
лКонтрагент.ДобавитьЗначение("ЮридическоеЛицо","ЮридическоеФизическоеЛицо");
лСтруктураКлючевыеСвойства = СоздатьОбъект("СписокЗначений");
лСтруктураКлючевыеСвойства.ДобавитьЗначение(ПолучитьУникальныйИдентификатор(ТекущийДокументСсылка),"Ссылка");
лСтруктураКлючевыеСвойства.ДобавитьЗначение(лДатаДок,"Дата");
лСтруктураКлючевыеСвойства.ДобавитьЗначение(лНомерДок,"Номер");
лСтруктураКлючевыеСвойства.ДобавитьЗначение(лОрганизация,"Организация");
лСтруктураОбщиеДанные = СоздатьОбъект("СписокЗначений");
лСтруктураОбщиеДанные.ДобавитьЗначение(лДатаВыписки,"ДатаВыписки");
лСтруктураОбщиеДанные.ДобавитьЗначение(ТекстОтветственный,"Ответственный");
лСтруктураОбщиеДанные.ДобавитьЗначение("ПлатежноеПоручение","ТипПлатежногоДокумента");
лСтруктураОбщиеДанные.ДобавитьЗначение(ТекстВалюта,"Валюта");
лСтруктураОбщиеДанные.ДобавитьЗначение(лСуммаДокумента,"Сумма");
лСтруктураОбщиеДанные.ДобавитьЗначение(ТекстБанковскийСчетКонтрагента,"БанковскийСчет");
лСтруктураОбщиеДанные.ДобавитьЗначение(ТекстБанковскийСчетОрганизации,"БанковскийСчетОрганизации");
лСтруктураОбщиеДанные.ДобавитьЗначение(ПлатежноеПоручение,"ПлатежноеПоручение");
лСтруктура = СоздатьОбъект("СписокЗначений");
лСтруктура.ДобавитьЗначение(лСтруктураКлючевыеСвойства,"КлючевыеСвойства");
лСтруктура.ДобавитьЗначение(лСтруктураОбщиеДанные,"ОбщиеДанные");
лСтруктура.ДобавитьЗначение(лКонтрагент,"Контрагент");
лСтруктура.ДобавитьЗначение(лВидРасчета,"ВидРасчетов");
РасшифровкаПлатежа = ДобавитьКлючевыеСвойстваСБДСРасшифровкаПлатежа(ТекущийДокументСсылка);
лСтруктура.ДобавитьЗначение(РасшифровкаПлатежа,"РасшифровкаПлатежа");
ВложитьСтруктуруВУзелХМЛ(ХмлНовыйУзел,лСтруктура);
лСписокУзлов.ДобавитьЗначение(ХмлНовыйУзел);
лКоличествоОбъектовКВыгрузке = 1;
УпаковатьВКонтейнер(ХмлДокумент,лСписокУзлов);
ХмлДокумент.Записать(ИсходящийФайл);
Преобразовать(ИсходящийФайл);
Сообщить("Выгружено");
КонецПроцедуры
Сформирован файл, успешно загруженный в современную конфигурацию.
<?xml version="1.0" encoding="UTF-8"?>
<Message xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:msg="http://www.1c.ru/SSL/Exchange/Message" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<msg:Header>
<msg:Format>http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5</msg:Format>
<msg:CreationDate>2018-03-05T14:56:27</msg:CreationDate>
<msg:AvailableVersion>1.5</msg:AvailableVersion>
</msg:Header>
<Body xmlns="http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.5">
<Документ.СБДСРасчетыСКонтрагентами>
<КлючевыеСвойства>
<Ссылка>4f327420-2020-2020-2020-202030202020</Ссылка>
<Дата>2018-02-22T22:46:20</Дата>
<Номер>СбСбНС000389</Номер>
<Организация>
<Ссылка>42401420-2020-2020-2020-203131d6c120</Ссылка>
<Наименование>ООО "СИГМА"</Наименование>
<ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
</Организация>
</КлючевыеСвойства>
<ОбщиеДанные>
<ДатаВыписки>2018-02-22</ДатаВыписки>
<Ответственный>
<Ссылка>42003020-2020-2020-2020-353139c1c120</Ссылка>
<Наименование>Зеленская</Наименование>
<ФизическоеЛицо>
<Ссылка>42050320-2020-2020-3130-303336c1c120</Ссылка>
<ФИО>Зеленская Татьяна Олеговна</ФИО>
<Фамилия>Зеленская</Фамилия>
<Имя>Татьяна</Имя>
<Отчество>Олеговна</Отчество>
<ДатаРождения>1966-06-28</ДатаРождения>
<КодВПрограмме>Бб002006</КодВПрограмме>
<ИНН>263204236331</ИНН>
</ФизическоеЛицо>
</Ответственный>
<ТипПлатежногоДокумента>ПлатежноеПоручение</ТипПлатежногоДокумента>
<Валюта>
<Ссылка>af5ac665-734f-11e6-9fac-001517fd8aac</Ссылка>
<Код>643</Код>
<Наименование>Российский рубль</Наименование>
</Валюта>
<Сумма>5467101.63</Сумма>
<БанковскийСчет>
<Ссылка>42171020-2020-2020-3130-383335c1c120</Ссылка>
<НомерСчета>40702810200000008612</НомерСчета>
<Банк>
<Ссылка>42016320-2020-2020-3136-393037d6c120</Ссылка>
<БИК>044030852</БИК>
<КоррСчет>30101810000000000852</КоррСчет>
<Наименование>Б АО БАНК "ПСКБ"</Наименование>
</Банк>
<Владелец>
<КонтрагентыСсылка>
<Ссылка>42017220-2020-2020-3132-313537c1c120</Ссылка>
<Наименование>ЭРА ЭЙЧ ПИ СИ ДИСТРИБЬЮШН ООО</Наименование>
<НаименованиеПолное>ООО "ЭРА Эйч Пи Си Дистрибьюшн"</НаименованиеПолное>
<ИНН>7810007663</ИНН>
<КПП>532101001</КПП>
<ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
<СтранаРегистрации>
<Ссылка>621aa67c-734f-11e6-9fac-001517fd8aac</Ссылка>
<Код>643</Код>
<Наименование>РОССИЯ</Наименование>
</СтранаРегистрации>
</КонтрагентыСсылка>
</Владелец>
</БанковскийСчет>
<БанковскийСчетОрганизации>
<Ссылка>14786e8d-fdc3-11e7-80dd-e11ff638f0cc</Ссылка>
<НомерСчета>40702810713000017534</НомерСчета>
<Банк>
<Ссылка>14722e08-7350-11e6-9fac-001517fd8aac</Ссылка>
<БИК>042007681</БИК>
<КоррСчет>30101810600000000681</КоррСчет>
<Наименование>ЦЕНТРАЛЬНО-ЧЕРНОЗЕМНЫЙ БАНК ПАО СБЕРБАНК</Наименование>
</Банк>
<Владелец>
<ОрганизацииСсылка>
<Ссылка>7d84c015-df1a-11e7-80d4-b0cb018bb13a</Ссылка>
<Наименование>Общество с ограниченной ответственностью «Сигма»</Наименование>
<НаименованиеСокращенное>ООО «Сигма»</НаименованиеСокращенное>
<НаименованиеПолное>Общество с ограниченной ответственностью «Сигма»</НаименованиеПолное>
<ИНН>3662238642</ИНН>
<КПП>366201001</КПП>
<ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
</ОрганизацииСсылка>
</Владелец>
</БанковскийСчетОрганизации>
<ПлатежноеПоручение>
<Ссылка>4f173120-2020-3731-3434-333232d1e120</Ссылка>
<Дата>2018-02-22</Дата>
<Номер>531</Номер>
<Организация>
<Ссылка>7d84c015-df1a-11e7-80d4-b0cb018bb13a</Ссылка>
<Наименование>Общество с ограниченной ответственностью «Сигма»</Наименование>
<НаименованиеСокращенное>ООО «Сигма»</НаименованиеСокращенное>
<НаименованиеПолное>Общество с ограниченной ответственностью «Сигма»</НаименованиеПолное>
<ИНН>3662238642</ИНН>
<КПП>366201001</КПП>
<ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
</Организация>
</ПлатежноеПоручение>
<ВидРасчета>СПоставщиком</ВидРасчета>
<Контрагент>
<Ссылка>42017220-2020-2020-3132-313537c1c120</Ссылка>
<Наименование>ЭРА ЭЙЧ ПИ СИ ДИСТРИБЬЮШН ООО</Наименование>
<ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
</Контрагент>
<РасшифровкаПлатежа>
<Строка>
<СтатьяДДС>
<Ссылка>c95a4a71-734f-11e6-9fac-001517fd8aac</Ссылка>
<КодВПрограмме>УТ-000006</КодВПрограмме>
<Наименование>Оплата поставщику</Наименование>
</СтатьяДДС>
<Сумма>5467101.63</Сумма>
<СуммаВзаиморасчетов>5467101.63</СуммаВзаиморасчетов>
<ДанныеВзаиморасчетов>
<Валюта>
<Ссылка>af5ac665-734f-11e6-9fac-001517fd8aac</Ссылка>
<Код>643</Код>
<Наименование>Российский рубль</Наименование>
</Валюта>
</ДанныеВзаиморасчетов>
</Строка>
</РасшифровкаПлатежа>
</ОбщиеДанные>
</Документ.СБДСРасчетыСКонтрагентами>
</Body>
</Message>
Показанный подход суммируюет простоту применения парсера и удобство заимствования текстовых фрагментов XML из выгрузки конфигурации - приемника.