1с mergesettings обновление как пользоваться сохраненными настройками
The following features are supported:
Method Summary
Methods inherited from interface org.eclipse.emf.ecore.EObject
Methods inherited from interface com._1c.g5.v8.bm.core.IBmObject
Method Detail
getMergeRule
Returns the value of the 'Merge Rule' attribute. The literals are from the enumeration MergeRule . * The rule to be used during a merge process. This rule could be changed by the user in case if isCanBeMerged() is true. The values for overriding should be taken from the getAvailableMergeRules()
setMergeRule
getDefaultMergeRule
Returns the value of the 'Default Merge Rule' attribute. The literals are from the enumeration MergeRule . * The default merge rule calculated for the current node during the comparison process.
setDefaultMergeRule
getAvailableMergeRules
Returns the value of the 'Available Merge Rules' attribute list. The list contents are of type MergeRule . The literals are from the enumeration MergeRule . * The list of merge rules available for the node.
isMustBeMerged
Returns the value of the 'Must Be Merged' attribute. * Tells whether the node will be merged during the merge process using the corresponding merge rule.
This setting could be changed by the user in case if isCanBeMerged() is true.
setMustBeMerged
isCanBeMerged
setCanBeMerged
isHaveChildrenExcludedFromMerge
Returns the value of the 'Have Children Excluded From Merge' attribute. * Tells whether the node contains children excluded from merge. More technically, this flag is true when the node contains canBeMerged-children that are not mustBeMerged.
setHaveChildrenExcludedFromMerge
isMergeRuleSetByUser
Returns the value of the 'Merge Rule Set By User' attribute. * Tells whether the merge rule set by the user and therefore shouldn't be changed by merge rule's building algorithms.
setMergeRuleSetByUser
getOrderRule
Returns the value of the 'Order Rule' containment reference. * The rule to be used for ordering of child elements on merge. Not null only for comparison nodes that support ordering of their children.
setOrderRule
getCustomSettings
Returns the value of the 'Custom Settings' containment reference. * Additional custom settings that extend standard merge settings for specific node types.
Задача: Необходим механизм, позволяющий сохранять произвольные пользовательские данные (настройки). Настройки относятся к внешней обработке, вариант с изменением конфигурации не рассматривается. План видов характеристик трогать тоже нет желания.
В рамках заметки предложено два вариант работы с настройками пользователя.
Ваиант 1
Сохранение настроек:
ИмяНастройки = "ТЕСТ" ;
ЗначениеНастройки = Новый Структура ( "Это настройки произвольного типа, к примеру структура" , "" );
СохранитьЗначение ( ИмяНастройки , ЗначениеНастройки ) ;
- ИмяНастройки - ключ настроек, тип “строка”.
- значение - значение произвольного типа, возможность заманчивая, но не стоит слишком увлекаться и сохранять все подряд.
Восстановление настроек:
ИмяНастройки = "ТЕСТ" ;
ЗначениеНастройки = ВосстановитьЗначение ( ИмяНастройки );
Если ЗначениеНастройки = Неопределено Тогда
Сообщить ( "Нет настройки с ключем ТЕСТ!" );
КонецЕсли;
- ИмяНастройки - ключ настройки, тип “строка”
- возвращает значение произвольного типа, сохраненное ранее.Если восстановить не удалось, возвращает “Неопределено”
Плюсы
- прост в использовании
- возможно сохранить настройки произвольного типа текущего пользователя в текущей информационной базе
Минусы
Только толстый клиент
Вариант 2
Использование объекта ХранилищеОбщихНастроек. Считаю этот вариант наиболее удобным и гибким.
Объект доступен в глобальном контексте. Содержит следующие методы:
Сохранение настроек:
// ключи могут быть произвольными строками
КлючОбъекта = " MIKO " ;
КлючНастроек = "ПанельТелефонии" ;
// настройки могут быть произвольного типа
Настройки = Новый Структура ( "Это настройки произвольного типа, к примеру структура" , "" );
ИмяПользователя = ИмяПользователя ();
// имя пользователя - пользователь владелец настроек, если параметр не указать,
// то настройки будут сохранены для ТЕКУЩЕГО пользователя
ИмяПользователя = ИмяПользователя ();
ХранилищеОбщихНастроек .C охранить ( КлючОбъекта , КлючНастроек , Настройки , , ИмяПользователя );
Под пользователем понимается именно пользователь информационной базы! Пример получения имени текущего пользователя:
// получим имя
ИмяТекущегоПользователя = ИмяПользователя ();
// в типовых конфигурация используется справочник "Пользователи"
// в этом справочнике в стандартном реквизите "Код" обычно
// хранят информацию по имени пользователя, пример получения имени:
ИмяПользователя = Справочники . Пользователи . НайтиПоНаименованию ( "Администратор" ). Код ;
// обычно "Код", для этого справочника - строка фиксированной длинны, потому вероятно разумно обрезать пробелы справа:
ИмяПользователя = СокрП ( ИмяПользователя );
Восстановление настроек:
КлючОбъекта = " MIKO " ;
КлючНастроек = "ПанельТелефонии" ;
ВладелецНастроек = ИмяПользователя ();
// Для восстановления настроек необходимо воспользоваться функцией Загрузить
СтруктураНастроек = Неопределено;
Попытка
СтруктураНастроек = ХранилищеОбщихНастроек . Загрузить ( КлючОбъекта , КлючНастроек ,, ВладелецНастроек );
// если настроек нет, то будет возвращено значение "Неопределено"
Исключение
Сообщить ( "Нет прав на восстановление настроек." );
КонецПопытки;
Если СтруктураНастроек = Неопределено Тогда
Сообщить ( "Не вышло восстановить настройки!" );
КонецЕсли;
ВладелецНастроек - это имя пользователя, владельца настроек. Параметр очень важный.
Настройки других пользователей могут получать ТОЛЬКО пользователи с расширенными правами.
Необходимо право "АдминистрированиеДанных".
Пробелы справа игнорируются!
Плюсы
- Возможно работать со значениями настроек других пользователей.
- Доступность: Сервер, толстый клиент, внешнее соединение.
Получение всех ключей настроек по ключу объекта
// Пример получения всех настроек по ключу объекта
КлючОбъекта = "MIKO" ;
ВладелецНастроек = ИмяПользователя ();
Попытка
// возвращает список значений
// элементы списка - ключи настроек
СтруктураНастроек = ХранилищеОбщихНастроек . ПолучитьСписок ( КлючОбъекта , ВладелецНастроек );
Исключение
Сообщить ( "Нет прав на восстановление настроек." );
КонецПопытки;
Подведем итог
В рамках этой заметки я рассказал о двух вариантах работы с настройками пользователя. Пробуйте :).
На Инфостарте присутствует довольно большое количество хороших статей про обновление нетиповых конфигураций, как на поддержке, так и без. Надеюсь, что данная статья также будет полезна тем, у кого еще не достаточно опыта для обновления нетиповых конфигураций, особое внимание уделено обновлению нетиповых форм.
Рассмотрим обновление на примере нетиповой конфигурации УПП 1.3 находящейся на поддержке с возможностью изменения с релиза 1.3.61.2 на релиз 1.3.62.1. Так как конфигурация сама по себе довольно тяжелая, то это накладывает некоторые особенности, в частности, не всегда получается открыть в одном конфигураторе несколько окон сравнения конфигурации.
Для обновления я использую две одинаковые копии базы данных старого релиза. В одной из них выполняю подготовку *.cf для обновления, назовем ее, например, for_updating. Другая база остается не тронутой и служит только как вспомогательная, для сравнения конфигураций, назовем ее base. В принципе, в качестве вспомогательной может использоваться конфигурация рабочей базы.
В базе for_updating выполняем «Конфигурация» – «Поддержка» – «Обновить конфигурацию», в открывшемся окне выбираем *.cfu нового релиза. Начинается процедура обновления, в результате которой появляется окно обновления.
Нажать кнопку «Выполнить», на данном этапе нет пока необходимости что-либо смотреть, так как целью является лишь получение конфигурации поставщика нового релиза.
В процессе обновления может появиться окно «Неразрешимые ссылки», нажимаем «Продолжить». О причинах появления данного окна поговорим ниже.
Откроется окно «Настройка правил поддержки» - для новых объектов (верхний раздел) с обеих сторон ставим «Объект редактируется с сохранением поддержки», для существующих объектов поставщика (нижний раздел) во всех четырех местах ставим флаг «Сохранять текущий режим», нажимаем «ОК».
Произошло обновление основной конфигурации. Сама по себе основная конфигурация на данном этапе нам не нужна, цель – получение новой конфигурации поставщика. Поэтому основную конфигурацию не сохраняем, конфигурацию базы данных не обновляем.
Выполняем «Конфигурация» – «Поддержка» – «Настройка поддержки». В открывшемся окне выбираем «Сохранить в файл» и сохраняем в *.cf конфигурацию поставщика нового релиза.
Основная конфигурация в том виде, в котором она на данный момент имеется, нам не нужна. Закрываем конфигурацию. «Конфигурация» - «Закрыть конфигурацию». Отказываемся от сохранения изменений.
В конфигурации для сравнения base запускаем сравнение конфигурации поставщика (старый релиз) и конфигурации поставщика из файла (новый релиз).
Таким образом, мы увидим только те изменения, которые будут выполнены в конфигурации при обновлении на новый релиз.
В базе for_updating снова запускаем обновление конфигурации через поддержку «Конфигурация» – «Поддержка» – «Обновить конфигурацию», в открывшемся окне выбираем *.cfu нового релиза. Начинается процедура обновления, в результате которой появляется окно обновления.
При нажатии на кнопку «Фильтр» откроется окно «Настройка фильтров просмотра». В данном окне устанавливаем флаг «Показывать только дважды измененные свойства».
При обновлении без нашего вмешательства происходит следующее:
- - объект не изменен нами, изменен в новом релизе – обновляется из нового релиза;
- - объект изменен нами, не изменен в новом релизе – остается наш объект;
- - объект изменен нами, изменен в новом релизе – это и есть дважды измененный объект, если ничего не менять – он загрузится из нового релиза.
Таким образом, наиболее пристальное внимание следует уделить именно дважды измененным объектам, их и будем рассматривать.
В данном примере изменено несколько общих модулей, в том числе и общий модуль « УчетНДС ».
По умолчанию в окне обновления показаны отличия основной и новой конфигурации поставщика от старой конфигурации поставщика.
Если посмотреть различия конфигураций в общем модуле «УчетНДС», то мы увидим следующую картину:
Если же сравнить эти модули в базе для сравнения base , то картина будет другая:
Очевидно, что функции «СобратьДанныеДляПечатиИсправленияСчетаФактуры», «СобратьДанныеДляПечатиКорректировочногоСчетаФактуры» и прочие содержат наши доработки, но не меняются при обновлении, а значит, нет смысла тратить время на их просмотр и анализ.
Поэтому, выполняя по процедурное обновление с выделенных процедур и функций можно снять флаги:
Многие скажут, что увидеть отличия старой конфигурации поставщика от новой можно с помощью изменения настройки фильтров просмотра в текущем конфигураторе, не используя сравнение конфигураций в базе base .
Однако, как показывает практический опыт это не так, процедуры и функции все равно отображаются в окне сравнения модулей, даже при установленном фильтре «показывать отличия новой конфигурации поставщика от старой конфигурации поставщика».
Сделав не большое мысленное усилие, выявим дважды измененные процедуры и функции, только они будут нуждаться в доработках после процесса объединения. С данными процедурами и функциями нужно определиться, что легче:
- - либо взять процедуру или функцию из новой конфигурации поставщика и потом, после объединения, внести наши доработки;
- - либо снять флаг обновления, тем самым сохранив наши доработки, и уже потом добавить нужный код из конфигурации поставщика.
Объединение с приоритетом основной конфигурации и объединение с приоритетом новой конфигурации поставщика использую редко, в принципе и без использования данных режимов результат получится качественным.
После того как общие модули были проанализированы и у части процедур сняты флаги обновления, видим, что у модулей теперь установлен режим объединения – индивидуальная настройка:
Двигаемся далее. Среди дважды измененных объектов имеется форма элемента справочника «ОсновныеСредства». Прежде чем определиться обновлять ли данную форму из новой конфигурации поставщика, нужно выяснить, что по факту меняется при обновлении.
Для этого в базе base с помощью контекстного меню вызовем «Отчет о сравнении объектов…». В открывшемся окне должны стоять все флаги в группе «Объекты».
Мне нравится режим вывода отчета в табличный документ, когда различия показываются графически, но это дело вкуса.
В результате сравнения формы элемента справочника «ОсновныеСредства» видим, что изменения есть только в модуле формы , а изменений в диалоге формы в обновлении нет.
Но так как форма элемента попала в дважды измененные объекты, то наши доработки есть либо в диалоге формы, либо в модуле.
Выполнив аналогичное сравнение в базе for_updating можно увидеть, что доработки есть в диалоге формы.
Причина тому, добавление справочника «ОсновныеСредства» в план видов характеристик «СвойстваОбъектов». Если обновить форму элемента справочника «ОсновныеСредства» мы получим неразрешимые ссылки, о чем и будет свидетельствовать окно:
В данном случае самым лучшим вариантом будет не обновлять форму элемента справочника «Основные средства» и уже потом добавить необходимый код в модуль формы элемента. В этом случае окно «Неразрешимые ссылки» при обновлении появляться не будет.
Сделаем отступление и представим, что диалог формы элемента справочника «Основные средства» меняется при обновлении на новый релиз, тогда лучшим вариантом было бы обновление формы. Уже потом, после объединения, нужно было бы добавить в форму наши изменения, как в модуль , так и в диалог . Если в модуле много наших доработок и мало от поставщика, то после объединения можно полностью вернуть наш модуль и добавить изменения поставщика.
В этом случае в процессе объединения появилось бы окно «Неразрешимые салки». Вариантов выбора в данном окне два: 1) «Пометить все для объединения»; 2) «Продолжить».
На мой взгляд, правильнее выбирать «Пометить все для объединения».
В этом случае план видов характеристик «СвойстваОбъектов» будет добавлен как объект для объединения в дереве во вновь открывшемся окне «Обновление…»
Естественно, что после обновления в план видов характеристик «СвойстваОбъектов» нужно будет добавить наши изменения, сделать это лучше с помощью сравнения и объединения с текущей конфигурацией.
Рассмотрим, что произошло бы, если бы мы выбрали «Продолжить» в окне «Неразрешимые ссылки». В этом случае форма элемента справочника «ОсновныеСредства» стала бы новой, а план видов характеристик «СвойстваОбъектов» остался бы старым. В этом случае у нас затрутся изменения в диалоге формы элемента справочника, а именно на странице «СвойстваИЗначения», смотри рисунок ниже.
Данная проблема тоже не является не преодолимой, если конечно о ней не забывать.
Конечно, лучше всего стараться как можно меньше вносить изменений в диалоги форм , например, создавать реквизиты и кнопки на форме программно.
Многие вообще рекомендуют не менять типовые формы, а создавать их копии с нашими доработками и делать их основными. Мне данный вариант не нравится потому, что если поставщик добавил что-то в диалоге форме – на моей форме это не появится и мне придется делать добавления вручную, а изменений поставщика может быть гораздо больше, чем наших.
Отдельное внимание хотелось бы уделить по процедурному обновлению форм (часть процедур беру из конфигурации поставщика, а часть нет - индивидуальная настройка). Рассмотрим, как при данном режиме происходит обновление диалога формы в отличие от режима « взять из конфигурации поставщика ».
Пример не имеет отношения к данному обновлению конфигурации, но показателен, поэтому рассмотрим его.
В справочник «Контрагенты» добавлено несколько реквизитов, и они помещены на форму элемента.
При обновлении конфигурации на новый релиз через поддержку будет предложено окно сравнения и объединения конфигурации, в котором можно сделать различные настройки. Сравним несколько вариантов:
1. Флаг обновления формы выставлен, но обновление сделано по процедурно , т.е. по факту выполнена индивидуальная настройка
Многие думают, что диалог формы должен взяться из конфигурации поставщика, а процедуры в зависимости от сделанных настроек. Посмотрим, насколько это так после выполнения объединения. Сделаем сравнение конфигурации поставщика с основной конфигурацией.
Очевидно, что на формах нарушились привязки и прочее, т.е. диалог формы не был полностью взят из конфигурации поставщика. В данном случае в диалоге формы остались наши объекты, с одной стороны это хорошо, с другой стороны, местоположение наших элементов на форме не всегда оптимально, особенно в связи с добавлением новых элементов поставщика, наблюдается изменение позиций обхода и нарушение привязок. В некоторых случаях легче вручную добавить наши элементы в диалог формы, чем делать исправления.
2. Флаг обновления формы выставлен, обновление сделано в режиме «Взять из новой конфигурации поставщика»
В данном случае диалог формы элемента полностью приводится в соответствие с диалогом формы элемента поставщика.
Вернемся к обновлению. С модулями объекта и модулями менеджера документов поступаем также как с общими модулями, обновляем их по процедурно. С формами документов поступаем аналогично тому, как поступали с формами справочников.
Отдельно нужно выделить работу с ролями. Не смотря на то, что в примере не требуется обновлять роли поговорить об этом стоит. Рассмотрим самый простой случай, когда в конфигурации поставщика содержится новый объект. В этом случае потребуется обновление роли « Полные права », но данная роль может содержать какие-то созданные нами объекты, например, справочники, документы и прочее.
Кажется, что с ролью «Полные права» все просто, объединяем их полностью, права на нетиповые объекты сохранятся в них все равно. Так и есть, права на нетиповые объекты никогда не пропадут, но у всех этих объектов будет включен флаг «Интерактивное удаление», что не всегда хорошо. При сравнении конфигураций старого релиза и подготовленной нового релиза это хорошо видно:
С остальными ролями поступаем аналогично тому, как мы работаем с модулями - если наших изменений больше, то не объединяем роль, после обновления добавляем в нее то, что добавил поставщик в новом релизе.
После того как проработали все дважды измененные объекты в окне обновления нажимаем «Выполнить»
На вопрос о том, что измененные нами объекты будут загружены из новой конфигурации, отвечаем утвердительно.
В открывшемся окне «Настройка правил поддержки» проверяем, установленные флаги, хотя по умолчанию должны стоять правильно, нажимаем «ОК».
По окончании процесса объединения сохраняем основную конфигурацию, конфигурацию базы данных пока не обновляем.
Теперь в конфигурацию for_updating добавляем те минимальные доработки, которые не удалось правильно обновить штатными средствами.
Чтобы удобнее было проконтролировать выполнение данного процесса, в базе base запустим сравнение конфигурации поставщика и основной конфигурации старого релиза.
В базе for_updating сделаем тоже самое. Контролируем дважды измененные объекты, различий быть не должно.
После того как обновление в базе for_undating будет завершено обновляем конфигурацию базы данных и тестируем некоторые моменты, что именно хорошо бы протестировать станет понятно в процессе обновления, тут все индивидуально.
Обновление в рабочей базе желательно выполнять с помощью поддержки «Конфигурация» – «Поддержка» – «Обновить конфигурацию». При этом дважды измененные объекты будут загружены из нового релиза, т.е. наши изменения затрутся (конфигурацию не сохраняем!), но потом при объединении с подготовленной конфигурацией мы их восстанавливаем. После этого можно сохранить конфигурацию, обновить конфигурацию базы данных.
При установке обновлений на базу с конфигурацией, снятой с поддержки и доработанной, выполняется фактически обновление двух конфигураций: обновление конфигурации поставщика (обновление типовой конфигурации, без изменений, до текущего релиза), и обновление основной конфигурации.
Для обновления конфигурации поставщика используется файл cf типовой конфигурации, не снятой с поддержки. Для обновления основной конфигурации используется предварительно подготовленный файл cf (берется типовая конфигурация, в нее вносятся сделанные изменения, и конфигурация выгружается в файл cf)
Собственно процесс обновления выполняется в 2 этапа: обновление конфигурации поставщика, и обновление основной конфигурации. Последовательность выполнения этапов не принципиальна.
Для чего нужны 2 конфигурации в 1 флаконе? Такое сочетание конфигураций базы удобно использовать для получения перечня изменений в типовой конфигурации. В основной конфигурации содержится конфигурация с изменениями, в конфигурации поставщика – типовая. При помощи встроенного в платформу механизма сравнения конфигураций (в данном случае основной и поставщика), можно получить наглядное представление о том что было изменено в конфигурации в сравнении с типовой. Единственное условие для комфортной работы при сравнении – это поддержание одинаковых версий релизов обеих конфигураций. Для этого нужны 2 файла cf – один для основной, другой – для конфигурации поставщика.
Представим себе, что оба файла cf у нас есть (по подготовке cf с изменениями — отдельно) Назовем их, например, «Типовая_2_0_49_8.cf» и «Обновление_2_0_49_8.cf» Соответственно, первый файл – это обновление для конфигурации поставщика, второй – для основной конфигурации.
Начнем с обновления конфигурации поставщика.
В режиме Конфигуратор, идем в меню Конфигурация – Поддержка – Обновить конфигурацию. В получившемся диалоге выбираем переключатель «Выбор файла обновления», и говорим «Далее»
Далее нам предлагается указать файл обновления:
Тут все знакомо. Указываем файл «Типовая_2_0_49_8.cf», и нажимаем Готово
Со всем, что будет появляться дальше – соглашаться)))
После утрясения всех вопросов, платформа начнет загрузку конфигурации для сравнения. Это занимает некоторое время…
По окончании загрузки получаем следующее окно:
Здесь нам показывают различия между тем что у нас уже есть, и тем, что мы пытаемся загрузить. В первой колонке – различия между новой конфигурацией и конфигурацией базы данных (основной), во второй – различия между текущей конфигурацией поставщика, и загружаемой конфигурацией.
Так как нам нужно обновлять только конфигурацию поставщика, а основную пока не трогать, снимаем все галки в левой колонке (если снять самую верхнюю, все остальные ниже снимутся самостоятельно)
Нажимаем «Выполнить», ждем некоторое время…
В процессе загрузки может появиться следующее окно:
Это относится к блокировке объектов базы. Если все переключатели будут установлены в режим «Объект не редактируется», внесение изменений в конфигурацию будет невозможно без предварительного снятия конфигурации с поддержки (объекты на поддержке, снятые с поддержки и редактируемые с сохранением поддержки – отдельная тема) В большинстве случаев настройка правил поддержки выполняется так, как указано на снимке
Идем в меню Файл – Сохранить (платформа сохранит сделанные изменения), и затем в меню Конфигурация – Обновить конфигурацию базы данных. Процесс займет некоторое время, и будет требовать принятия изменений в течение реорганизации.
На этом первый этап закончен.
Обновление основной конфигурации.
В режиме Конфигуратор идем в меню Конфигурация – Сравнить, объединить с конфигурацией из файла. Сразу же получаем окно для выбора файла, в котором указываем наш файл для обновления основной конфигурации «Обновление_2_0_49_8.cf» Платформа сразу же начинает сравнение конфигураций.
Так как наш файл «Обновление_2_0_49_8.cf» содержит уже обновленную конфигурацию, с учетом всех изменений, то все галки в левой колонке теперь оставляем на месте.
После нажатия кнопки «Выполнить», будет выполнено объединение конфигураций (аналогично первому этапу)
Идем в меню Файл – Сохранить, затем Конфигурация – Обновить конфигурацию базы данных
После выполнения всех действий по обновлению, открываем базу в режиме Предприятия, и подтверждаем легальность получения обновлений
На самом деле, если изменения в конфигурации минимальны, и заранее известны, можно обойтись только одним этапом – обновлением конфигурации поставщика. При этом в левой колонке нужно снять галки с тех объектов, которые были изменены по отношению к типовой. Однако эта методика применима только в том случае, когда не требуется внесения изменений в формы и/или сравнения больших блоков кода. Новая типовая конфигурация будет наложена на текущую, за исключением тех объектов, которые мы снимем с объединения.
Методика обновления – универсальна, подходит не только для конфигураций «БухгалтерияПредприятия», но и для Комплексной, и для ЗУП, и для прочих…
The following features are supported:
Method Summary
Methods inherited from interface org.eclipse.emf.ecore.EObject
Methods inherited from interface com._1c.g5.v8.bm.core.IBmObject
Method Detail
getMergeRule
Returns the value of the 'Merge Rule' attribute. The literals are from the enumeration MergeRule . * The rule to be used during a merge process. This rule could be changed by the user in case if isCanBeMerged() is true. The values for overriding should be taken from the getAvailableMergeRules()
setMergeRule
getDefaultMergeRule
Returns the value of the 'Default Merge Rule' attribute. The literals are from the enumeration MergeRule . * The default merge rule calculated for the current node during the comparison process.
setDefaultMergeRule
getAvailableMergeRules
Returns the value of the 'Available Merge Rules' attribute list. The list contents are of type MergeRule . The literals are from the enumeration MergeRule . * The list of merge rules available for the node.
isMustBeMerged
Returns the value of the 'Must Be Merged' attribute. * Tells whether the node will be merged during the merge process using the corresponding merge rule.
This setting could be changed by the user in case if isCanBeMerged() is true.
setMustBeMerged
isCanBeMerged
setCanBeMerged
isHaveChildrenExcludedFromMerge
Returns the value of the 'Have Children Excluded From Merge' attribute. * Tells whether the node contains children excluded from merge. More technically, this flag is true when the node contains canBeMerged-children that are not mustBeMerged.
setHaveChildrenExcludedFromMerge
isMergeRuleSetByUser
Returns the value of the 'Merge Rule Set By User' attribute. * Tells whether the merge rule set by the user and therefore shouldn't be changed by merge rule's building algorithms.
setMergeRuleSetByUser
getOrderRule
Returns the value of the 'Order Rule' containment reference. * The rule to be used for ordering of child elements on merge. Not null only for comparison nodes that support ordering of their children.
setOrderRule
getCustomSettings
Returns the value of the 'Custom Settings' containment reference. * Additional custom settings that extend standard merge settings for specific node types.
Читайте также: