20.07.15 — 11:46
Всем привет!
При обращении к методу сервиса 1с из 1с ошибка:
«Ошибка SOAP сервера: Неизвестная ошибка. {WebСервис.NumerationSF.Модуль(7)}: Ошибка при вызове метода контекста (ПрочитатьXDTO)
по причине:
{WebСервис.NumerationSF.Модуль(7)}: Ошибка при вызове метода контекста (ПрочитатьXDTO)
по причине:
Несоответствие типов (параметр номер ‘1’)»
Обращаюсь вот так:
Определения = Новый WSОпределения(«ссылка на сервис»);
Прокси = Новый WSПрокси(Определения, «http://www.w3.org/2001/XMLSchema»;, «NumerationSF», «NumerationSFSoap»);
WSПараметр = СериализаторXDTO.ЗаписатьXDTO(СтрокаXML);
Ответ = Прокси.GetNumberSF(WSПараметр);
из SOAPUI тот-же запрос работает. В чем ошибка?
1 — 20.07.15 — 11:47
Прокси тут лишний
2 — 20.07.15 — 11:50
тип параметра anyType
3 — 20.07.15 — 11:51
(0) Нужно смотреть в модуле вот этого вот : «NumerationSF» в строке (7).
Скорее всего неправильно с точки зрения сервиса выглядит содержимое вот этого вот : «СтрокаXML».
4 — 20.07.15 — 11:57
(3) А при запросе из soapui этот же запрос срабатывает…
5 — 20.07.15 — 11:58
(4) Ну так сравни «СтрокаXML» в 1С и тоже самое в soapui.
6 — 20.07.15 — 12:05
(5) в soapui обертка только есть стандартно. Не мешала никогда.
почему-то на тип ругается: «Несоответствие типов (параметр номер ‘1’)»
7 — 20.07.15 — 12:08
(6) «в soapui обертка только есть стандартно.» Это как понять? Метод вызывается вообще без параметра?
8 — 20.07.15 — 12:12
Сразу несколько вопросов
NumerationSF и пространство имен http://www.w3.org/2001/XMLSchema
Если хочешь получить объект XDTO из строки то
ЧтениеXML= новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(СтрокаXML);
ЧтениеXML.ПерейтиКСодержимому();
WSПараметр =Прокси.Фабрика.ПрочитатьXML(ЧтениеXML,Фабрика.Тип(ЧтениеXML.URIПространстваИмен,ЧтениеXML.Имя));
9 — 20.07.15 — 12:13
Фабрика=Прокси.ФабрикаXDTO;
WSПараметр =Фабрика.ПрочитатьXML(ЧтениеXML,Фабрика.Тип(ЧтениеXML.URIПространстваИмен,ЧтениеXML.Имя));
10 — 20.07.15 — 12:23
(8) Ошибка преобразования данных XDTO:
НачалоСвойства: {http://www.w3.org/2001/XMLSchema}anyType Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
11 — 20.07.15 — 12:25
В базе сервиса тип параметра «string», а при создании ws-ссылки «anyType»
12 — 20.07.15 — 12:27
(0)
используй динамическое подключение если не знаешь какое пространство имен используешь
ОпределениеТ=Новый WSОпределения(«http://домен_сайта/имя_публикации_базы/ws/имя_веб_сервиса?wsdl»;);
WSСервис=ОпределениеТ.Сервисы[0];
ПроксиWS=Новый WSПрокси(ОпределениеТ, WSСервис.URIПространстваИмен, WSСервис.Имя, WSСервис.ТочкиПодключения[0].Имя);
ПроксиWS.Пользователь = «ХХХ»;
ПроксиWS.Пароль = «УУУУ»;
ПроксиWS.ВызватьКакойтоМетод();
13 — 20.07.15 — 12:34
Ошибка преобразования данных XDTO:
14 — 20.07.15 — 12:36
в браузере string.
Не понимаю, почему anyType у меня
15 — 20.07.15 — 12:45
(8)Ошибка преобразования данных XDTO:
НачалоСвойства: {http://www.w3.org/2001/XMLSchema}anyType Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: Body Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
16 — 20.07.15 — 13:02
Определения = Новый WSОпределения(«»);
Прокси = Новый WSПрокси(Определения, «http://www.w3.org/2001/XMLSchema»;, «NumerationSF», «NumerationSFSoap»);
Фабрика=Прокси.ФабрикаXDTO;
ЧтениеXML= новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(СтрокаXML);
ЧтениеXML.ПерейтиКСодержимому();
ТипWSПараметра = Прокси.ФабрикаXDTO.Тип(«http://www.w3.org/2001/XMLSchema»;, «string»);
WSПараметр =Прокси.ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ТипWSПараметра);
Ответ = Прокси.GetNumberSF(WSПараметр);
{Форма.Форма.Форма(67)}: Ошибка при вызове метода контекста (ПрочитатьXML)
WSПараметр =Прокси.ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ТипWSПараметра);
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: Body Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
17 — 20.07.15 — 13:04
откуда anyType, если в браузере и в конфе сервиса string?
И что с этим делать?
18 — 20.07.15 — 13:13
Если string, тогда зачем ты туда пихаешь ОбъектXDTO? Пихай стринг
19 — 20.07.15 — 13:14
Определения = Новый WSОпределения(«ссылка на сервис»);
Прокси = Новый WSПрокси(Определения, «http://www.w3.org/2001/XMLSchema»;;, «NumerationSF», «NumerationSFSoap»);
//Это тут не нужно
//WSПараметр = СериализаторXDTO.ЗаписатьXDTO(СтрокаXML);
//Ответ = Прокси.GetNumberSF(WSПараметр);
Ответ = Прокси.GetNumberSF(СтрокаXML);
//Если взлетит — с тебя 500 р
20 — 20.07.15 — 13:42
(17) Внимательно посмотри на 12. И посмотри какое пространство имен у WSСервис.URIПространстваИмен
21 — 20.07.15 — 14:13
(20) WSСервис.URIПространстваИмен = «http://www.w3.org/2001/XMLSchema»;
22 — 20.07.15 — 14:17
«СтрокаXML» у тебя какой тип имеет?
23 — 20.07.15 — 14:18
(19)
{Форма.Форма.Форма(103)}: Ошибка при вызове метода контекста (GetNumberSF)
Ответ = Прокси.GetNumberSF(СтрокаXML);
по причине:
Несоответствие типов (параметр номер ‘1’)
24 — 20.07.15 — 14:19
(22) Строка
25 — 20.07.15 — 14:22
ТипWSПараметра = Прокси.ФабрикаXDTO.Тип(«http://www.w3.org/2001/XMLSchema»;;, «string»);
Парам = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);
ВидДокумента.Key = «Название_параметра»;
ВидДокумента.Value = СтрокаXML;
ВидДокумента.ValueType = «string»;
26 — 20.07.15 — 14:22
ТипWSПараметра = Прокси.ФабрикаXDTO.Тип(«http://www.w3.org/2001/XMLSchema»;;;, «string»);
Парам = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);
Парам.Key = «Название_параметра»;
Парам.Value = СтрокаXML;
Парам.ValueType = «string»;
27 — 20.07.15 — 14:23
Ответ = Прокси.GetNumberSF(Парам);
28 — 20.07.15 — 14:23
Попробуй так
29 — 20.07.15 — 14:41
Вообще то http://www.w3.org/2001/XMLSchema это стандартное пространство имен уже зашитое.
А кто задал такое имя пространства имен? Если это сервис 1С
30 — 20.07.15 — 14:46
Ты бы хоть показал описание WSDL и типы используемые GetNumberSF
31 — 20.07.15 — 14:46
Или выложи WSDL
32 — 20.07.15 — 14:49
(28) Параметр = неопределено
33 — 20.07.15 — 14:50
(30) тип 1 — string
34 — 20.07.15 — 14:52
(30) вот фрагмент описания:
<definitions xmlns=»http://schemas.xmlsoap.org/wsdl/»; xmlns:soap12bind=»http://schemas.xmlsoap.org/wsdl/soap12/»; xmlns:soapbind=»http://schemas.xmlsoap.org/wsdl/soap/»; xmlns:tns=»http://www.w3.org/2001/XMLSchema»; xmlns:xsd=»http://www.w3.org/2001/XMLSchema»; xmlns:xsd1=»http://www.w3.org/2001/XMLSchema»; name=»NumerationSF» targetNamespace=»http://www.w3.org/2001/XMLSchema»>;
<types>
<xs:schema xmlns:xs=»http://www.w3.org/2001/XMLSchema»; xmlns:xs1=»http://www.w3.org/2001/XMLSchema»; targetNamespace=»http://www.w3.org/2001/XMLSchema»; elementFormDefault=»qualified»>
<xs:element name=»GetNumberSF»>
<xs:complexType>
<xs:sequence>
<xs:element name=»RequestXML» type=»xs:string»/>
</xs:sequence>
</xs:complexType>
</xs:element>
35 — 20.07.15 — 14:54
Если в 1с создать ws-ссылку — тип у параметра будет: anyType (http://www.w3.org/2001/XMLSchema)
36 — 20.07.15 — 14:57
Скинь wsdl целиком
37 — 20.07.15 — 15:00
Вариант (0) работает, но на вход в процедуру сервиса приходит почему-то Строка, а не ОбъектXDTO. Из SOAPUI приходит ОбъектXDTO.
Как сделать, чтоб приходил ОбъектXDTO?
38 — 20.07.15 — 15:04
Web-Service самописный? Где находится? Есть доступ к исходникам?
39 — 20.07.15 — 15:09
СтрокаТип = WSПрокси.ФабрикаXDTO.Тип(«http://www.w3.org/2001/XMLSchema»,»string»;);
СтрокаЗначение = WSПрокси.ФабрикаXDTO.Создать(СтрокаТип,СтрокаXML);
Ответ = WSПрокси.GetNumberSF(СтрокаЗначение);
40 — 20.07.15 — 15:13
Выдернул из обработки клиент банка. Если не поможет, скидывай wsdl целиком
41 — 20.07.15 — 15:29
Измените пространство имен у Веб сервиса
Неправильно.
targetNamespace=»http://www.w3.org/2001/XMLSchema»>;;
Замените на какойнибудь
http://www.ИмяВашейКомпании.ru
Ну и раз параметр строка
Ответ = Прокси.GetNumberSF(СтрокаXML);
42 — 20.07.15 — 15:34
(39) не, на входе получается Строка, а не ОбъектXDTO
43 — 20.07.15 — 15:47
(8) на входе в сервисе все равно Строка получается
44 — 20.07.15 — 15:54
(43) Еще раз задай нормальное пространство имен
Судя по описанию у тебя параметр строка.
45 — 20.07.15 — 15:55
(42) С с чем сравниваешь?
Скачай Fiddler2 и смотри им какие запросы кто отправляет
46 — 20.07.15 — 15:56
47 — 20.07.15 — 16:14
(44) а какое нормальное?
48 — 20.07.15 — 16:34
(45) В отладке сервиса — если из 1с запрос приходит — на входе Строка, из других систем — ОбъектXDTO
49 — 20.07.15 — 16:49
(47) Ну ты читай, что я тебе пишу в 41
Например http://www.ИмяВашейКомпании.ru
(48) Так, а что у тебя реально представляет параметр в сервисе?
Фабрика=Прокси.ФабрикаXDTO;
Тип=Фабрика.Тип(ПространствоИмен,НазваниеТипа);
Парам=Фабрика.Создать(Тип);
50 — 21.07.15 — 09:19
(49) Прошу прощения, немного напутал.
Если отправляю запрос из SOAPUI — на входе сервиса ОбъектXDTO и все отрабатывает без ошибки.
Если отправляю из 1С — на входе тоже ОбъектXDTO, но видимо другой и ошибка появляется при попытке прочитать ОбъектXDTO:
Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
СтрокаХМЛ = Сериализатор.ПрочитатьXDTO(RequestXML);
Разница в объектах:
от SOAPUI в отладке вижу просто ОбъектXDTO;
от 1с в отладке видны еще его поля, т.е. тэги xml, которую я передаю.
Видимо как-то не так отправляю?
51 — 21.07.15 — 09:20
А отправляю вот так:
ЧтениеXML= новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(СтрокаXML);
ЧтениеXML.ПерейтиКСодержимому();
Определения = Новый WSОпределения(«http://10.6.0.47/b83Services/ws/NumerationSF.1cws?wsdl»;);
WSПрокси = Новый WSПрокси(Определения, «http://www.w3.org/2001/XMLSchema»;, «NumerationSF», «NumerationSFSoap»);
WSПараметр = WSПрокси.ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, WSПрокси.ФабрикаXDTO.Тип(ЧтениеXML.URIПространстваИмен,ЧтениеXML.Имя));
Ответ = WSПрокси.GetNumberSF(WSПараметр);
52 — 21.07.15 — 09:35
Ваще не пойму — почему туда приходит ОбъектXDTO, а не строка?
В моей конфе в сервисы на вход приходит строка всегда, но тут платформа 8.3 (8.3.5.1186), а там 8.3 (8.3.6.1977). Может в платформе дело?
53 — 21.07.15 — 09:39
(52) Нет не в платформа, а в способе отправки.
Вопрос — почему разные ОбъектXDTO приходят от SOAPUI и от 1с?
54 — 21.07.15 — 09:48
Скорее всего у тебя URIПространстваИменСервиса не http://www.w3.org/2001/XMLSchema, а собственные. Посмотри в wsdl какие используются пространства имен.
55 — 21.07.15 — 09:57
56 — 21.07.15 — 10:09
Фидлером не смотрел какой запрос 1с формирует?
57 — 21.07.15 — 10:11
Сделай как в(45)
Serginio1
58 — 21.07.15 — 11:18
(51) Так пространство имен и не стал переименовывать?
Грабли метода ПрочитатьXML() объекта ФабрикаXDTO
Что таит в себе окно редактирования XDTO-пакета
Фабрика XDTO — это библиотека типов, которая описывает определенные структуры XML. В языке программирования платформы 1С имеется объект ФабрикаXDTO, который содержит все пакеты XDTO, имеющиеся в конфигурации, а также предопределенные пакеты (например, пакет типов XML схемы). У данного объекта метод ПрочитатьXML(), позволяет читать элементы данных XDTO указанного типа из объекта чтения XML:
ФайлXML = Новый ЧтениеXML;
ФайлXML.УстановитьСтроку(СтрокаXML);
Пока ФайлXML.Прочитать() Цикл
Если ФайлXML.ЛокальноеИмя = "Message" И ФайлXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ФайлXML);
КонецЕсли;
КонецЦикла;
ФайлXML.Закрыть();
Первый параметр метода является обязательным, в который передается объект чтения XML. Второй параметр метода необязательный, в который передается тип элемента данных XDTO. Если тип не указан, то будет сделана попытка определить тип данных по текущему состоянию объекта ЧтениеXML.
Допустим, создадим тип в пакете XDTO с пространством имен http://lk.1cps.ru, который будет описывать некую структуру XML:
1. Тип «Документы» |
Кусок структуры XML:
...
<Документы>
<РасчетФБ>
<Культура>12122</Культура>
<ПосевнаяПлощадь>23</ПосевнаяПлощадь>
<СтавкаСубсидий>12</СтавкаСубсидий>
<Сумма>276</Сумма>
</РасчетФБ>
<РасчетФБ>
<Культура>232323</Культура>
<ПосевнаяПлощадь>34</ПосевнаяПлощадь>
<СтавкаСубсидий>12</СтавкаСубсидий>
<Сумма>408</Сумма>
</РасчетФБ>
</Документы>
...
Прочитаем эту структуру:
Пока ФайлXML.Прочитать() Цикл
Если ФайлXML.ЛокальноеИмя = "Документы" И ФайлXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ФайлXML, ФабрикаXDTO.Тип("http://lk.1cps.ru", "ДокументыТип"));
Прервать;
КонецЕсли;
КонецЦикла;
Приведенный код будет завершать ошибкой чтения XML, примерно такой:
Ошибка при вызове метода контекста (ПрочитатьXML)
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ФайлXML, ФабрикаXDTO.Тип("http://lk.1cps.ru", "ДокументыТип"));
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://lk.1cps.ru}ДокументыТип - [126,19]
Проверка дополнительного свойства:
форма: Элемент
имя: {http://lk.1cps.ru}Культура
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {http://lk.1cps.ru}ДокументыТип
ПРОШЛО 4 ЧАСА
Так как выше приведенный кусок структуры XML не относится к пространству имен http://lk.1cps.ru, то и метод ПрочитатьXML() выкидывал ошибку, несмотря на то, что тип правильно описывает структуру XML! Поэтому XML должен выглядеть так:
...
<Документы xmlns="http://lk.1cps.ru">
<РасчетФБ>
<Культура>12122</Культура>
<ПосевнаяПлощадь>23</ПосевнаяПлощадь>
<СтавкаСубсидий>12</СтавкаСубсидий>
<Сумма>276</Сумма>
</РасчетФБ>
<РасчетФБ>
<Культура>232323</Культура>
<ПосевнаяПлощадь>34</ПосевнаяПлощадь>
<СтавкаСубсидий>12</СтавкаСубсидий>
<Сумма>408</Сумма>
</РасчетФБ>
</Документы>
...
Вот такие пироги.
В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.
Исправляем ситуацию
Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.
Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| ";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КонецЦикла;
Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.
Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.
Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ЭтоГруппа ";
НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
КонецЦикла;
1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.
В конфигураторе находим строку и метод, на который указывало сообщение об ошибке, и нажимаем на него правой кнопкой мыши. Выбираем пункт «Поиск в синтакс-помощнике» и платформа самостоятельно ищет справочную информацию по выделенному методу. В справке мы видим не только подробное описание параметров и самого метода, но и пример. Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает.
Чаще всего причиной подобных ошибок выступают следующие факторы:
- Невнимательность;
- Отсутствие опыта или знаний;
- Несогласованность действий разработчиков друг с другом;
- Изменения в методах контекста в новых версиях платформы.
Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.
Обработка.ЗагрузкаСтруктурыМетаданных.МодульОбъекта(74)}: Ошибка при вызове метода контекста (ПрочитатьXML) ПрочитатьXML(ЧтениеXML);
Описание ошибки:
Ошибка при попытке загрузить описание структуры метаданных в базу конфигурации 1С: Конвертация данных 8, ред. 2.1. Версия платформы 1С: Предприятие 8.3.7.1845
Найденные решения:
Кажется, наверное, что вряд ли бы столкнулся с данной ошибкой, как оказалось не столь редкой. Мне была предоставлена база конфигурации 1С: Конвертация данных 8 ред. 2.0. В которой уже имелись правила обмена, которые нужно было доработать под требуемую задачу. Но для того, чтобы выполнить доработку, необходимо было обновить описание конфигураций посредством загрузки нового описания из файла-описания конфигурации базы-приемника и источника.
Как известо файл-описания конфигурации подготавливается с помощью поставляющегося с 1С: Конвертация данных 8 файла MD82Exp.epf. Традиционно выполнив создание файла-описания структуры конфигурации, перешел к процессу «загрузки метаданных структуры конфигурации» в базе конвертации. И неожиданно по истечении некоторого времени после, казалось бы, удачногостарта процесса загрузки получил ошибку: {Обработка.ЗагрузкаСтруктурыМетаданных.МодульОбъекта(74)}: Ошибка при вызове метода контекста (ПрочитатьXML)
ПрочитатьXML(ЧтениеXML);
по причине:
Ошибка преобразования данных XML: [sfile://C:/Базы 1С/А__/______.xml][171,22]
Удивлению не было предела. Казалось бы столько раз выполнял подобную процедуру. Но такое в первый раз. Оценив шансы на то, что в интернете быстрее найду решение проблемы, чем в документации, оказался прав. На форуме сайта infostart была найдена подсказка о том, что спешка меня подвела.
Таким образом, оценив версию релиза предоставленной базы с версией папки шабонов, изкоторой был выбран файл обработки для формирования описания структуры метаданных конфигурации, стало ясно, что проблема в том, что обработка (точнее релиз, с которым она была предоставлена) не соответствует релизу базы.
Соответственно, установка обновления 1С: Конвертация данных релиза 2.1.7.1 и использование файла MD82Exp.epf из папки шаблона релиза разрешило проблему. Ошибка больше не проявилась.
Оцените, помогло ли Вам предоставленное описание решения ошибки?
© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
14-12-2016
Журавлев А.С.
(Сайт www.azhur-c.ru)