При организации обмена данными в рамках распределенной информационной базы могут возникать различные ситуации, приводящие к сообщениям об ошибках. Однако не все подобные ситуации являются ошибками в чистом виде: некоторые из них могут быть отнесены к штатным ситуациям, соответствующим протоколу обмена данными, некоторые - к неадаптированности конфигурации для работы в рамках распределенной информационной базе.
Сообщение обмена данными является документом XML, поэтому имеет смысл описать возможные ошибки, которые могут возникнуть во время чтения/записи сообщений обмена данными при использовании средств чтения/записи данных XML, предоставляемых платформой "1С:Предприятие 8". При работе с данными в формате XML может возникать множество различных ситуаций, однако в данной статье будут рассмотрены только те, которые так или иначе имеют отношение к обмену данными в рамках распределенной информационной базы.
Сообщение об ошибке | Описание ошибки |
Возможные пути исправления ошибки | |
Не установлен MS XML Core Services 4.0 | На компьютере не установлен Microsoft XML Core Services 4.0, используемый "1С:Предприятием 8" для работы с XML |
Установить Microsoft XML Core Services 4.0. При установке "1С:Предприятия 8" Microsoft XML Core Services 4.0 устанавливается автоматически | |
Ошибка разбора XML | Ошибка, возникающая при синтаксическом анализе данных XML в процессе чтения. Все ошибки, определенные в SAX2, трансформируются в данную ошибку, генерируемую платформой "1С:Предприятие 8" |
Проверить правильность оформления и синтаксис данных XML (см. http://www.w3.org/TR/REC-xml). | |
Ошибочный порядок записи XML | Методы записи содержимого документа XML вызываются в неправильном порядке. Например, запись атрибута вызывается после записи текста элемента. |
Выявить и исправить места некорректного порядка вызова методов | |
Текст XML содержит недопустимые символы | Записываемый текст XML содержит недопустимые символы. |
Текст XML должен соответствовать требованиям, изложенным в главе 2.2 рекомендации XML (см. http://www.w3.org/TR/REC-xml#charsets) | |
Недопустимое имя XML | Записываемое имя XML содержит недопустимые символы. |
Имя XML должно соответствовать требованиям, изложенным в главе 2.3 рекомендации XML (см. http://www.w3.org/TR/REC-xml#NT-Name) | |
Пустое значение URI допустимо только для пространства имен по умолчанию | Производится попытка записать соответствие пространства имен, в котором URI пространства имен, представленному пустой строкой, соответствует непустой префикс. |
Значение URI пространства имен должно соответствовать рекомендации Namespaces in XML (см. http://www.w3.org/TR/REC-xml-names) | |
Переопределение пространства имен по умолчанию для текущего элемента XML недопустимо | Текущий записываемый элемент не относится ни к какому пространству имен. Поэтому для него недопустимо определение непустого пространства имен по умолчанию. |
Переопределение пространства имен по умолчанию для элемента, не относящегося ни к какому пространству имен -запрещено | |
Ошибка преобразования данных XML | Ошибка возникает вследствие нарушения структуры передаваемых данных. При чтении данных XML платформой производится автоматическое определение типа получаемых данных, кроме случаев, когда тип данных указан при вызове операции чтения. Если структура данных XML не соответствует структуре данных, определяемых типом, то будет сгенерировано данное сообщение об ошибке. |
При обмене данными в рамках распределенной информационной базы используются штатные механизмы записи/чтения XML. Данная ошибка является следствием искажения сообщения обмена. Необходимо повторно получить сообщение от информационной базы - источника сообщения | |
Значения данного типа не могут быть представлены в XML |
Производится попытка записи в XML значения, для типа которого не определена процедура записи в XML. Или производится попытка чтения из XML значения неизвестного типа или типа, для которого не определена процедура чтения из XML. |
Ошибка может возникнуть при участии в обмене информационных баз, имеющих различные конфигурации. Однако при обмене данными в рамках распределенной информационной базы поддерживается идентичность конфигураций информационных баз, участвующих в обмене. Данная ошибка является следствием искажения сообщения обмена. Необходимо повторно получить сообщение от информационной базы - источника сообщения | |
Ошибка данных XML | Ошибка возникает при получении некорректных данных из источника XML или же в случаях неудачного считывания из базы данных содержимого объекта, данные которого должны быть прочитаны из источника XML: блокировка объекта или же отсутствие прав на чтение данного объекта. Например, чтение существующего элемента справочника: если элемент справочника является группой, а было прочитано то, что является элементом, будет сгенерирована данная ошибка. |
При обмене данными в рамках распределенной информационной базы используются штатные механизмы записи/чтения XML - ситуации, связанные с передачей некорректных данных, могут возникать только вследствие искажения сообщения обмена данными. В таком случае необходимо получить новое сообщение обмена данными от информационной базы - источника сообщения. |
Сообщение об ошибке | Описание ошибки |
Возможные пути исправления ошибки | |
Узел не является узлом распределенной ИБ | При вызове одного из методов встроенного языка, относящегося к распределенной ИБ, значение переданного параметра - узла плана обмена - не принадлежит плану обмена с установленным признаком "Распределенная информационная база". |
Необходимо убедиться в правильности передаваемого в метод параметра | |
Запись сообщения обмена данными не начата | В метод записи изменения данных передан в качестве параметра объект ЗаписьСообщенияОбмена, у которого не был вызван метод НачатьЗапись или был вызван метод завершения записи (ПрерватьЗапись, ЗакончитьЗапись). |
Убедиться, что вызов записи изменений вызывается в рамках процесса записи объекта ЗаписьСообщенияОбмена | |
Чтение сообщения обмена данными не начато | В метод чтения изменения данных передан в качестве параметра объект ЧтениеСообщенияОбмена, у которого не был вызван метод НачатьЧтение или был вызван метод завершения записи (ПрерватьЧтение, ЗакончитьЧтение). |
Убедиться, что вызов чтения изменений вызывается в рамках процесса чтения объекта ЧтениеСообщенияОбмена. | |
Номер сообщения распределенной ИБ должен быть больше номера ранее принятого сообщения | Производится попытка чтения старого (возможно, уже принятого) сообщения обмена данными. |
Необходимо произвести синхронизации номера принятого сообщения в текущем узле распределенной ИБ и номера отправленного сообщения в узле - источнике сообщения обмена данными. Этого можно достичь при помощи непосредственного изменения соответствующих реквизитов у узлов плана обмена, по которому осуществляется работа, или выполнить запись необходимого количества сообщений обмена данными в узле - источнике сообщения | |
Начальный образ может быть выгружен только во вновь созданную или пустую ИБ | По указанному месторасположению начального образа уже существует другая информационная база. |
Необходимо убедиться, что при создании начального образа указано место, в котором не существует информационной базы | |
Ошибка формата представления изменений | Структура и порядок следования элементов сообщения обмена данными не соответствуют требуемому. |
При обмене данными в рамках распределенной информационной базы используются штатные механизмы записи/чтения XML. Данная ошибка является следствием искажения сообщения обмена данными. Необходимо повторно получить сообщение от информационной базы - источника сообщения | |
Попытка приема изменений от неизвестной конфигурации | При попытке чтения сообщения обмена данными в рамках распределенной информационной базы обнаружено несоответствие конфигураций источника и приемника сообщения. |
По всей видимости, сообщение обмена было записано для информационной базы, имеющей конфигурацию, отличную от данной. Подобная ситуация может произойти в случае ручной настройки распределенной информационной базы. Если подчиненный узел распределенной информационной базы создавался путем объединения конфигурации информационной базы и конфигурации главного узла, то внутренняя идентификация объектов метаданных не будет соответствовать конфигурации главного узла, что приводит к данной ошибке. Рекомендуется создавать информационные базы подчиненных узлов либо при помощи создания начального образа, либо при помощи полной загрузки конфигурации в информационную базу | |
Искажены изменения конфигурации! | При попытке чтения сообщения обмена данными обнаружены искажения в передаваемых изменениях конфигурации. |
Необходимо получить от источника сообщения новое сообщение обмена данными | |
Конфигурация узла распределенной ИБ не соответствует ожидаемой! | Конфигурация текущей информационной базы была изменена по отношению к конфигурации информационной базы источника сообщения. |
В случае чтения сообщения обмена данными от подчиненного узла в главном узле данная ситуация является штатной и означает наличие изменений конфигурации, которые еще не были получены в подчиненном узле - источнике сообщения. Если же чтение сообщения от главного узла производится в подчиненном узле, то данная ситуация является следствием изменения конфигурации в подчиненном узле. Необходимо удостовериться, что обмен производится в правильно настроенной распределенной информационной базе (создание подчиненных узлов производилось при помощи рекомендованных способов) и в процессе работы не производилось изменения конфигурации подчиненной информационной базы (изменение в штатном режиме невозможно). Изменения конфигурации подчиненного узла может быть осуществлено только после отключения информационной базы от распределенной информационной базы - установка значения главного узла в Неопределено. В случае несанкционированного изменения конфигурации в подчиненном узле необходимо восстановить соответствие конфигураций путем полной загрузки конфигурации из главного узла | |
Изменения конфигурации не могут быть получены из подчиненного узла распределенной ИБ | При чтении сообщения обмена, полученного от подчиненного узла, в нем обнаружены изменения конфигурации. |
Подобная ситуация может возникнуть если имеет место искажение сообщения обмена, либо обмен производится в распределенной информационной базе с незавершенным процессом перестроения иерархии узлов. Необходимо убедится, что сообщение обмена получено без искажений и правильно заполнены узлы соответствующего плана обмена в обоих узлах распределенной информационной базы (источнике и приемнике сообщения). | |
Из главного узла распределенной ИБ получены изменения конфигурации. Необходимо выполнить обновление конфигурации базы данных. Обновление может быть выполнено в режиме Конфигуратор |
Из главного узла получены изменения конфигурации. |
Необходимо запустить систему в режиме Конфигуратор, произвести обновление конфигурации базы данных, после чего повторить чтение данного сообщения обмена в режиме 1С:Предприятие для завершения чтения сообщения. | |
Данные не входят в состав плана обмена | При чтении сообщения обмена обнаружены данные, не входящие в состав плана обмена. |
При обмене данными в рамках распределенной информационной базы используются штатные механизмы записи/чтения XML. Данная ошибка является следствием искажения сообщения обмена. Необходимо повторно получить сообщение от информационной базы - источника сообщения |
При чтении сообщения обмена производится автоматическая запись полученных изменений данных в информационную базу. Если в процессе записи данных происходит ошибка, то процесс чтения сообщения прерывается. Для определения в процедурах записи элементов данных (объектов и наборов записей) режима записи после загрузки из сообщения обмена существует свойство Загрузка. Для корректной работы в рамках распределенной информационной базы процедуры записи элементов данных должны быть написаны с учетом произвольного порядка загрузки данных из сообщений обмена (например, не должны выполняться проверки связанной с записываемым элементом данных информации.