Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 23:36

Выгрузка документа в xml с использованием фабрики XDTO

Автор nikivr, 24 июн 2015, 09:52

0 Пользователей и 1 гость просматривают эту тему.

nikivr

Добрый день, уважаемые!

Я начинающий программист 1С
Руководитель поставила задачу, выгрузить документ в xml для отправки в налоговую
Я решил воспользоваться фабрикой XDTO для этого дела, т.к. вычитал, что это быстрее и проще)
И все было бы хорошо, если не одно НО
Во время выгрузки в файл из объекта XDTO элементы расставляются в нужном порядке, в соответствии со схемой xsd, которую я подгружаю
А вот атрибуты этих элементов упорядочиваются автоматом по алфавиту, что не нравится мне и руководителю, т.к. читать и проверять файл тяжело

Подскажите пожалуйста, возможно ли задать порядок атрибутам при получении объекта XDTO и если да, то как это можно сделать?

Rasty

Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

nikivr

Цитата: Rasty от 24 июн 2015, 10:33
Вот тут, очень подробно описано

Вот именно, что эти статьи на инфостарте я изучал, прежде чем приступить к реализации
Добавлено: 24 июн 2015, 16:51


Функция ВыгрузкаXML(Ссылка) Экспорт

Отказ = Ложь;
Заголовок = "";

ИмяФайла = ПолучитьИмяВременногоФайла("xsd");
ИмяФайлаСхемы = "ON_ZVLRPOK_2_430_14_05_07_01.xsd";

Макет = ПолучитьМакет("Схема");
Макет.Записать(ИмяФайла);


Фабрика = СоздатьФабрикуXDTO(ИмяФайла);
ПакетXDTO = Фабрика.Пакеты.Получить(ИмяФайлаСхемы);

ДопФайлОбъект    = ПолучитьОбъектXDTO(Фабрика, ПакетXDTO, "Файл");

ДопФайлОбъект.ВерсФорм      = "5.07";
ДопФайлОбъект.ТипИнф = "ЭСНДСТСНП";
ДопФайлОбъект.ВерсПрог = Строка(РегламентированнаяОтчетность.СформироватьВерсПрог());
ДопФайлОбъект.КодНО = "7810"; //Код налогового органа получателя (Типовой элемент <СОНОТип> Код по классификатору СОНО)
//ДопФайлОбъект.ДатаФормирования  = РабочаяДата;
//ДопФайлОбъект.ИдДопФайла        = Строка(Новый УникальныйИдентификатор);
//ДопФайлОбъект.ИдФайла           = Строка(Новый УникальныйИдентификатор);

ЗапросШапка = Новый Запрос;

ЗапросШапка.УстановитьПараметр("Ссылка", Ссылка);

ЗапросШапка.Текст =
"ВЫБРАТЬ
| Док.Ссылка,
| Док.ПометкаУдаления,
| Док.Номер,
| Док.Дата,
| Док.ДатаПоступления,
| Док.Проведен,
| Док.Организация,
| Док.Контрагент,
| Док.Контрагент.ЮрФизЛицо КАК ЮрФизЛицо,
| Док.Контрагент.НаименованиеПолное КАК НаименованиеКонтрагента,
| Док.ДоговорКонтрагента,
| Док.ВалютаДокумента,     
| Док.Ответственный,
| Док.Комментарий,
| Док.РучнаяКорректировка,
| Док.СуммаДокумента,
| Док.СтруктураРеквизитовВыгрузки,
| Док.УдалитьПодразделениеОрганизации,
| Док.СуммаВключаетНДС,
| Док.Таможня,
| Док.ДоговорКонтрагентаРегл,
| Док.НДСПодтвержден,
| Док.Склад,
| Док.ВидЦенности,
| Док.КурсДокумента,
| Док.Представление,
| Док.МоментВремени
|ИЗ
| Документ.ЗаявлениеОВвозеТоваров КАК Док
|ГДЕ
| Док.Ссылка = &Ссылка";

Результат = ЗапросШапка.Выполнить();

Если Результат.Пустой() Тогда
ОбщегоНазначения.СообщитьОбОшибке("Документ не записан. Выгрузка прервана!");

Возврат Неопределено;
КонецЕсли;


ВыборкаНоменклатура = Результат.Выгрузить()[0];

// Укажем, что надо проверить:
СтруктураОбязательныхПолей = Новый Структура("Организация, Контрагент, ДоговорКонтрагента, ДоговорКонтрагентаРегл, ДатаПоступления");

// Теперь вызовем общую процедуру проверки.
ОбщегоНазначения.ПроверитьЗаполнениеШапкиДокумента(Ссылка, СтруктураОбязательныхПолей, Отказ, Заголовок);

Если Отказ Тогда
//ОбщегоНазначения.СообщитьОбОшибке("Проверьте заполнение обязательных реквезитов!");
//Предупреждение("Операция не выполнена!");
ВызватьИсключение "Операция не выполнена! Проверьте заполнение обязательных реквезитов!";
Возврат Неопределено;
КонецЕсли;

ДанныеОбъектXDTO = ПолучитьОбъектXDTO(Фабрика, ДопФайлОбъект.Тип(), "Документ");

ДанныеОбъектXDTO.КНД = "1110017"; //Типовой элемент <КНДТип>. Принимает значение: 1110017. Код по классификатору КНД.

ДанныеОбъектXDTO.ДатаДок = Формат(ВыборкаНоменклатура.ДатаПоступления, "ДФ=dd.MM.yyyy"); //ДД.ММ.ГГГГ!!!!!!!!!!!!!!!!!

СвОтпрОбъектXDTO = ПолучитьОбъектXDTO(Фабрика, ДанныеОбъектXDTO.Тип(), "СвОтпр");

ОтпрЮЛОбъектXDTO = ПолучитьОбъектXDTO(Фабрика, СвОтпрОбъектXDTO.Тип(), "ОтпрЮЛ");

ОтпрЮЛОбъектXDTO.НаимОрг = Строка(ВыборкаНоменклатура.Организация.НаименованиеПолное);
ОтпрЮЛОбъектXDTO.ИННЮЛ   = Строка(ВыборкаНоменклатура.Организация.ИНН);
ОтпрЮЛОбъектXDTO.КПП     = Строка(ВыборкаНоменклатура.Организация.КПП);

СвОтпрОбъектXDTO.ОтпрЮЛ = ОтпрЮЛОбъектXDTO;

ДанныеОбъектXDTO.СвОтпр = СвОтпрОбъектXDTO;

ПодписантОбъектXDTO = ПолучитьОбъектXDTO(Фабрика, ДанныеОбъектXDTO.Тип(), "Подписант");

ПодписантОбъектXDTO.ПрПодп = "2"; //Принимает значение: 1 | 2 | 3, где:
//1 - индивидуальный предприниматель;
//2 - руководитель организации;
//3 - уполномоченный представитель

//ПодписантОбъектXDTO.ИННФЛ = "0"; //Необязательно

ФИООбъектXDTO = ПолучитьОбъектXDTO(Фабрика, ПодписантОбъектXDTO.Тип(), "ФИО");

Должность = Справочники.ДолжностиОрганизаций.НайтиПоКоду("000000001");
ФИО = ПоискДолжностногоЛица(Должность, ВыборкаНоменклатура.Дата);

ФИООбъектXDTO.Фамилия = ФИО.Фамилия;   
ФИООбъектXDTO.Имя = ФИО.Имя;   
ФИООбъектXDTO.Отчество = ФИО.Отчество;   

ПодписантОбъектXDTO.ФИО = ФИООбъектXDTO;

ДанныеОбъектXDTO.Подписант = ПодписантОбъектXDTO;

/////////////////////////////////////////////////////////////////////////////////////////////////////

ЗапросТЧ = Новый Запрос;
ЗапросТЧ.УстановитьПараметр("Ссылка", Ссылка);
ЗапросТЧ.Текст =
"ВЫБРАТЬ
| ДокТЧ.Ссылка,
| ДокТЧ.НомерСтроки,
| ДокТЧ.Номенклатура,
| ДокТЧ.КодТНВЭД,
| ДокТЧ.ЕдиницаИзмерения,
| ДокТЧ.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Код КАК Код,
| ДокТЧ.Количество,
| ДокТЧ.Цена,
| ДокТЧ.ФактурнаяСтоимость,
| ДокТЧ.СерияНомерТСД,
| ДокТЧ.ДатаТСД,
| ДокТЧ.НомерСчетФактура,
| ДокТЧ.ДатаСчетФактура,
| ДокТЧ.ДатаПринятияНаУчет,
| ДокТЧ.НалоговаяБазаНДС,
| ДокТЧ.СтавкаНДС,
| ДокТЧ.СуммаНДС,
| ДокТЧ.СтатСтоимостьДолларыСША,
| ДокТЧ.ВесНеттоКг,
| ДокТЧ.СчетУчетаБУ,
| ДокТЧ.СчетУчетаНДС,
| ДокТЧ.СчетУчетаНУ,
| ДокТЧ.ДокументПартии,
| ДокТЧ.КодВидаТранспорта,
| ДокТЧ.НалоговаяБазаАкцизы,
| ДокТЧ.ТвердаяСтавкаАкциза,
| ДокТЧ.АдвалорнаяСтавкаАкциза,
| ДокТЧ.СуммаАкциза,
| ДокТЧ.СерияНоменклатуры,
| ДокТЧ.ХарактеристикаНоменклатуры
|ИЗ
| Документ.ЗаявлениеОВвозеТоваров.Товары КАК ДокТЧ
|ГДЕ
| ДокТЧ.Ссылка = &Ссылка";

Результат = ЗапросТЧ.Выполнить();

Если Результат.Пустой() Тогда
ОбщегоНазначения.СообщитьОбОшибке("Табличная часть документа пустая. Выгрузка прервана!");

Возврат Неопределено;
КонецЕсли;

ИтогиТЧ = Результат.Выгрузить();

ПроверитьЗаполнениеТабличнойЧастиТовары(Ссылка, ИтогиТЧ, Отказ, Заголовок);

Если Отказ Тогда
//ОбщегоНазначения.СообщитьОбОшибке("Проверьте заполнение табличной части!");
//Предупреждение("Операция не выполнена!");
ВызватьИсключение "Операция не выполнена! Проверьте заполнение табличной части!";
Возврат Неопределено;
КонецЕсли;

ВыборкаТЧ = Результат.Выбрать();

//ТЧДокумента = Результат.Выгрузить();
/////////////////////////////////////////////////////////////////////////////////////////////////////

СвЗвлОбъектXDTO = ПолучитьОбъектXDTO(Фабрика, ДанныеОбъектXDTO.Тип(), "СвЗвл");

СвЗвлОбъектXDTO.НомерДокНП = ОбщегоНазначения.ПолучитьНомерНаПечать(ВыборкаНоменклатура.Ссылка); //Номер заявления, указанный налогоплательщиком
СвЗвлОбъектXDTO.ДатаДокНП  = Формат(ВыборкаНоменклатура.Дата, "ДФ=dd.MM.yyyy"); //Дата заполнения заявления
СвЗвлОбъектXDTO.ПрЛизинг   = 0;     //Принимает значение: 0 | 1
//0 - признак договора лизинга не отмечен;
//1 - признак договора лизинга отмечен.
//ПрЛизинг не может быть=1 при ПрДавСырья=1

СвЗвлОбъектXDTO.ПрДавСырья = 0;     //Принимает значение: 0 | 1
//0 - признак договора переработки давальческого сырья не отмечен;
//1 - признак договора переработки давальческого сырья отмечен.
//ПрДавСырья не может быть=1 при ПрЛизинг=1

СвЗвлОбъектXDTO.БазаАкциз  = ИтогиТЧ.Итог("НалоговаяБазаАкцизы"); //Заполняется с учетом следующего:
//Если значение НБАкциз заполнено один раз, то БазаАкциз=НБАкциз;
//Если значение НБАкциз заполнено несколько раз, то БазаАкциз=сумме всех значений НБАкциз, при условии, что все ставки подакцизных товаров адвалорные (наличие СтАкцизАдвал и отсутствие СтАкцизТверд);
//В иных случаях БазаАкциз отсутствует

СвЗвлОбъектXDTO.БазаНДС    = ИтогиТЧ.Итог("НалоговаяБазаНДС");
СвЗвлОбъектXDTO.ИтогоАкциз = Окр(ИтогиТЧ.Итог("СуммаАкциза")); //Итоговое значение указывается в полных рублях. Значения показателя менее 50 копеек отбрасывается, а 50 копеек и более округляются до полного рубля
СвЗвлОбъектXDTO.ИтогоНДС   = Окр(ИтогиТЧ.Итог("СуммаНДС"));

СвЗвлОбъектXDTO.ПВДок      = "1"; //Принимает значение: 1 | 4 | 5 | 6
//, где:
//1 - первичное заявление;
//4 - взамен ранее представленного;
//5 - корректировка ранее представленного при увеличении цены;
//6 - взамен ранее представленного при частичном возврате товара


СвКонтракт1ОбъектXDTO = ПолучитьОбъектXDTO(Фабрика, СвЗвлОбъектXDTO.Тип(), "СвКонтракт1");

Если ВыборкаНоменклатура.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо Тогда
СвКонтракт1ОбъектXDTO.ПрПродФЛ = "1";    //Принимает значение: 0 | 1 , где:
СвКонтракт1ОбъектXDTO.ИдНомПокР1    = "12";  //0 - продавец - юридическое лицо или индивидуальный предприниматель;
//1 - продавец - физическое лицо
Иначе
СвКонтракт1ОбъектXDTO.ПрПродФЛ = "0";    //Для юр. лиц разрядность ИдНомПокР1 равна 10, для физ. лиц - 12
СвКонтракт1ОбъектXDTO.ИдНомПокР1    = "10";
КонецЕсли;

СвКонтракт1ОбъектXDTO.НаимПродР1     = ВыборкаНоменклатура.НаименованиеКонтрагента;    //Полное наименование (ФИО) продавца

АдресПродавца = ЮрАдресОрганизации(ВыборкаНоменклатура.Контрагент, ВыборкаНоменклатура.Дата);
СвКонтракт1ОбъектXDTO.КодСтранПродР1 = Строка(ПоискВСправочнике(Справочники.КлассификаторСтранМира
, СтранаИзАдреса(АдресПродавца))); //Типовой элемент <ОКСМТип> Код по классификатору ОКСМ.
//Если КодСтранПродР3 отсутствует, то КодСтранПродР1 принимает значение кода одного из государств-членов ЕАЭС. КодСтранПродР1=398 если ПрБкнрПродР1=1.
//Реквизиты КодСтранПродР1=398 и ПрБкнрПродР1=1 указывают на российского налогоплательщика
СвКонтракт1ОбъектXDTO.АдресПродР1    = СвКонтракт1ОбъектXDTO.КодСтранПродР1 + ", " + АдресПродавца;

СвКонтракт1ОбъектXDTO.НаимПокР1      = Строка(ВыборкаНоменклатура.Организация.НаименованиеПолное);

СвКонтракт1ОбъектXDTO.КодСтранПокР1  = "643";  //Типовой элемент <ОКСМТип>. Код по классификатору ОКСМ.
//Принимает значение: 643 | 398, где:
//643 - Россия;
//398 - Казахстан.
//КодСтранПокР1=398, если ПрБкнрПокР1=1.
//При ПрБкнрПокР1=1 КодСтранПокР1=398.
//Реквизиты КодСтранПокР1=398 и ПрБкнрПокР1=1 указывают на российского налогоплательщика

СвКонтракт1ОбъектXDTO.АдресПокР1     = "643, " + ЮрАдресОрганизации(ВыборкаНоменклатура.Организация, ВыборкаНоменклатура.Дата);

СвКонтр1ОбъектXDTO = ПолучитьОбъектXDTO(Фабрика, СвКонтракт1ОбъектXDTO.Тип(), "СвКонтр1");

СвКонтр1ОбъектXDTO.НомКонтр  = ВыборкаНоменклатура.ДоговорКонтрагентаРегл.Номер; //Номер отметки о регистрации Заявления в налоговом органе
//Необязательный

СвКонтр1ОбъектXDTO.ДатаКонтр = Формат(ВыборкаНоменклатура.ДоговорКонтрагентаРегл.Дата, "ДФ=dd.MM.yyyy");  //Дата отметки о регистрации Заявления в налоговом органе
//Необязательный

