1C-Company / 1c-edt-issues

Пространство для пожеланий и обсуждения ошибок 1C:Enterprise Development Tools
https://edt.1c.ru/
140 stars 9 forks source link

Некорректно импортируется свойство "Поведение" группы формы #1531

Open pravets opened 2 months ago

pravets commented 2 months ago

Описание ошибки

Для поля "Поведение" формы может быть 4 значения - Авто, Сворачиваемая, Всплывающая, Обычное В xml конфигуратора и EDT это тег <behavior> Соответствие значения свойства значению значению тега: Авто - Auto Сворачиваемая - Collapsible Всплывающая - PopUp Обычное - Тег отсутствует в файле

И со случаем когда Поведение "Обычное" и связана ошибка. В экспортируемых файлах в формате конфигуратора тег behavior отсутствует, а ЕДТ при импорте считает, если тега нет, то поведение должно быть "Авто". Как итог после цикла импорт/экспорт получаем тысячи расхождений в формах, которых быть не должно.

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

Как воспроизвести

  1. Импортировать проект из конфигурации
  2. Экспортировать обратно в конфигурацию
  3. Сравнить с исходным cf

Скриншоты

Состояние в конфигурации перед импортом: image

Как EDT это импортирует: image

Ожидаемое поведение

При отсутствии тега behavior в файле xml конфигуратора в свойство Поведение должно попадать значение "Обычное"

Лог рабочей области

edt.log

Версия 1С:EDT

2023.3.6, 2024.1.0

Операционная система

Windows

Версия платформы 1С:Предприятие 8

8.3.24.1586, 8.3.24.1691

Установленные плагины

No response

Дополнительная информация

На 2023.1.4 ошибке НЕТ

NikitaMikhaylovSB commented 2 months ago

А на 2024.1.0 воспроизводится?

pravets commented 2 months ago

А на 2024.1.0 воспроизводится?

сейчас буду проверять. не хотел на тестовую версию переходить, но, возможно, придется

pravets commented 2 months ago

А на 2024.1.0 воспроизводится?

Воспроизвелось на 2024.1.0 + 8.3.24.1691

vadimeg commented 2 months ago

Добрый день! Вот выгрузка конфигурации, где первая группа имеет тип Обычное, а вторая Авто. Выгрузки из EDT и конфигуратора совпадают:

    <ChildItems>
        <UsualGroup name="Group1" id="1">
            <Behavior>Usual</Behavior>
            <ExtendedTooltip name="Group1ExtendedTooltip" id="2"/>
        </UsualGroup>
        <UsualGroup name="Group2" id="3">
            <ExtendedTooltip name="Group2ExtendedTooltip" id="4"/>
        </UsualGroup>
    </ChildItems>

Для "Обычное" выгружается тэг Usual. Пробовал импортировать и экспортировать в обе стороны, все работает корректно. Можете прислать код вашей формы?

При отсутствии тега behavior в файле xml конфигуратора в свойство Поведение должно попадать значение "Обычное"

Это не соответствует поведению конфигуратора. Если в платформенной выгрузке нет Behavior, то будет значение Авто.

Экспортировал конфигурацию в конфигуратор, где поменял значения - первая группа стала Авто, а вторая - Обычное. При импорте в EDT ожидаемое поведение мержа:

image

pravets commented 2 months ago

Для "Обычное" выгружается тэг Usual.

Перепроверил выгрузку конфигуратора. Это ошибка конфигуратора, а не EDT. 22, 23 платформы выгружают Usual, а 24 платформа теряет этот тег при выгрузке. Перепроверю еще 25 платформу и буду писать багрепорты разработчикам платформы.

upd: 25 платформа также теряет тег behavior для значения Usual при выгрузке

Можете прислать код вашей формы?

Код моей формы - вся УНФ целиком. ломает все формы без исключения.

pravets commented 2 months ago

behavior.zip выгрузка конфигуратора на 24 платформе.zip behavior-ib.zip

Провел эксперимент. Во вложении архив рабочей области ЕДТ 2023.3.6 с гит репозиторием. В проекте примитивная конфигурация с одной обработкой в которой одна форма. На форме 4 группы. В изначальной конфигурации откуда шел импорт группы были с поведением Авто, Обычное, Сворачиваемая и Всплывающая

На 24 платформе криво импортировалась группа Обычное с заменой поведения на Авто. (при этом при экспорте данной конфигурации в файлы через конфигуратор поведение всех групп выгружается корректно) При замене через ЕДТ поведения с Авто на Обычное ЕДТ удаляет тег behavior, то есть для поведения Обычное ЕДТ предполагает отсутствие тега в файле. Затем я принудительно прописал тег behavior Usual для группы. В ЕДТ сохранилось поведение Обычное И последним коммитом я удалил тег behavior для группы с поведением Обычное и Авто. В ЕДТ группы стали с поведением Обычное.

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

Дополнение: попробовал импорт из xml-файлов - все группы импортировались визуально корректно, ну у группы с поведением Обычное отсутствует тег behavior. Этот момент уже не отражен а репозитории из вложения.

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

vadimeg commented 2 months ago

Я проверял на версиях 8.3.24.1646 и 8.3.25.1360. У вас 24-й конфигуратор поновее, возможно внесли регрессию. Если будете создавать баг на платформу, то, если не сложно, напишите здесь номер бага.

pravets commented 2 months ago

Я провел тест на последних версиях платформ начиная с 17-го релиза и заканчивая 25-ым.

Результаты: Платформа 17, 18, 19 - тег <behavior>Usual</behavior> отсутствует в выгрузке Платформа 20, 21, 22, 23 - тег появляется в выгрузке Платформа 24, 25 - тег снова отсутствует в выгрузке

Проверял на типовой УНФ 1.6.27.178

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

Отправил обращение в 1С, номер обращения HL-889622, ожидаю рассмотрения и присвоения кода ошибки в случае принятия.

Часть багрепорта уходит на сторону платформы, но замечанием ЕДТ остается то, что отсутствие тега <behavior> интерпретируется как поведение Обычное, а не Авто. Могу предположить, что так сложилось исторически, так как платформа ранее не выгружала тег для поведения Обычное.

240596448 commented 3 weeks ago

Поведение зависит от совместимости конфигурации. Начиная с 8.3.20 все работает корректно. До совместимости 8.3.19 на платформах 24 и 25 - сломано.

pravets commented 3 weeks ago

Оказывается дело в ключе --ignore-unresolved-refs - с ним выгрузка в части проблемного свойства проходит корректно.

я верно понял, что с этим ключом поле Поведение на 25-й платформе начинает выгружаться корректно?

240596448 commented 2 weeks ago

я верно понял, что с этим ключом поле Поведение на 25-й платформе начинает выгружаться корректно?

Не, я ввел в заблуждение. 1С для разных инструментов по разному определяет совместимость (где-то из Основной конфигурации, где-то из БД) и при выполнении тестов иногда ошибаешься