1с ошибка при обмене

Обновлено: 04.07.2024

Если при обмене между базами данных наблюдаются следующие симптомы:

  • Процедуры обмена занимают неприемлемо много времени.
  • Процессы обмена периодически вылетают «по ошибке» и их приходится запускать заново.
  • Поиск ошибок обмена превращается в ужасающий квест.

То, скорее всего, вы используете конфигурацию «Конвертация данных». Неважно, какой редакции. Все отличие КД 2.0 от КД 3.0 в удобстве отладки и поиска ошибок (см. выше п. 3).

Чуть ниже, я расскажу вам, как навсегда забыть проблемы связанные со словом ‘обмен’.

История проблемы и как пришло осознание того, что нарыв созрел и его пора вскрывать.

Две нетиповых базы данных (условно обзовем их БД1 и БД2):

  • В направлении БД1 -> БД2 передаются данные о нормативно справочной информации (НСИ).
    Все справочники создаются только на стороне БД1.
  • В направлении БД2 -> БД1 передается информация по кассовым документам. Объем передаваемых данных составляет около 400 000 документов в сутки или, в пиковые периоды, до 150 документов в секунду.
  • Объем файла обмена в пределах 0.7 – 2 Гб. Файл обмена транслируется через файловый ресурс.

С какими проблемами сталкивались:

  • Общее время обмена, за сутки, составляло порядка 15-20 часов. До 20% времени уходило на формирование и передачу файла обмена (на стороне источника).
  • Часть, из этого, уходила на запись файла обмена на дисковое пространство.
  • Еще большая часть, уходила на запросы к БД в цикле (таков принцип работы конфигурации «КД»)
  • Периодически, приходилось «резать» файл обмена на части, и проталкивать его в КИС руками.
  • В КД 2.0 (КД 3.0), пока не загрузился весь файл обмена, обмен не может считаться успешно состоявшимся.
  • Поэтому, если при загрузке данных, по 400 тысячам документов, хотя бы с одним документом произошел сбой – весь процесс обмена приходилось запускать заново.
  • Поиск ошибок обмена превращался в неблагодарный труд (вспомните добрым словом КД 2.0).

Как решали проблему и что это дало на выходе.

Если кратко, то выполнили следующее:

Более подробно, все технические аспекты – это тема отдельной публикации (планируется отдельно).

Результаты оптимизации обмена данными:

  • Все вышеперечисленное позволило организовать обмен данными фактически в режиме online. Частота обмена данными составляет 10 минут.
  • Среднее время транспорта 400 000 документов составляет не более 2ч. 30 минут.
  • Возможные ошибки передачи данных не прерывают транспортировку всего потока.
  • Простота поиска и локализации ошибок кода конвертации.

Но, это тоже еще не все! Есть еще и вишенка на тортике!

Мы решили не останавливаться на достигнутом и поставили себе целью сократить суточное время обменов до полутора часов! Возможно ли это?!

Мы помним, что в моменты пиковых нагрузок, количество одновременно проводимых документов доходит до 150 шт/сек. При данной интенсивности записей очень большую роль играет повышение параллельности работы системы, а именно – сокращению времени транзакционных блокировок.

В ходе замеров выяснилось, что при проведении кассовых документов, среднее время платформенной транзакции составляет 4.5 секунды на один документ.

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

Вынеся, все данные процедуры, за пределы транзакции, мы добились сокращения времени платформенной транзакции до…… Внимание! – 0.003 сек!

И это еще не все! На момент написания статьи, мы работаем над тем, чтоб при пакетном проведении документов, все данные, необходимые для формирования наборов записей, получались одним пакетом запросов.

Этим самым мы ставим себе целью:

  • Разгрузить кластер серверов, снизив количество запросов с 400 000 до 288 запросов в сутки.
  • Снизить количество взаимоблокировок базы данных
  • И, в конечном итоге, снизим на порядок время проведения пакета документов.

В качестве резюме

Конфигурации «Конвертация данных 2.0» (КД 3.0) – отличные универсальные инструменты. Но, они крайне не готовы к работе с регулярными и большими объемами данных.

Сбор необходимых данных (одним запросом) для последующей online-передачи, может быть решением проблемы.

При пакетном проведении документов:

Получение данных (необходимых для формирования набора записей), производим одним запросом, с последующей передачей в документ-объект.

Данная методика позволяет повысить производительность системы в тысячу и более раз.

Ну например обрабатывать возникающую ошибку самостоятельно, при помощи конструкции Попытка - Исключение - КонецПопытки

(1) тогда придется всю выгрузку описывать в таких конструкциях, и необходимо заранее самостоятельно предполагать, где может возникнуть ошибка

Чисто теоретически, в принципе, во внешней обработке можно установить обмен в режиме загрузки данных - всё бесконтрольно принимается "как есть".

А можно описать структуру загружаемых данных так, чтобы было понятно, загружено значение из файла обмена или нет. Незагруженные значения отрабатывать до записи данных в базу.

Тогда попытка-исключение не понадобятся

(4) вот это я и видел в типовых, только в какой момент это описать и куда, если обработка с нуля написана, да и планов обмена нет.

(5) это интересно, то есть если структура обязательных полей не заполнена, то объект не записывать а базу?

(3) всего то нужно несколько попыток. Первая при получении данных с сервиса, вторая при записи документа.

(6) Не зная алгоритмы обработки - сложно что-либо подсказать. Если обработка "с нуля" - то нужно найти место в алгоритме, где объект записывается и там внести изменение (запись через попытку, а если исключение - регистрация ошибки в протоколе обмена и запись через "Объект.ОбменДанными.Загрузка = Истина;". Как-то вот так.

(8) (9) а что если ошибка типа "Поле объекта не обнаружено" которая возникает динамически, за счет неверного выбора элемента пользователем

(10) Если это json то без проблем можете прочитать в соответствие и проверять наличие свойства перед обработкой.

(11) Если это XML то можно через фабрику XDTO прочитать, на выходе будет ОбъектXDTO у которого есть метод Свойства(), который выводит текущие свойства у объекта. Так что тоже можно исключить подобные ошибки

(10) Падать по ошибке такого рода - это нормальная практика. fail fast называется. Сразу увидел, сразу разобрался, сразу починил и живешь дальше без проблем. В противном случае у тебя возникает гамбуз отложенных проблем с высокими рисками просрочить критичные.

Наведи порядок в своей работе используя конфигурацию 1C "Управление IT-отделом 8"

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

Общие ошибки, возникающие в 1С при работе с 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.

Ошибочный порядок записи XML

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

Текст XML содержит недопустимые символы

Записываемый текст XML содержит недопустимые символы.

Текст XML должен соответствовать требованиям к XML.

Недопустимое имя XML

Записываемое имя XML содержит недопустимые символы.

Имя XML должно соответствовать требованиям к XML.

Пустое значение URI допустимо только для пространства имен по умолчанию

Производится попытка записать соответствие пространства имен, в котором URI пространства имен, представленному пустой строкой, соответствует непустой префикс.

Значение URI пространства имен должно соответствовать рекомендации Namespaces in XML.

Переопределение пространства имен по умолчанию для текущего элемента XML недопустимо

Текущий записываемый элемент не относится ни к какому пространству имен. Поэтому для него недопустимо определение непустого пространства имен по умолчанию.

Переопределение пространства имен по умолчанию для элемента, не относящегося ни к какому пространству имен – запрещено.

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

Ошибка возникает вследствие нарушения структуры передаваемых данных.

Значения данного типа не могут быть представлены в XML

Производится попытка записи в XML значения, для типа которого не определена процедура записи в XML. Или производится попытка чтения из XML значения неизвестного типа или типа, для которого не определена процедура чтения из XML.

Ошибка данных XML

Ошибка возникает при получении некорректных данных из источника XML или же в случаях неудачного считывания из базы данных содержимого объекта, данные которого должны быть прочитаны из источника XML: блокировка объекта или же отсутствие прав на чтение данного объекта.

Например, чтение существующего элемента справочника: если элемент справочника является группой, а было прочитано то, что является элементом, будет сгенерирована данная ошибка.

Если вышеперечисленные способы не привели к устранению ошибки, то необходимо проверить целостность данных информационной базы.

Ситуации, возникающие при обмене данными в рамках распределенной информационной базы в 1С

Узел не является узлом распределенной ИБ

При вызове одного из методов встроенного языка, относящегося к распределенной ИБ, значение переданного параметра - узла плана обмена - не принадлежит плану обмена с установленным признаком "Распределенная информационная база".

Необходимо убедиться в правильности передаваемого в метод параметра.

Начальный образ может быть выгружен только во вновь созданную или пустую ИБ

По указанному месторасположению начального образа уже существует другая информационная база.

Необходимо убедиться, что при создании начального образа указано место, в котором не существует информационной базы.

Ошибка формата представления изменений

Попытка приема изменений от неизвестной конфигурации

Искажены изменения конфигурации!

Конфигурация узла распределенной ИБ не соответствует ожидаемой!

Изменения конфигурации не могут быть получены из подчиненного узла распределенной ИБ

Из главного узла распределенной ИБ получены изменения конфигурации

Из главного узла получены изменения конфигурации.

Данные не входят в состав плана обмена

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

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

Общие ошибки, возникающие в 1С при работе с 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.

Ошибочный порядок записи XML

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

Текст XML содержит недопустимые символы

Записываемый текст XML содержит недопустимые символы.

Текст XML должен соответствовать требованиям к XML.

Недопустимое имя XML

Записываемое имя XML содержит недопустимые символы.

Имя XML должно соответствовать требованиям к XML.

Пустое значение URI допустимо только для пространства имен по умолчанию

Производится попытка записать соответствие пространства имен, в котором URI пространства имен, представленному пустой строкой, соответствует непустой префикс.

Значение URI пространства имен должно соответствовать рекомендации Namespaces in XML.

Переопределение пространства имен по умолчанию для текущего элемента XML недопустимо

Текущий записываемый элемент не относится ни к какому пространству имен. Поэтому для него недопустимо определение непустого пространства имен по умолчанию.

Переопределение пространства имен по умолчанию для элемента, не относящегося ни к какому пространству имен – запрещено.

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

Ошибка возникает вследствие нарушения структуры передаваемых данных.

Значения данного типа не могут быть представлены в XML

Производится попытка записи в XML значения, для типа которого не определена процедура записи в XML. Или производится попытка чтения из XML значения неизвестного типа или типа, для которого не определена процедура чтения из XML.

Ошибка данных XML

Ошибка возникает при получении некорректных данных из источника XML или же в случаях неудачного считывания из базы данных содержимого объекта, данные которого должны быть прочитаны из источника XML: блокировка объекта или же отсутствие прав на чтение данного объекта.

Например, чтение существующего элемента справочника: если элемент справочника является группой, а было прочитано то, что является элементом, будет сгенерирована данная ошибка.

Если вышеперечисленные способы не привели к устранению ошибки, то необходимо проверить целостность данных информационной базы.

Ситуации, возникающие при обмене данными в рамках распределенной информационной базы в 1С

Узел не является узлом распределенной ИБ

При вызове одного из методов встроенного языка, относящегося к распределенной ИБ, значение переданного параметра - узла плана обмена - не принадлежит плану обмена с установленным признаком "Распределенная информационная база".

Необходимо убедиться в правильности передаваемого в метод параметра.

Начальный образ может быть выгружен только во вновь созданную или пустую ИБ

По указанному месторасположению начального образа уже существует другая информационная база.

Необходимо убедиться, что при создании начального образа указано место, в котором не существует информационной базы.

Ошибка формата представления изменений

Попытка приема изменений от неизвестной конфигурации

Искажены изменения конфигурации!

Конфигурация узла распределенной ИБ не соответствует ожидаемой!

Изменения конфигурации не могут быть получены из подчиненного узла распределенной ИБ

Из главного узла распределенной ИБ получены изменения конфигурации

Из главного узла получены изменения конфигурации.

Данные не входят в состав плана обмена

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

Читайте также: