Здравствуйте! Тупой конечно вопрос, но у меня тут проблема с XDTO причем наверное самая банальная. хочу просто для теста сохранить готовый xml-запрос на локальном диске и споткнулся об заполнения XDTO.
Поле объекта недоступно для записи (bc).
Да уж кажись понял в чем собственно проблема, это то что на пакете стоит только чтение. Извиняюсь за это тогда другой вопрос каким образом я могу заполнить этот пакет и сохранить?
Поле объекта недоступно для записи (bc).
Да уж кажись понял в чем собственно проблема, это то что на пакете стоит только чтение. Извиняюсь за это тогда другой вопрос каким образом я могу заполнить этот пакет и сохранить?
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
Пошел по такому пути не знаю насколько это правильно, но вроде работает
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Шапка.Код КАК ИдентификаторФСРАР,
| Шапка.ФорматОбмена КАК ФорматОбмена
|ИЗ
| Справочник.КлассификаторОрганизацийЕГАИС КАК Шапка
|ГДЕ
| Шапка.Код = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", Организация());
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
ФорматОбмена = ИнтеграцияЕГАИСКлиентСервер.ФорматОбмена(Шапка.ФорматОбмена);
Операция = Перечисления.ВидыДокументовЕГАИС.ЗапросПроверкиАкцизныхМарокНаОстаткахОрганизации;
ПространствоИмен = Перечисления.ВидыДокументовЕГАИС.ПространствоИмен(Операция, ФорматОбмена);
ЗапросXDTO = ИнтеграцияЕГАИС.ОбъектXDTO(ПространствоИмен, "QueryFilter");
АкцизнаяМарка="236200053897321018001V3QKZFRNKSPNE2RP3F2QYMLQ ME2EGSPJZIOHD4TEHHQ2HHIHZAATSEPNKTMEZ2OMCREVUA4YP7OYN74WJJEK DK5RHK2HGBOZXMPZKPGR55OXF7YVJTUDVS4Y6KK2LZPMI";
ЗапросXDTO.bc.Добавить(АкцизнаяМарка);
Текст = ИнтеграцияЕГАИС.ОбъектXDTOВXML(ЗапросXDTO,Организация(),ПространствоИмен,"QueryFilter");
ПараметрыЗаписи = Новый ПараметрыЗаписиXML("UTF-8",,,Истина);
Тест = Новый ЗаписьТекста("G:\1.xml", КодировкаТекста.UTF8);
Тест.Записать(Текст);
Тест.Закрыть();
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(6)Да, записывайте, сохраняйте.
ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8",,, Истина);
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла, ПараметрыЗаписиXML);
ЗаписьXML.ЗаписатьОбъявлениеXML();
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, Запрос1);
ЗаписьXML.Закрыть();
Показать
Записать получилось. Теперь столкнулся с другой проблемой в xml файле должен быть указан код организации.
А получаю документ следующего вида
<?xml version="1.0" encoding="UTF-8"?>
<ns:Documents xmlns="http://fsrar.ru/WEGAIS/QueryFilter"
xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns:Owner>
<ns:FSRAR_ID>030000266400</ns:FSRAR_ID>
</ns:Owner>
<ns:Document>
<ns:QueryFilter>
<bc>239300009178301018001XG5UNFTMJSFI3OZYW37KLEM3IYF5KDOSAIB QRZWKWRWZ5EWWEAYS2KX6BLZG4BUHT4GBV2KC42TBAMW73AOJJNOMM4QIGCK AVBGHCBQG6W3VBIHK5XIALWNHDQYUIKG6Y</bc>
<bc>239300009178601018001UT7YIGOOVCK32EKLSGQ2FKMVTEV6WBJCCSU CTH6U4LRKSYWKU4FT7QEEXFX5EZ43P77QPW3QEIYYE5JSRXU7NH3XLPSEAP5 QQJ2X5SZPHQOZ5U2DOGLEE3FZI3PAAD52Q</bc>
<bc>2393000091790310180017GQWTWBJC3T5SDGQTMWE2IHOBU5PNWZWC3I ACDLEWJDDEO3N4Q44FVGEUJABYTGS2RDHP2D3E4DYWVKV5POPDGANA3OISY4 Y6I4Q7KLDJUQ5D2CQV4GEAYWOEWTT5NRPA</bc>
<bc>188402713618900222001EAOELS3K623GIJY4IQMTKQQAXQIL42WE2MD HY6SXS7XERK6HZADRPKTZKRHMATUW33XIFYYN6IE5EMUDVTCM6V5HGJ243YJ PYR6L2YOYAXNAUOJMA224VK476R2FKPDQA</bc>
</ns:QueryFilter>
</ns:Document>
</ns:Documents>
ПоказатьА получаю документ следующего вида
<?xml version="1.0" encoding="UTF-8"?>
<QueryFilter xmlns="http://fsrar.ru/WEGAIS/QueryFilter"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<bc>236200053897321018001V3QKZFRNKSPNE2RP3F2QYMLQME2EGSPJZIO HD4TEHHQ2HHIHZAATSEPNKTMEZ2OMCREVUA4YP7OYN74WJJEKDK5RHK2HGBO ZXMPZKPGR55OXF7YVJTUDVS4Y6KK2LZPMI</bc>
</QueryFilter>
Сейчас просмотрел код конфигурации, походу дела заполнение идет отсюда
Функция ОбъектXDTOВXML(ОбъектXDTO, ИдентификаторФСРАР, ПространствоИмен, ИмяТипа) Экспорт
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку("UTF-8");
ЗаписьXML.ЗаписатьНачалоЭлемента("Documents", КорневоеПространствоИмен());
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен(
Перечисления.ВидыДокументовЕГАИС.ПрефиксПространстваИмен(КорневоеПространствоИмен()),
КорневоеПространствоИмен());
Зависимости = Новый Массив;
Зависимости.Добавить("http://www.w3.org/2001/XMLSchema-instance");
Зависимости.Добавить("http://www.w3.org/2001/XMLSchema");
ИнтеграцияИС.ЗависимыеПространстваИмен(ФабрикаXDTO.Пакеты.Получить(ПространствоИмен).Зависимости, Зависимости);
Если Зависимости.Найти(ПространствоИмен) = Неопределено Тогда
Зависимости.Добавить(ПространствоИмен);
КонецЕсли;
Для Каждого ЗависимоеПространство Из Зависимости Цикл
Префикс = Перечисления.ВидыДокументовЕГАИС.ПрефиксПространстваИмен(ЗависимоеПространство);
Если НЕ ПустаяСтрока(Префикс) Тогда
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен(Префикс, ЗависимоеПространство);
КонецЕсли;
КонецЦикла;
СодержимоеXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(КорневоеПространствоИмен(), "DocBody"));
СодержимоеXDTO[ИмяТипа] = ОбъектXDTO;
ОтправительXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(КорневоеПространствоИмен(), "SenderInfo"));
ЗаполнитьСвойствоXDTO(ОтправительXDTO, "FSRAR_ID", ИдентификаторФСРАР);
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОтправительXDTO, "Owner", КорневоеПространствоИмен());
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, СодержимоеXDTO, "Document", КорневоеПространствоИмен());
ЗаписьXML.ЗаписатьКонецЭлемента();
ТекстXML = ЗаписьXML.Закрыть();
ТекстXML = СтрЗаменить(ТекстXML, "unqualified_element:", "");
ТекстXML = СтрЗаменить(ТекстXML, "remove:", "");
ТекстXML = СтрЗаменить(ТекстXML, "xmlns:remove", "xmlns");
Возврат ТекстXML;
КонецФункции
Показать
(11) Извините, а можете пояснить для чего вот эти строчки
Для Каждого ЗависимоеПространство Из Зависимости Цикл
Префикс = Перечисления.ВидыДокументовЕГАИС.ПрефиксПространстваИмен(ЗависимоеПространство);
Если НЕ ПустаяСтрока(Префикс) Тогда
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен(Префикс, ЗависимоеПространство);
КонецЕсли;
КонецЦикла;
И вот это пожалуйста
Код |
---|
ТекстXML = СтрЗаменить(ТекстXML, "unqualified_element:", "");
ТекстXML = СтрЗаменить(ТекстXML, "remove:", "");
ТекстXML = СтрЗаменить(ТекстXML, "xmlns:remove", "xmlns");
Показать полностью |
Для Каждого ЗависимоеПространство Из Зависимости Цикл
Префикс = Перечисления.ВидыДокументовЕГАИС.ПрефиксПространстваИмен(ЗависимоеПространство);
Если НЕ ПустаяСтрока(Префикс) Тогда
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен(Префикс, ЗависимоеПространство);
КонецЕсли;
КонецЦикла;
И вот это пожалуйста
Так я походу чет совсем запутался. Вот я передаю в функцию все данные, возвращается уже готовый текст XML, а как теперь собственно этот текст сохранить на локальном диске, чет запутался.
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Шапка.Код КАК ИдентификаторФСРАР,
| Шапка.ФорматОбмена КАК ФорматОбмена
|ИЗ
| Справочник.КлассификаторОрганизацийЕГАИС КАК Шапка
|ГДЕ
| Шапка.Код = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", Организация());
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
ФорматОбмена = ИнтеграцияЕГАИСКлиентСервер.ФорматОбмена(Шапка.ФорматОбмена);
Операция = Перечисления.ВидыДокументовЕГАИС.ЗапросПроверкиАкцизныхМарокНаОстаткахОрганизации;
ПространствоИмен = Перечисления.ВидыДокументовЕГАИС.ПространствоИмен(Операция, ФорматОбмена);
ЗапросXDTO = ИнтеграцияЕГАИС.ОбъектXDTO(ПространствоИмен, "QueryFilter");
АкцизнаяМарка="236200053897321018001V3QKZFRNKSPNE2RP3F2QYMLQ ME2EGSPJZIOHD4TEHHQ2HHIHZAATSEPNKTMEZ2OMCREVUA4YP7OYN74WJJEK DK5RHK2HGBOZXMPZKPGR55OXF7YVJTUDVS4Y6KK2LZPMI";
ЗапросXDTO.bc.Добавить(АкцизнаяМарка);
Текст = ИнтеграцияЕГАИС.ОбъектXDTOВXML(ЗапросXDTO,Организация(),ПространствоИмен,"QueryFilter");
ПараметрыЗаписи = Новый ПараметрыЗаписиXML("UTF-8",,,Истина);
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("G:\1.xml", ПараметрыЗаписи);
Запись.ЗаписатьОбъявлениеXML();
Запись.Закрыть();
Показать
Пошел по такому пути не знаю насколько это правильно, но вроде работает
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Шапка.Код КАК ИдентификаторФСРАР,
| Шапка.ФорматОбмена КАК ФорматОбмена
|ИЗ
| Справочник.КлассификаторОрганизацийЕГАИС КАК Шапка
|ГДЕ
| Шапка.Код = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", Организация());
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
ФорматОбмена = ИнтеграцияЕГАИСКлиентСервер.ФорматОбмена(Шапка.ФорматОбмена);
Операция = Перечисления.ВидыДокументовЕГАИС.ЗапросПроверкиАкцизныхМарокНаОстаткахОрганизации;
ПространствоИмен = Перечисления.ВидыДокументовЕГАИС.ПространствоИмен(Операция, ФорматОбмена);
ЗапросXDTO = ИнтеграцияЕГАИС.ОбъектXDTO(ПространствоИмен, "QueryFilter");
АкцизнаяМарка="236200053897321018001V3QKZFRNKSPNE2RP3F2QYMLQ ME2EGSPJZIOHD4TEHHQ2HHIHZAATSEPNKTMEZ2OMCREVUA4YP7OYN74WJJEK DK5RHK2HGBOZXMPZKPGR55OXF7YVJTUDVS4Y6KK2LZPMI";
ЗапросXDTO.bc.Добавить(АкцизнаяМарка);
Текст = ИнтеграцияЕГАИС.ОбъектXDTOВXML(ЗапросXDTO,Организация(),ПространствоИмен,"QueryFilter");
ПараметрыЗаписи = Новый ПараметрыЗаписиXML("UTF-8",,,Истина);
Тест = Новый ЗаписьТекста("G:\1.xml", КодировкаТекста.UTF8);
Тест.Записать(Текст);
Тест.Закрыть();
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот