Как исправить ошибку «Несоответствие свойства и элемента данных XDTO: Свойство 'CurrentRowUse'» в 1С:Предприятие

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе с управляемыми формами в системе «1С:Предприятие» разработчики иногда сталкиваются с критической ошибкой: «Несоответствие свойства и элемента данных XDTO: Свойство 'CurrentRowUse'». Эта проблема коварна тем, что она может не проявляться в отладчике, возникая в момент между серверной процедурой ПриСозданииНаСервере и клиентской процедурой ПриОткрытии. Очистка кэша, перезагрузка сервера или переустановка прав пользователя в таких случаях обычно не помогают.

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

Выясним причину возникновения ошибки

Проанализируем техническую сторону вопроса. Ошибка напрямую связана с механизмом сериализации управляемой формы. Когда платформа «1С» открывает форму, она считывает её описание из XML-структуры. Свойство CurrentRowUse (в русскоязычном варианте конфигуратора — ИспользованиеТекущейСтроки) было внедрено в платформу начиная с версии 8.3.15. Оно определяет логику подсветки и использования текущей строки в группах элементов или таблицах.

Конфликт возникает в следующих ситуациях:

  1. Разрыв версий платформы: Конфигурация была обновлена или отредактирована на платформе версии 8.3.15 и выше, после чего её пытаются запустить на более старой платформе (например, 8.3.14). Старая платформа «не знает» о существовании свойства CurrentRowUse в XDTO-пакете описания формы и выдает ошибку.
  2. Режим совместимости: Если в расширении или основной конфигурации установлен режим совместимости ниже 8.3.15, но в XML-файле формы уже прописано данное свойство (например, после автоматического обновления типовой конфигурации).
  3. Ошибки при обновлении: При переходе на новые релизы (например, «Розница 2.3» или «ITIL 1.2») форма может получить новые свойства элементов, которые конфликтуют с текущими настройками отображения групп команд.

Способ 1. Визуальная коррекция свойств в конфигураторе

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

Выполним следующие шаги:

  1. Откроем проблемную форму в конфигураторе.
  2. Проанализируем дерево элементов формы. Особое внимание уделим группам элементов, группам команд и табличным частям.
  3. Найдем в палитре свойств параметр ИспользованиеТекущейСтроки (CurrentRowUse).
  4. Если для какой-то группы установлено значение, отличное от Авто, попробуем вернуть его в состояние Авто или Не использовать.

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Если платформа ниже 8.3.15, эта строка вызовет ошибку XDTO
    Элементы.ГруппаКоманднаяПанель.ИспользованиеТекущейСтроки = ИспользованиеТекущейСтроки.Использует;
КонецПроцедуры

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

Способ 2. Обновление технологической платформы

Проанализируем требования современных релизов конфигураций. Например, современные версии «1С:Розница» (начиная с 2.3.9) или «1С:Бухгалтерия 3.0» требуют платформу не ниже 8.3.16.1814. Если вы используете старую версию платформы (например, 8.3.14), система просто не сможет корректно инициализировать XDTO-пакеты, содержащие свойство CurrentRowUse.

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

Способ 3. «Хакерский» метод через редактирование XML-файлов

Бывают ситуации, когда обновить платформу невозможно (например, из-за требований другого ПО или ограничений инфраструктуры), а форма не открывается. В этом случае воспользуемся методикой прямой правки структуры конфигурации. Нам потребуется текстовый редактор с поддержкой массового поиска (например, Notepad++).

Разберем алгоритм по шагам:

  1. Выгрузим конфигурацию в файлы (Конфигурация -> Выгрузить конфигурацию в файлы...).
  2. Откроем папку с выгруженными файлами и выполним поиск по всем файлам Form.xml строки CurrentRowUse.
  3. Скорее всего, вы найдете фрагменты следующего вида: <CurrentRowUse>DontUse</CurrentRowUse>
  4. Удалим все упоминания этого тега во всех файлах форм. Именно значение DontUse чаще всего вызывает сбой на старых платформах.
  5. Загрузим конфигурацию обратно из файлов (Конфигурация -> Загрузить конфигурацию из файлов...).
  6. Выполним обновление конфигурации базы данных (F7).

Важно: Перед этой операцией обязательно создайте резервную копию базы данных (dt), так как прямое вмешательство в XML-структуру может привести к непредсказуемым последствиям.

Способ 4. Работа с расширениями конфигурации

Проанализируем ситуацию, когда основная конфигурация типовая и не менялась, но ошибка все равно возникает. Часто причина кроется в расширениях. Если вы заимствовали форму в расширение на новой платформе, она могла «подтянуть» свойство CurrentRowUse в описание расширения. Для автоматического выявления таких объектов можно использовать инструмент для поиска заимствованных форм в расширениях.

Рассмотрим план действий:

  1. Проверим, заимствована ли проблемная форма в какие-либо расширения.
  2. Попробуем временно отключить расширение и проверить открытие формы.
  3. Если без расширения форма открывается, значит, необходимо обновить структуру формы в самом расширении. Для этого удалим форму из расширения и заимствуем её заново.
  4. Убедитесь, что Режим совместимости расширения соответствует режиму совместимости основной конфигурации.

Способ 5. Изменение структуры элементов формы

В некоторых случаях (как отмечают пользователи на форумах) ошибка лечится физическим изменением иерархии элементов. Выясним, почему это помогает. Перемещение вложенных групп на верхний уровень или удаление стандартных групп команд с последующим их ручным созданием заставляет конфигуратор «пересобрать» XML-описание формы, очищая его от некорректных или избыточных тегов XDTO.

Попробуйте следующее:

Подведем итоги

Ошибка Несоответствие свойства и элемента данных XDTO: Свойство 'CurrentRowUse' — это типичный симптом «конфликта поколений» в 1С. Мы рассмотрели несколько путей решения: от простого обновления платформы до глубокой правки XML-структуры конфигурации. Самым надежным способом остается поддержание актуальной версии платформы, однако знание структуры XML-файлов формы позволяет оперативно решить задачу даже в нестандартных условиях.

← На главную