Есть код:
СведенияОМедПомощи = Новый ЗаписьXML;
ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML(«windows-1251», «1.0», Истина, Ложь, Символы.ПС);
СведенияОМедПомощи.ОткрытьФайл(ПутьКФайлу_ZL_LIST, ПараметрыЗаписиXML);
СведенияОМедПомощи.ЗаписатьОбъявлениеXML();
ФабрикаXDTO.ЗаписатьXML(СведенияОМедПомощи, Объект_ZL_LIST);
СведенияОМедПомощи.Закрыть();
При выполнении получаю ошибку:
Ошибка при вызове метода контекста (ЗаписатьXML) ФабрикаXDTO.ЗаписатьXML(СведенияОМедПомощи, Объект_ZL_LIST);
по причине:
Недопустимое значение параметра (параметр номер ‘3’)
но у ЗаписатьXML(<ЗаписьXML>, <Элемент>, <ЛокальноеИмя>, <URIПространстваИмен>, <Форма>, <УказаниеТипа>)
— <ЛокальноеИмя> (необязательный)
Тип: Строка.
Локальное имя записываемого элемента данных.
В чем ошибка?
- Главная
- /
- Статьи
- /
- Программирование на 1С:Предприятие
- /
- Не установлен приемник XML
Текст ошибки:
{Форма.Форма.Форма(2254)}: Ошибка при вызове метода контекста (ЗаписатьXML)
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO);
по причине:
Ошибка при записи XDTO
по причине:
Не установлен приемник XML
Проблема решается добавлением команды «УстановитьСтроку».
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO);
Возврат ЗаписьXML.Закрыть();
Указанный код работает без ошибок.
Возврат к списку
Есть такой XDTO пакет
как по нему создать XML файл? Не могу понять как обратиться к элементу Контрагенты. Нашел в Интернете, что можно обратиться через Корневое свойство, но при сохранении файла выдает ошибку. Также не могу понять как создать элемент Руководитель.
-
Вопрос заданболее трёх лет назад
-
1693 просмотра
5
комментариев
Пригласить эксперта
Ответы на вопрос 2
Там вся фишка во вложенных типах. Для более подробного анализа нужен XSD файл.
Комментировать
Похожие вопросы
-
Показать ещё
Загружается…
30 янв. 2023, в 12:52
5000 руб./за проект
20 янв. 2023, в 20:58
5000 руб./за проект
30 янв. 2023, в 12:41
7000 руб./за проект
Минуточку внимания
Начала появляться ошибка ‘Недостаточно памяти для записи файла формата Base 64’ при записи события в 1с Документооборот 8 ПРОФ.
В конфигураторе в режиме отладки при включенной опции Остановка по ошибке нашел место возникновения ошибки:
{ОбщийМодуль.ВерсионированиеОбъектовСобытия.Модуль(20)}: Ошибка при вызове метода контекста (ЗаписатьXML) ЗаписатьXML(ЗаписьXML, Источник, НазначениеТипаXML.Явное); |
Быстрое решение:Убрать версионирование объектов- выставить для всех пунктов не версионировать. (Далее планируем расширить память на сервере 1С).
После того как убрали версионирование объектов, ошибка о недостатке памяти больше не появлялась, но пропала возможность детально просмотреть кто какие изменения внес в те или иные объекты информационной базы. Журнал регистрации не дает возможности посмотреть историю изменения реквизитов. Версионирование объектов интересная технология, но очень сильно загружает 1с, особенно при больших объемах информации и множестве пользователей.
Поделиться ссылкой:
Похожие записи
Варианты решения проблемы на примере работы обработки 1С:Администратор.
Конфигурация: Розница 2.0. Клиент-Сервер. Обычное приложение.
Ошибка возникает при Записи/Проведении/ОтменаПроведения документа.
СПРАВКА:
Мутабельный тип (англ. Mutable type) — сложный тип данных в объектно-ориентированном программировании, значения которого (как правило — объекты) после своего создания допускают изменение своих свойств.
1С: Подробнее о типах данных 1С:Предприятие: http://v8.1c.ru/overview/CommonCommTypes.htm
1С: XML-сериализация, механизм (XML Serialization, Mechanism): http://v8.1c.ru/overview/Term_000000318.htm
tanka495: Клиент- серверные вызовы: //infostart.ru/public/86838/
Немного теории:
Попытка передачи мутабельного значения — это попытка передачи объекта на сервер(клиент), данные которого могут быть изменены на клиенте(сервере).
Попытка передачи мутабельного значения с клиента на сервер, с сервера на клиент 1С:Предприятия возникает только в клиент-серверной версии (SQL).
Передача параметров
Передача параметров функции (процедуре), выполняемой на сервере достаточно тонкий вопрос. Это в первую очередь связано с необходимостью передачи их между процессом сервера приложений и клиента. При переходе управления с клиентской части на серверную все передаваемые параметры сериализуются, передаются на сервер, где «распаковываются» и используются. При переходе с серверной части на клиентскую – обратный процесс. Здесь необходимо отметить, что данная схема корректно обрабатывает передачу параметров по ссылке и по значению. При передаче параметров действуют следующие отграничения:
Передавать между клиентом и сервером (в обе стороны) можно только немутабельные значения (т.е. значения которых не могут изменяться): примитивные типы, ссылки, универсальные коллекции, значения системных перечислений, хранилище значения. При попытке передать что-либо другое – аварийное завершение клиентского приложения (даже, если передавать некорректный параметр пытается сервер).
Не рекомендуется при передаче параметров передавать большие объёмы данных (например, строки более 1 миллиона символов), это может негативно сказаться на производительности сервера.
Нельзя передавать параметры, содержащие циклическую ссылку, причем как с сервера на клиент, так и обратно.При попытке передать такой параметр – аварийное завершение клиентского приложения (даже если передавать некорректный параметр пытается сервер).
Не рекомендуется передавать очень сложные коллекции данных. При попытке передачи параметра с очень большим уровнем вложения происходит аварийное завершение сервера.
Проблемная ситуация:
«Розница 2.0». Клиент-Сервер. Обычное приложение.
Обработка «1С:Администратор»: //infostart.ru/public/100967/
МО: {ВнешняяОбработка.КонсольАдминистратора.МодульОбъекта(658)}:
Ошибка при вызове метода контекста (Записать):
Ошибка при выполнении обработчика — ‘ПередЗаписью’:{ОбщийМодуль.ПрефиксацияОбъектовСобытия.Модуль(215)}:
Ошибка при вызове метода контекста (ДатаИлиОрганизацияОбъектаИзменена):
Попытка передачи с клиента на сервер мутабельного значения 2-го параметра метода ДатаИлиОрганизацияОбъектаИзменена().
Обработка 1С:Администратор.МодульОбъекта
ОбъектИЗМ.Записать(?(РежимЗаписи = Неопределено, РежимЗаписиДокумента.Запись, РежимЗаписи));
ОбщийМодуль.ПрефиксацияОбъектовСобытия.Модуль(215):
Процедура ПроверитьНомерОбъектаПоДатеИОрганизации(Объект)
Если ПрефиксацияОбъектов.ДатаИлиОрганизацияОбъектаИзменена(Объект.Ссылка, Объект.Метаданные(), Объект.Дата, Объект.Организация) Тогда
ВАРИАНТ РЕШЕНИЯ № 1: (возможный, но неоптимальный):
УСТАНОВКА СВОЙСТВА ОБЩЕГО МОДУЛЯ.
В конфигураторе:
В Свойствах ОбщийМодуль.ПрефиксацияОбъектов активизировать флажок «Клиент обычное приложение».
ВАРИАНТ РЕШЕНИЯ № 2: (рекомендуемый):
ПЕРЕДАЧА ССЫЛКИ.
В конфигураторе:
ОбщийМодуль.ПрефиксацияОбъектовСобытия
Процедура ПроверитьНомерОбъектаПоДатеИОрганизации(Объект)
// БЫЛО.
// Если ПрефиксацияОбъектов.ДатаИлиОрганизацияОбъектаИзменена(Объект.Ссылка, Объект.Метаданные(), Объект.Дата, Объект.Организация) Тогда
// СТАЛО.
Если ПрефиксацияОбъектов.ДатаИлиОрганизацияОбъектаИзменена(Объект.Ссылка, Объект.Дата, Объект.Организация) Тогда
ОбщийМодуль.ПрефиксацияОбъектов
Процедура ДатаИлиОрганизацияОбъектаИзменена(Ссылка, Знач ДатаПослеИзменения, Знач ОрганизацияПослеИзменения) Экспорт
// СТРОКА ДОБАВЛЕНА.
МетаданныеОбъекта = Ссылка.Метаданные();
ВАРИАНТ РЕШЕНИЯ № 3: (возможный, но не в данном случае):
ИСПОЛЬЗОВАНИЕ XML-СЕРИАЛИЗАЦИИ (предложено w-divin).
Сериализация не работает, если в качестве записываемого объекта выступают Метаданные.
(Ошибка при вызове метода контекста (ЗаписатьXML): Значения данного типа не могут быть представлены в XML).
Рекомендуется использовать при необходимости передать Объект (СправочникОбъект, ДокументОбъект и т.д.).
Использовать функции типа:
// Выгрузка ХОбъекта в XML-строку:
Функция ЗаписатьВXML(ХОбъект)
ЗаписьXML = Новый ЗаписьXML; // Тонкий клиент, сервер, толстый клиент, внешнее соединение.
ЗаписьXML.УстановитьСтроку();
ЗаписатьXML(ЗаписьXML, ХОбъект); // Сервер, толстый клиент, внешнее соединение.
Возврат ЗаписьXML.Закрыть();
КонецФункции
// Загрузка ХОбъекта из XML-строки:
Функция ПрочитатьИзXML(СтрокаXML)
ЧтениеXML = Новый ЧтениеXML; // Тонкий клиент, сервер, толстый клиент, внешнее соединение.
ЧтениеXML.УстановитьСтроку(СтрокаXML);
ХОбъект = ПрочитатьXML(ЧтениеXML); // Сервер, толстый клиент, внешнее соединение.
Возврат ХОбъект;
КонецФункции
Тестовая среда:
Операционная система: Windows XP SP3, Windows 7 SP1.
Сервер баз данных: MS SQL Server 2008 R2.
1С:Предприятие (Клиент-Сервер):
— Платформа 8.2.15.
— Конфигурация: Розница 2.0.3.17.
— Режим совместимости: 8.2.13/НеИспользовать.
— Режим запуска: Обычное приложение. Толстый клиент.
С уважением к сообществу МА!
Показывать по
10
20
40
сообщений
Новая тема
Ответить
K_Olga
Дата регистрации: 05.09.2008
Сообщений: 56
«Делаю выгрузку документа РасходнаяНакладная, используя пакет XDTO. В базе имеется несколько документов. Код:<br>ТекСериализаторXDTO=Новый СериализаторXDTO(ФабрикаXDTO);<br>ЗаписьXML=Новый ЗаписьXML;<br>ЗаписьXML.ОткрытьФайл(«C:Sale.xml»);<br>Выборка = Документы.РасходнаяНакладная.Выбрать(); <br>Пока Выборка.Следующий() Цикл <br>ДокументОбъект = Выборка.ПолучитьОбъект();<br>НомерТип = ФабрикаXDTO.Тип(«http://MyServer.ru/sample», «Номер»);<br>НаименованиеТип = ФабрикаXDTO.Тип(«http://MyServer.ru/sample», «Наименование»);<br>РасходнаяНакладнаяТип = ФабрикаXDTO.Тип(«http://MyServer.ru/sample», «РасходнаяНакладная»);<br>ВалютаТип = ФабрикаXDTO.Тип(«http://MyServer.ru/sample», «Валюта»);<br>ТоварТип = ФабрикаXDTO.Тип(«http://MyServer.ru/sample», «Товар»);<br>ЭлементСоставаТип = ФабрикаXDTO.Тип(«http://MyServer.ru/sample», «ЭлементСостава»);<br>ВалютаXDTO=ФабрикаXDTO.Создать(ВалютаТип);<br>ВалютаXDTO.Наименование = ФабрикаXDTO.Создать(НаименованиеТип, ДокументОбъект.Валюта.Наименование);<br>ОбъектДокументXDTO =ФабрикаXDTO.Создать(РасходнаяНакладнаяТип);<br>ОбъектДокументXDTO.Дата = ДокументОбъект.Дата;<br>ОбъектДокументXDTO.Номер = ДокументОбъект.Номер;<br>ТекСериализаторXDTO.Фабрика.ЗаписатьXML(ЗаписьXML,ОбъектДокументXDTO);<br>КонецЦикла;<br>ЗаписьXML.Закрыть();<br>При вызове этой процедуры выходит следующаяс ошибка {Обработка.Обработка1.Форма.Форма(46)}: Ошибка при вызове метода контекста (ЗаписатьXML)<br>ТекСериализаторXDTO.Фабрика.ЗаписатьXML(ЗаписьXML,ОбъектДокументXDTO);<br>Тогда как выгрузить в XML несколько документов?<br>»
Денис (САМАРА)
Дата регистрации: 09.04.2008
Сообщений: 8351
«> («C:Sale.xml»);<br>Не смущает?»
Показывать по
10
20
40
сообщений
Всем доброго времени суток. Имеется платформа 1С:Предприятие 8.3 (8.3.10.2252) Есть процедура на сервере которая формирует структуру одно из значений структуры получается типа XDTO и затем эту структуру надо передать обратно клиенту, но платформа выдает такую ошибку Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства ‘ret’: форма: Элемент имя: { по причине: Ошибка преобразования данных XDTO: Запись значения свойства ‘Value’: форма: Элемент имя: { по причине: Ошибка отображения типов: Отсутствует отображение для типа ‘ОбъектXDTO’ Тут понятно, что нельзя передавать тип ОбъектXDTO с сервера на клиент, но что я только не пробовал и ПоместитьВоВременноеХранилище, ПолучитьИзВременногоХранилища И ЗначениеВстрокуВнутрь, ЗначениеИзСтрокиВнутрь, а значение типа ОбъектXDTO так и не передается структура во всех двух случаях возврается, но строка где должно быть ОбъектXDTO становится во всех двух случаях НЕОПРЕДЕЛЕНО я так понимаю этот тип просто не сериализуется, но должен же быть какой то выход как передать значение ОбъектXDTO с сервера на клиент? Всем заранее спасибо за ответы.
А не подскажешь какими функциями процедурами это сделать можно ?
ФабрикаXDTO.ЗаписатьXML ФабрикаXDTO.ПрочитатьXML
СериализаторХДТО.ЗаписатьХМЛ
А что автор будет / собирается делать с ОбъектXDTO на клиенте?
Что то я не очень пойму как этими функциями пользовать не могли бы привести небольшой пример
ну вообще-то Доступность: Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). значит, можно на клиенте с ним работать.
ЧТо то не работает делаю вот так Где Результат.Данные типа ХДТО Валится вот с такой ошибкой Ошибка при вызове метода контекста (ЗаписатьXML) СериализаторXDTO.ЗаписатьXML(ЗаписьХМЛ, Результат.Данные); по причине: Несоответствие типов (параметр номер ‘2’) (Ошибка отображения типов)
Или я не правильно ХДТО в XML преобразую?
Не слушай глупых дядек про СериализаторXDTO. Используй ФабрикуXDTO, она про пакеты и прочее знает.
хорошо как через ФабрикуXDTO сделать? что то я не понимаю?
Да также как и до этого только через фабрику вот так вот с такой ошибкой вылетает Ошибка при вызове метода контекста (ЗаписатьXML) ФабрикаXDTO.ЗаписатьXML(ЗаписьХМЛ, Результат.Данные); по причине: Ошибка при записи XDTO по причине: Не установлен приемник XML что не так ?
ЗаписьXML.УстановитьСтроку
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
Есть такой XDTO пакет
как по нему создать XML файл? Не могу понять как обратиться к элементу Контрагенты. Нашел в Интернете, что можно обратиться через Корневое свойство, но при сохранении файла выдает ошибку. Также не могу понять как создать элемент Руководитель.
-
Вопрос заданболее трёх лет назад
-
1777 просмотров
5
комментариев
Пригласить эксперта
Ответы на вопрос 2
Там вся фишка во вложенных типах. Для более подробного анализа нужен XSD файл.
Комментировать
Похожие вопросы
-
Показать ещё
Загружается…
25 июн. 2023, в 03:49
15000 руб./за проект
25 июн. 2023, в 03:19
4500 руб./за проект
25 июн. 2023, в 02:28
10000 руб./за проект
Минуточку внимания
Начала появляться ошибка ‘Недостаточно памяти для записи файла формата Base 64’ при записи события в 1с Документооборот 8 ПРОФ.
В конфигураторе в режиме отладки при включенной опции Остановка по ошибке нашел место возникновения ошибки:
{ОбщийМодуль.ВерсионированиеОбъектовСобытия.Модуль(20)}: Ошибка при вызове метода контекста (ЗаписатьXML) ЗаписатьXML(ЗаписьXML, Источник, НазначениеТипаXML.Явное); |
Быстрое решение:Убрать версионирование объектов- выставить для всех пунктов не версионировать. (Далее планируем расширить память на сервере 1С).
После того как убрали версионирование объектов, ошибка о недостатке памяти больше не появлялась, но пропала возможность детально просмотреть кто какие изменения внес в те или иные объекты информационной базы. Журнал регистрации не дает возможности посмотреть историю изменения реквизитов. Версионирование объектов интересная технология, но очень сильно загружает 1с, особенно при больших объемах информации и множестве пользователей.