admin / 28.04.2020

Ошибка преобразования данных XDTO

Эта строка создает уже сам ОбъектXDTO, с которым можно уже будет работать привычным способом (обращение к реквизитам через точку). Далее мы перепишем код, добавив проверку на отрицательные значения, и код веб-операции будет выглядеть так:
Функция Plus2(Параметр)
ТипXDTOРезультатОперации = ФабрикаXDTO.Тип(«http://codenotes-1c.blogspot.com», «РезультатОперации»);
РезультатОперации = ФабрикаXDTO.Создать(ТипXDTOРезультатОперации);
Если Параметр < 0 Тогда
РезультатОперации.Результат = 0;
РезультатОперации.Ошибка = «Передано отрицательное значение»;
Иначе
РезультатОперации.Результат = Параметр+2;
РезультатОперации.Ошибка = «Ok»;
КонецЕсли;
Возврат РезультатОперации;
КонецФункции
Если вызвать эту операцию с отрицательным значением то получим следующий результат: <soap:Envelope xmlns:soap=»http://www.w3.org/2003/05/soap-envelope»> <soap:Header/> <soap:Body> <m:Plus2Response xmlns:m=»www.URI.com»> <m:return xmlns:xs=»http://www.w3.org/2001/XMLSchema» xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»> <Результат xmlns=»http://codenotes-1c.blogspot.com»>0</Результат> <Ошибка xmlns=»http://codenotes-1c.blogspot.com»>Передано отрицательное значение</Ошибка> </m:return> </m:Plus2Response> </soap:Body> </soap:Envelope>
О том как вызвать операцию веб-сервиса и просмотреть результат вы можете прочитать в статье 1С:Предприятие 8. Веб-сервисы. Публикация и тестирование
Вы видите что в результате сообщение веб-операции содержит два поля — Результат и Ошибка.
В данном примере описана работа с ОбъектомXDTO. Как я уже говорил, его отличие от ЗначениеXDTO в том, что ЗначениеXDTO не может описывать структурированные типы, вы не сможете, используя ЗначениеXDTO создать тип передающий какой либо документ или справочник. Но! ЗначениеXDTO имеет большие возможности по описанию ограничений примитивных типов и нашу задачу с проверкой на отрицательное значение параметра можно было решить более изящно. Если создать в пакете XDTO ТипЗначения «ПоложительноеЧисло» и указать его минимум,

то этот тип можно использовать как тип входного параметра:

Теперь при вызове веб-операции с отрицательным значением в ответ мы получим сообщение об ошибке:
<soap:Envelope xmlns:soap=»http://www.w3.org/2003/05/soap-envelope»>
<soap:Header/>
<soap:Body>
<soap:Fault>
<soap:Code>
<soap:Value>soap:Sender</soap:Value>
</soap:Code>
<soap:Reason>
<soap:Text xml:lang=»ru_RU»>Неизвестная ошибка. Ошибка проверки данных XDTO:
Значение: ‘-2’ не соответствует простому типу: {http://codenotes-1c.blogspot.com}ПоложительноеЧисло
Несоответствие фасету MinInclusive = ‘0’
по причине:
Ошибка проверки данных XDTO:
Значение: ‘-2’ не соответствует простому типу: {http://codenotes-1c.blogspot.com}ПоложительноеЧисло
Несоответствие фасету MinInclusive = ‘0’</soap:Text>

Добрый день! Уважаемые читатели и гости крупного IT блога pyatilistnik.org. В прошлый раз я вам рассказывал, о установке Denwer, на котором мы тестировали приложение. Сегодня я бы хотел рассмотреть любимую нашу платформу 1С. Понадобилось мне тут установить для старых баз, клиента 8.2. Вроде бы дело плевое, но у меня появилась ошибка при установке 1с 8.2: «Ошибка применения преобразований. Проверьте правильность путей указанных преобразований». Такую я еще не встречал, спросил у коллег из 1С, то же не видели. Изучив вопрос в интернете и проверив некоторые решения на практике, я нашел, то что мне подошло и я бы хотел этим поделиться, в данной заметке.

Причины ошибки применения преобразований

Давайте рассмотрим для начала основные причины, которые могут вызывать данную проблему:

  • Во первых это конфликт версий, например, у вас уже установлена платформа с таким же билдом, но с другой разрядностью.
  • Мусор в реестре Windows
  • Повреждение веток реестра Windows

1 способ. Удаление не нужных версий

У меня была задача установить 32-х битную версию платформы 8.2.19.130, когда я увидел ошибку применения преобразований, я первым делом полез в оснастку «Программы и компоненты». Там я обнаружил, что уже установлена 64-х битная версия данной платформы и плюс старые, которые я не использую.

Выбираем нужные для удаления и сносим их.

Обязательно, после того как вы все удалите, что вам не нужно, проведите очистку реестра Windows от старых ключей

Обязательно производим перезагрузку вашей операционной системы и проверяем установку клиента 1С. У меня опять появилась знакомая мне ошибка, где требовалось проверить правильность путей указанных преобразований. Значит все же повреждены ветки реестра или остались хвосты с предыдущих установок.

2 способ. Удаление старых веток реестра

Ошибку при установке 1С 8.2 можно попробовать решить вот таким путем. Откройте папку с дистрибутивом 1С. Найдите там файл setup.ini. Щелкните по нему правым кликом мыши и выберите пункт изменить.

Найдите там строку, которая начинается с ProductCode={GUID адрес у вас будет свой}. Скопируйте содержимое {GUID адрес у вас будет свой}, в моем пример это {F92D4A04-D7B3-49CC-935D-37E5E5C09508}.

Теперь открываем реестр Windows, напоминаю для этого нажмите клавиши Win и R одновременно и введите regedit.

Далее открываем вкладку «Правка — Найти» или же можно было нажать горячие клавиши CTRL+F. Клавиша F3 продолжить поиск после найденного значения.

В форме поиска вводим скопированный GUID и начинаем искать.

В итоге у меня нашелся куст в ветке HKEY_CALSSES_ROOT. Как видите в описании фигурирует мой GUID. Теперь вам необходимо удалить данный раздел.

Перед удаление обязательно сделайте резервную копию удаляемого раздела, делается это через правый клик по нему и экспорт его в виде reg файла.

Не забываем нажать F3 и провести поиск дальше, у меня например, нашлось упоминание GUID в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders

После того, как вы создали резервную копию, щелкаем по разделу и удаляем его. ОБЯЗАТЕЛЬНО ПЕРЕЗАГРУЖАЕМСЯ, чтобы изменения вступили в силу.

После перезагрузки, вы уже спокойно сможете установить платформу 1С и не увидите ошибку применения преобразований. Проверьте правильность путей указанных преобразований.

В некоторых случаях инсталлятор может выдать вот такую ошибку: «Windows Error: Ошибка исполнения функции», как она решается смотрите по ссылке.

3 метод. Чистка реестра от всех разделов с 1С

Если вам не помог первый и второй метод и у вас по прежнему ошибка при установке 1с 8.2, то вот метод, который так же помог многим, но он более радикальный. Смысл данного метода заключается в том, что вы должны в ветке реестра HKEY_CALSSES_ROOT\Installer\Products удалить все упоминания, о 1С. Для этого придется пробежаться по всем кустам и проверить описание в поле ProductName. Их может быть несколько, если у вас установлено несколько платформ с разными билдами.

Не забываем делать резервную копию перед удалением, как я описывал выше. Не забываем перезагрузиться после удаления.

Надеюсь, что данные методы окажутся вам полезными и вы сможете легко установить нужного клиента 1С. Вот так вот я просто решил проблему с применением преобразований.

Уже не раз пользователи обращаются ко мне с проблемой «Ошибка преобразования данных XDTO» в 1С, возникающей при попытке открыть отчет на схему компоновки данных. При открытии СКД в конфигураторе ошибка повторяется – программа предлагает нам перезапустить ее, либо завершить работу.
Если конкретнее, ошибка выглядит следующим образом:
Ошибка загрузки документа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: {

Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
На форумах, посвященных 1С, я нашел достаточно много вариантов (а скорее, предположений) по решению данной проблемы. Чаще всего рекомендуют почистить кэш, после чего все якобы должно заработать. Могу сразу сказать, что никакая очистка кэша (ни сервера, ни клиента), мне не помогала. Хотя Вы можете попробовать этот способ – для очистки кэша клиент-серверных вызовов необходимо запустить сеанс с ключом запуска /ClearCache. Если верить интернету, многим помогает.
Если же ошибка осталась (как это было у меня), то решение проблемы будет следующим (к слову, очень простым и банальным) – Вам необходимо обновить версии платформ на каждом сервере, где производилась работа с вышеупомянутым отчетом. Дело в том, что редактирование СКД отчета производилось на конфигураторе с одной версией (например, 8.2.14), а открыть отчет пытались на другой (8.2.13). Вот, собственно, и все решение Вашей проблемы.
Надеюсь, мои советы смогут Вам помочь. Удачи!

FILED UNDER : Статьи

Submit a Comment

Must be required * marked fields.

:*
:*