Как правильно определить изменения свойств элементов формы в отчете сравнения 1С?

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

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

Причины неоднозначности и иллюзии ошибок в отчете сравнения

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

  1. Смысл стрелок в окне сравнения и объединения: В механизме объединения конфигураций синие стрелки показывают не хронологическое направление («было в прошлом → стало в настоящем»), а направление действия по переносу данных. Стрелка указывает, откуда и куда будут применены данные: взять ли значение из файла конфигурации или оставить текущее значение основной конфигурации.
  2. Порядок выбора конфигураций при сравнении: Формирование любого отчета сравнения строится строго в отношении «Первая конфигурация → Вторая конфигурация». Если при вызове диалога первой выбрана измененная база, а второй — исходный эталон, то итоговые стрелки перехода значений разворачиваются в противоположную сторону по отношению к реальной хронологии доработок.
  3. Значения по умолчанию и авторасчет: У многих свойств элементов управляемых форм булевого типа существует не только состояние Истина или Ложь, но и системное значение Авто. Если в исходной конфигурации параметр был установлен по умолчанию платформой, а разработчик жестко задал конкретное булево значение, отчет зафиксирует изменение формулировки свойства, хотя в пользовательском интерфейсе поведение элемента может остаться прежним.

Проверенные способы точной проверки изменений формы

Чтобы избежать ошибок при анализе изменений и точно понимать, какое значение было изначально, а какое стало в новой версии, применим надежные практические приемы.

1. Детальное окно сравнения форм

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

2. Ручное сопоставление через палитру свойств

Если требуется предельная точность, откроем параллельно две конфигурации (например, основную рабочую и эталонную конфигурацию поставщика из файла в отдельном окне конфигуратора). Выделим нужный элемент формы и сопоставим значение реквизита в палитре свойств напрямую.

3. Строгое соблюдение порядка конфигураций при сравнении

При настройке сравнения всегда выбираем в качестве первой конфигурации старую (исходную), а в качестве второй — новую (измененную). В таком случае запись вида Значение1 -> Значение2 будет строго соответствовать направлению от исходного состояния к новому.

Факторы, переопределяющие свойства элементов формы в рантайме

Выясним причину, почему даже при правильной установке свойства в конфигураторе элемент формы на практике может вести себя иначе. Свойство ТолькоПросмотр элемента формы зависит от нескольких уровней платформы:

  1. Программный код формы: Значение, установленное в редакторе формы, может быть мгновенно перетерто при инициализации формы. Проанализируем код в обработчиках событий:
    
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
        // Значение из свойств конфигуратора может быть переопределено:
        Элементы.Ответственный.ТолькоПросмотр = Ложь;
    КонецПроцедуры
    
    Также переопределение может происходить в событиях ПриОткрытии, ПриЧтенииНаСервере или в типовых процедурах подсистем БСП.
  2. Наследование доступности от родителей: Поле ввода блокируется, если установлено свойство ТолькоПросмотр для всей формы в целом или для группы элементов, в которую входит поле.
  3. Ограничения прав доступа: Если у текущего пользователя нет прав на изменение данных соответствующего реквизита объекта (на уровне ролей или ограничений RLS), платформа автоматически переводит элемент в режим только для чтения независимо от настроек самого элемента.

Альтернативный способ анализа через выгрузку в XML

Рассмотрим альтернативный способ, который полностью исключает неоднозначность интерфейса конфигуратора. Выгрузим конфигурации в файлы через стандартное меню выгрузки. Описания управляемых форм сохраняются в структурированном текстовом формате XML. С помощью любой внешней программы сравнения файлов сопоставим файлы форм. В структуре XML явным образом видно добавление или модификацию параметров элемента, например строк с тегами ReadOnly, что дает стопроцентную гарантию точности проведенного аудита изменений.

← На главную