СвКонтракт1ОбъектXDTO.СвКонтр1 = СвКонтр1ОбъектXDTO;

СвЗвлОбъектXDTO.СвКонтракт1 = СвКонтракт1ОбъектXDTO;



Пока ВыборкаТЧ.Следующий() Цикл

СвТоварОбъектXDTO = ПолучитьОбъектXDTO(Фабрика, СвЗвлОбъектXDTO.Тип(), "СвТовар");

СвТоварОбъектXDTO.НомТовПП     = ВыборкаТЧ.НомерСтроки;
СвТоварОбъектXDTO.НаимТов      = СокрЛП(ВыборкаТЧ.Номенклатура);
СвТоварОбъектXDTO.ТНВЭД        = СокрЛП(ВыборкаТЧ.КодТНВЭД);

Если ВыборкаТЧ.Код = Неопределено Тогда
СвТоварОбъектXDTO.ЕдИзмТов     = "FFFF";          //Типовой элемент <ОКЕИТТип>
Иначе                                                //Код по классификатору ОКЕИ или FFFF.
СвТоварОбъектXDTO.ЕдИзмТов     = Строка(ВыборкаТЧ.Код); //При отсутствии кода единицы измерения в справочнике принимает значение FFFF   
КонецЕсли;

СвТоварОбъектXDTO.КоличТов     = ВыборкаТЧ.Количество;
СвТоварОбъектXDTO.СтоимТов     = ВыборкаТЧ.ФактурнаяСтоимость;
СвТоварОбъектXDTO.ВалТов       = Строка(ВыборкаНоменклатура.ВалютаДокумента.Код);

Если СвТоварОбъектXDTO.ВалТов = "643" Тогда
СвТоварОбъектXDTO.КурсВал = "1";
СвТоварОбъектXDTO.БазаВал = "1";
Иначе
СвТоварОбъектXDTO.КурсВал = ВыборкаНоменклатура.КурсДокумента;
СвТоварОбъектXDTO.БазаВал   = "1"; //Справочник.Валюты..Кратность
КонецЕсли;

СвТоварОбъектXDTO.НомСчФ       = ВыборкаТЧ.НомерСчетФактура;
СвТоварОбъектXDTO.ДатаСчФ      = Формат(ВыборкаТЧ.ДатаСчетФактура, "ДФ=dd.MM.yyyy");
СвТоварОбъектXDTO.ДатаПрин     = Формат(ВыборкаТЧ.ДатаПринятияНаУчет, "ДФ=dd.MM.yyyy");
СвТоварОбъектXDTO.НБАкциз      = ВыборкаТЧ.НалоговаяБазаАкцизы;
СвТоварОбъектXDTO.НБНДС        = ВыборкаТЧ.НалоговаяБазаНДС;
СвТоварОбъектXDTO.СтАкцизТверд = ВыборкаТЧ.ТвердаяСтавкаАкциза;

Если СвТоварОбъектXDTO.ПрОсвНДС = 2 Тогда
СвТоварОбъектXDTO.СтНДС = -1;
Иначе
СвТоварОбъектXDTO.СтНДС     = СтрЗаменить(СтрЗаменить(Формат(ВыборкаТЧ.СтавкаНДС, "ЧРГ=%"), ",", "."), "%", "");
КонецЕсли;

СвТоварОбъектXDTO.СумАкциз     = ВыборкаТЧ.СуммаАкциза;
СвТоварОбъектXDTO.СумНДС       = ВыборкаТЧ.СуммаНДС;

Если СвТоварОбъектXDTO.СумАкциз = Неопределено Тогда
СвТоварОбъектXDTO.ПрОсвАкциз   = 4;  //Принимает значение: 1 | 2 | 3 | 4 , где:
Иначе                                       //1 - товар является подакцизным. Освобождения от уплаты акцизов нет;
СвТоварОбъектXDTO.ПрОсвАкциз   = 1;     //2 - товар является подакцизным. Освобождение от уплаты акцизов есть;
КонецЕсли; //3 - товар является подакцизным. Акцизы уплачены иному органу;
//4 - товар является не подакцизным (умолчание)


Если СвТоварОбъектXDTO.СумНДС = Неопределено Тогда
СвТоварОбъектXDTO.ПрОсвНДС     = 2;  //Принимает значение: 1 | 2 , где:
Иначе //1 - освобождения от уплаты НДС нет (умолчание);
СвТоварОбъектXDTO.ПрОсвНДС     = 1; //2 - освобождение от уплаты НДС есть
КонецЕсли;

СвТСДОбъектXDTO = ПолучитьОбъектXDTO(Фабрика, СвТоварОбъектXDTO.Тип(), "СвТСД");

СвТСДОбъектXDTO.СерНомТСД = Строка(ВыборкаТЧ.СерияНомерТСД);
СвТСДОбъектXDTO.ДатаТСД   = Формат(ВыборкаТЧ.ДатаТСД, "ДФ=dd.MM.yyyy");

СвТоварОбъектXDTO.СвТСД = СвТСДОбъектXDTO;

СвЗвлОбъектXDTO.СвТовар.Добавить(СвТоварОбъектXDTO);

КонецЦикла;

ДанныеОбъектXDTO.СвЗвл = СвЗвлОбъектXDTO;


ДопФайлОбъект.Документ = ДанныеОбъектXDTO;

ПрефиксИмениФайлаВыгрузки = "ON_ZVLRPOK";

ИдФайл = ПрефиксИмениФайлаВыгрузки
+ "_" + Строка(ДопФайлОбъект.КодНО)
+ "_" + Строка(ДопФайлОбъект.КодНО)
+ "_" + ОтпрЮЛОбъектXDTO.ИННЮЛ + ОтпрЮЛОбъектXDTO.КПП
+ "_" + Формат(ТекущаяДата(), "ДФ=ггггММдд")
+ "_" + Строка(Новый УникальныйИдентификатор);

ДопФайлОбъект.ИдФайл = ИдФайл; //Содержит (повторяет) имя файла без точки и расширения имени файла



Если Отказ = Истина Тогда
Предупреждение("Операция не выполнена!");
//Сообщить("Выгрузка невозможна! Проверьте заполнение реквизитов.");
Иначе
СохранитьНаДиске(ИдФайл, Фабрика, ДопФайлОбъект, "Файл", Истина);
КонецЕсли;

КонецФункции



Функция СохранитьНаДиске(ИмяФайла, ФабрикаXDTO, ОбъектXDTO, Имя = "", Интерактивно = Ложь)



//Если Интерактивно Тогда
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Расширение = "xml";
Диалог.Фильтр = "Файл выгрузки (*.xml)|*.xml|";
Диалог.ПолноеИмяФайла = Диалог.ПолноеИмяФайла + ИмяФайла + ".xml";
Если Не Диалог.Выбрать() Тогда
Возврат Неопределено;
КонецЕсли;


Если НЕ Диалог.ВыбранныеФайлы[0] = "" Тогда
Диалог.ПолноеИмяФайла = Диалог.ВыбранныеФайлы[0];
КонецЕсли;

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(Диалог.ПолноеИмяФайла, "windows-1251");
ЗаписьXML.ЗаписатьОбъявлениеXML();   
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO, Имя);

ЗаписьXML.Закрыть();

Предупреждение("Файл успешно выгружен!", 30, "Выгрузка документа");

КонецФункции // СохранитьНаДискеВнешнююОбработку()

Добавлено: 24 июн 2015, 16:52


Функция ПолучитьОбъектXDTO(Фабрика, Владелец, Имя, ЗначениеСвойства = "")

Если ТипЗнч(Владелец) = Тип("ПакетXDTO") Тогда
СвойствоXDTO = Владелец.КорневыеСвойства.Получить(Имя);
Иначе
СвойствоXDTO = Владелец.Свойства.Получить(Имя);
КонецЕсли;   
ТипXDTO = СвойствоXDTO.Тип;
Если  ТипЗнч(ТипXDTO) = Тип("ТипЗначенияXDTO") Тогда
ОбъектXDTO = Фабрика.Создать(ТипXDTO, ЗначениеСвойства);
Иначе
ОбъектXDTO = Фабрика.Создать(ТипXDTO);
КонецЕсли;   
Возврат ОбъектXDTO;

КонецФункции

Теги: XDTO выгрузка XML 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск