Синхронизация через универсальный формат данных
Автор likalim, 15 фев 2016, 14:52
0 Пользователей и 1 гость просматривают эту тему.
Последний специально ставила
Релиз платформы 8.3.7.1917
Да, я это уже поняла. 3 часа пыталась ошибку в базе найти.
1С видимо еще не доработали новый механизм обмена. А лезть и разбираться в этом мне пока не хочется.
Такая же проблема только на спр валюты ошибка валится. ИБ под SQL. А если синхронизировать в файловом варианте — проходит на ура. У кого есть решения?
Прошу прощения за некропостинг. Тему нашел по поиску, может кто то еще наткнется и ему поможет мое решение.
Итак, получил схожую ошибку.
«Ошибка при вызове метода контекста (Проверить) ОбъектXDTO.Проверить(); по причине: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.4}Документ.РеализацияТоваровУслуг Проверка свойства ‘ДанныеВзаиморасчетов’: форма: Элемент имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.4}ДанныеВзаиморасчетов тип: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.4}ОбщиеСвойстваДанныеВзаиморасчетов Не установлено значение одного из следующих свойств: Контрагент»
Сначала тоже пытался найти этот документ и т.д., решение же оказалось из раздела танца с бубном. В настройке плана синхронизации сменил формат обмена, т.е. у меня был 1,4, я сменил на 1,3, синхронизация вообще не пошла, вернул снова на 1,4 , все заработало .
- Форум 1С
-
►
Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4 -
►
Конфигурирование, программирование в 1С Предприятие 8 -
►
Синхронизация через универсальный формат данных
Похожие темы (5)
Поиск
Грабли метода Прочитать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С.
BookAnAppointmentWithParams (EmployeeID[string], PatientSurname[string],
PatientName[string], PatientFatherName[string], Date[dateTime],
TimeBegin[dateTime], Comment[string], Phone[string], Email[string], Address[string],
Clinic[string], GUID[string], Params[Structure])
Пример запроса:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ru="ru.umc" xmlns:core="http://v8.1c.ru/8.1/data/core">
<soap:Header/>
<soap:Body>
<ru: BookAnAppointmentWithParams>
<ru:EmployeeID>ac30e139-3087-11dc-8594-005056c00008</ru:EmployeeID>
<ru:PatientSurname>Иванов</ru:PatientSurname>
<ru:PatientName>Иван</ru:PatientName>
<ru:PatientFatherName>Иванович</ru:PatientFatherName>
<ru:Date>2017-03-17T00:00:00</ru:Date>
<ru:TimeBegin>0001-01-01T13:10:00</ru:TimeBegin>
<ru:Comment>Комментарий</ru:Comment>
<ru:Phone>89876543210</ru:Phone>
<ru:Email>bit@1cbit.ru</ru:Email>
<ru:Address>Ленина 1</ru:Address>
<ru:Clinic>f679444a-22b7-11df-8618-002618dcef2c</ru:Clinic>
<ru:GUID>9cc6b9fc-0b04-11e7-b13c-00e051000230</ru:GUID>
<ru:Params>
<core:Property name="Birthday">
<core:Value>1980-09-14T00:00:00</core:Value>
</core:Property>
<core:Property name="Duration">
<core:Value>0001-01-01T01:30:00</core:Value>
</core:Property>
</ru:Params>
</ru: BookAnAppointmentWithParams>
</soap:Body>
</soap:Envelope>
Посылаю данные в таком формате:
$this->client->connect->BookAnAppointmentWithParams(
compact(
'EmployeeID',
'PatientSurname',
'PatientName',
'PatientFatherName',
'Date',
'TimeBegin',
'Comment',
'Phone',
'Email',
'Address',
'Clinic',
'GUID',
'Params'
))->return
Собственно в compact находятся переменные с данными. Возникает проблема с передачей переменной Params.
Передаю её в таком виде:
$Params = compact('Birthday');
Но в 1С информация не поступает.
Вопрос следующий:
Правильно ли я отправляю параметр Params?
Если нет, то как будет правильно?