При работе с управляемыми формами в системе «1С:Предприятие» разработчики иногда сталкиваются с критической ошибкой: «Несоответствие свойства и элемента данных XDTO: Свойство 'CurrentRowUse'». Эта проблема коварна тем, что она может не проявляться в отладчике, возникая в момент между серверной процедурой ПриСозданииНаСервере и клиентской процедурой ПриОткрытии. Очистка кэша, перезагрузка сервера или переустановка прав пользователя в таких случаях обычно не помогают.
В этой статье мы подробно разберем природу данной ошибки, выясним, почему она возникает именно сейчас, и рассмотрим пошаговые алгоритмы её устранения, основываясь на практическом опыте специалистов.
Проанализируем техническую сторону вопроса. Ошибка напрямую связана с механизмом сериализации управляемой формы. Когда платформа «1С» открывает форму, она считывает её описание из XML-структуры. Свойство CurrentRowUse (в русскоязычном варианте конфигуратора — ИспользованиеТекущейСтроки) было внедрено в платформу начиная с версии 8.3.15. Оно определяет логику подсветки и использования текущей строки в группах элементов или таблицах.
Конфликт возникает в следующих ситуациях:
CurrentRowUse в XDTO-пакете описания формы и выдает ошибку.Рассмотрим самый простой способ, который помогает в большинстве случаев, если у вас есть доступ к конфигуратору и вы можете редактировать форму. Нам необходимо найти элемент, который вызывает конфликт, и сбросить его настройки.
Выполним следующие шаги:
ИспользованиеТекущейСтроки (CurrentRowUse).Авто, попробуем вернуть его в состояние Авто или Не использовать.Иногда ошибка воспроизводится программно. Проанализируем пример кода, который может приводить к падению формы:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Если платформа ниже 8.3.15, эта строка вызовет ошибку XDTO
Элементы.ГруппаКоманднаяПанель.ИспользованиеТекущейСтроки = ИспользованиеТекущейСтроки.Использует;
КонецПроцедуры
Если вы обнаружили подобный код, его следует закомментировать или добавить проверку версии платформы.
Проанализируем требования современных релизов конфигураций. Например, современные версии «1С:Розница» (начиная с 2.3.9) или «1С:Бухгалтерия 3.0» требуют платформу не ниже 8.3.16.1814. Если вы используете старую версию платформы (например, 8.3.14), система просто не сможет корректно инициализировать XDTO-пакеты, содержащие свойство CurrentRowUse.
Рекомендация: Обновите платформу на сервере и всех клиентских рабочих станциях до версии, рекомендованной производителем конфигурации. Это самый правильный и стабильный метод решения проблемы.
Бывают ситуации, когда обновить платформу невозможно (например, из-за требований другого ПО или ограничений инфраструктуры), а форма не открывается. В этом случае воспользуемся методикой прямой правки структуры конфигурации. Нам потребуется текстовый редактор с поддержкой массового поиска (например, Notepad++).
Разберем алгоритм по шагам:
Form.xml строки CurrentRowUse.
<CurrentRowUse>DontUse</CurrentRowUse>
DontUse чаще всего вызывает сбой на старых платформах.Важно: Перед этой операцией обязательно создайте резервную копию базы данных (dt), так как прямое вмешательство в XML-структуру может привести к непредсказуемым последствиям.
Проанализируем ситуацию, когда основная конфигурация типовая и не менялась, но ошибка все равно возникает. Часто причина кроется в расширениях. Если вы заимствовали форму в расширение на новой платформе, она могла «подтянуть» свойство CurrentRowUse в описание расширения. Для автоматического выявления таких объектов можно использовать инструмент для поиска заимствованных форм в расширениях.
Рассмотрим план действий:
В некоторых случаях (как отмечают пользователи на форумах) ошибка лечится физическим изменением иерархии элементов. Выясним, почему это помогает. Перемещение вложенных групп на верхний уровень или удаление стандартных групп команд с последующим их ручным созданием заставляет конфигуратор «пересобрать» XML-описание формы, очищая его от некорректных или избыточных тегов XDTO.
Попробуйте следующее:
CurrentRowUse.Ошибка Несоответствие свойства и элемента данных XDTO: Свойство 'CurrentRowUse' — это типичный симптом «конфликта поколений» в 1С. Мы рассмотрели несколько путей решения: от простого обновления платформы до глубокой правки XML-структуры конфигурации. Самым надежным способом остается поддержание актуальной версии платформы, однако знание структуры XML-файлов формы позволяет оперативно решить задачу даже в нестандартных условиях.