Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

ru:technical_manual:editor_param_class:edit_metadata [2020/09/23 14:33]
belkin [Настройки параметра класса]
ru:technical_manual:editor_param_class:edit_metadata [2024/07/05 12:38] (текущий)
Строка 1: Строка 1:
 ====== Редактирование метаданных ====== ====== Редактирование метаданных ======
  
-Часть функционала **Окна редактора классов и параметров MetaEdit** (общий вид окна, его назначение областей, команды контекстного меню, принципы работы окна поиска и т.д.) идентична функционалу **Окна объектной модели** (см. [[ru/manual/report/object_model]]). +Часть функционала **Окна редактора метаданных MetaEdit** (общий вид окна, его назначение областей, команды контекстного меню, принципы работы окна поиска и т.д.) идентична функционалу **Окна объектной модели** (см. [[ru/manual/object_model]]). 
  
 Ниже в данной статье описан только тот функционал, который специфичен именно для MetaEdit. Ниже в данной статье описан только тот функционал, который специфичен именно для MetaEdit.
Строка 13: Строка 13:
 ===== Список модулей ===== ===== Список модулей =====
  
-Вверху окна расположен раскрывающийся список модулей и кнопка, вызывающая меню (Рис. 2). Раскрывающийся список содержит список модулейвключенных в метаданные+Структура данных представлена тремя модулями: База, БизнесМодельCRM.
  
 +**База** – общий функционал, независимо от предметной области (права, меню, отчеты, импорт и т.д.). При заведении объектных параметров и списков можно использовать только классы модуля База. Дочерние классы можно создавать любых модулей.
 +
 +**БизнесМодель** – функционал предметного решения (предметные классы, диаграммы). При заведении объектных параметров и списков можно использовать классы модуля База и БизнесМодель. Дочерние классы можно создавать только модуля БизнесМодель.
 +
 +**CRM** -  модуль почтовых рассылок. При заведении объектных параметров и списков можно использовать классы модуля База и CRM. Дочерние классы можно создавать только модуля CRM.
 +
 +Вверху окна расположен раскрывающийся список модулей и кнопка {{ru/technical_manual/editor_param_class/edit_metadata/const_edit_metadata_042.png?nolink}}, вызывающая меню (Рис. 2).
 +
 +[{{ ru/technical_manual/editor_param_class/edit_metadata/change_edit_metadata_040.png?nolink |Рисунок 2 }}] 
 +
 +Раскрывающийся список содержит список модулей, включенных в метаданные. Выбранный модуль используется для создания нового класса, класс создается с учетом логики, описанной выше. Классы, не относящиеся к текущему модулю, будут выделены в дереве серым цветом.
  
-[{{ ru/technical_manual/editor_param_class/edit_metadata/change_edit_metadata_040.png?nolink |Рисунок 2}}]  
-  
 По кнопке {{ru/technical_manual/editor_param_class/edit_metadata/const_edit_metadata_042.png?nolink}} можно настроить отображающиеся в дереве классы: отображать классы только текущего модуля, показывать удаленные. По кнопке {{ru/technical_manual/editor_param_class/edit_metadata/const_edit_metadata_042.png?nolink}} можно настроить отображающиеся в дереве классы: отображать классы только текущего модуля, показывать удаленные.
  
Строка 24: Строка 33:
 //Показывать удаленные// - При выборе этой опции меню в дереве классов будут отображены все классы, включая удаленные ранее классы. Удаленные классы выделяются в дереве красным цветом. //Показывать удаленные// - При выборе этой опции меню в дереве классов будут отображены все классы, включая удаленные ранее классы. Удаленные классы выделяются в дереве красным цветом.
  
-//Показывать заголовки классов// - При выборе этой опции меню в дереве классов будут показаны не системные названия классов, а их заголовки, т.е. значения, заданные для соответствующих классов в их дополнительной опции "ПоказКласса.Заголовок" (см. [[ru/technical_manual/editor_param_class/edit_metadata#свойства_класса|Свойства класса]]).+//Показывать заголовки классов// - По умолчанию опция отмечена. Если опция меню отмечена, в дереве классов будут показаны не системные названия классов, а их заголовки, т.е. значения, заданные для соответствующих классов в их дополнительной опции "RepositoryView.Header" (см. [[ru/technical_manual/editor_param_class/edit_metadata#свойства_класса|Свойства класса]]).
 ===== Дерево классов ===== ===== Дерево классов =====
  
Строка 31: Строка 40:
 <startTableBox> <startTableBox>
 ^  Пиктограмма  ^  Значение  ^ ^  Пиктограмма  ^  Значение  ^
-|  {{ru/technical_manual/editor_param_class/edit_metadata/const_edit_metadata_044.gif?20x16&nolink}}  | Класс - потомок класса "Классы". |+|  {{ru/technical_manual/editor_param_class/edit_metadata/const_edit_metadata_044.gif?20x16&nolink}}  | Класс - потомок класса "Самостоятельные объекты". |
 |  {{ru/technical_manual/editor_param_class/edit_metadata/const_edit_metadata_045.gif?22x19&nolink}}  | Перечисление - потомок типа "Перечисления". | |  {{ru/technical_manual/editor_param_class/edit_metadata/const_edit_metadata_045.gif?22x19&nolink}}  | Перечисление - потомок типа "Перечисления". |
-|  {{ru/technical_manual/editor_param_class/edit_metadata/const_edit_metadata_046.gif?20x17&nolink}}  | Класс - потомок класса "Элементы списков". |+|  {{ru/technical_manual/editor_param_class/edit_metadata/const_edit_metadata_046.gif?20x17&nolink}}  | Класс - потомок класса "Строки списков". |
 |  {{ru/technical_manual/editor_param_class/edit_metadata/const_edit_metadata_047.gif?9x11&nolink}}  | Наличие этого элемента в пиктограмме означает, что класс допускает хранимые ссылки. | |  {{ru/technical_manual/editor_param_class/edit_metadata/const_edit_metadata_047.gif?9x11&nolink}}  | Наличие этого элемента в пиктограмме означает, что класс допускает хранимые ссылки. |
 |  {{ru/technical_manual/editor_param_class/edit_metadata/const_edit_metadata_048.gif?10x9&nolink}}  | Наличие этого элемента в пиктограмме означает, что класс нехранимый. | |  {{ru/technical_manual/editor_param_class/edit_metadata/const_edit_metadata_048.gif?10x9&nolink}}  | Наличие этого элемента в пиктограмме означает, что класс нехранимый. |
Строка 53: Строка 62:
  
 == == == ==
-**Внимание!** Форма "Свойства класса" (Рис. 3) вызывается при добавлении нового класса, редактировании или просмотре существующего. Создание и редактирование возможно только для пользовательских классов, к  их названию  добавляется префикс //usr_//. Вызов класса на редактирование осуществляется выбором пункта контекстного меню.+**Внимание!** Форма "Свойства класса" (Рис. 3) вызывается при добавлении нового класса, редактировании или просмотре существующего. Создание и редактирование возможно только для пользовательских классов, к  их названию  добавляется префикс //usr_//. Вызов класса на редактирование осуществляется выбором пункта контекстного меню. 
 ===== ===== ===== =====
  
-[{{ ru/technical_manual/editor_param_class/edit_metadata/change_edit_metadata_051.png?&nolink |Рисунок 3}}] +[{{ :ru:technical_manual:editor_param_class:edit_metadata:change_edit_metadata_053.png?nolink |Рисунок 3}}] 
  
 == == == ==
Строка 66: Строка 75:
 ===== ===== ===== =====
 \\ \\
-На вкладке "Опции" одна часть параметров недоступна для изменений (пользовательские классы и пользовательские элементы списков всегда хранимые и допускают хранимые ссылки), а другая часть, касающаяся настроек для версионности может быть задана пользователем (подробнее о том, какими бывают классы с точки зрения версионности см. [[ru/manual/manage_model/branches#свойства_веток|Свойства веток]], Таблица 2).+На вкладке "Опции" одна часть параметров недоступна для изменений (пользовательские классы и пользовательские строки списков всегда хранимые и допускают хранимые ссылки), а другая часть, касающаяся настроек для версионности может быть задана пользователем (подробнее о том, какими бывают классы с точки зрения версионности см. [[ru/manual/manage_model/branches/branches_props#свойства_веток|Свойства веток]], Таблица 2). 
 + 
 +== == 
 +**Внимание!** Опцию "Единые данные в ветках" можно изменить только при создании класса. Изменить ее у уже существующих классов (как системных, так и пользовательских) нельзя.  
 +===== =====
  
 На вкладке "Доп. опции" определяется набор дополнительных опций класса. Из контекстного меню можно вносить доп. опции по категориям. Поддерживается мультистрочный ввод значений дополнительных опций. Удаление опции производится из контекстного меню выбором пункта "Удалить строку". Описание дополнительных опций класса приведено в Таблице 3 //Дополнительные опции класса//. На вкладке "Доп. опции" определяется набор дополнительных опций класса. Из контекстного меню можно вносить доп. опции по категориям. Поддерживается мультистрочный ввод значений дополнительных опций. Удаление опции производится из контекстного меню выбором пункта "Удалить строку". Описание дополнительных опций класса приведено в Таблице 3 //Дополнительные опции класса//.
Строка 76: Строка 89:
 ===== ===== ===== =====
 \\ \\
 +
 +Также поддерживаются значения по умолчанию для мультиязычных параметров. Чтобы задать значение по умолчанию для языкового параметра нужно вписывать его значение с языковым суффиксом. 
 +
 +В медатанных в значениях по умолчанию имеется поддержка формулы-ссылки на значение доп. опции класса: **=ИмяДопопции**. 
 +
 +Для локализации мультиязычных значений ОПУ (параметр **Название**) нужно добавить язык интерфейса (в MetaEdit через Настройки - Языки Интерфейса), перевести значение ОПУ на этот язык и поместить этот перевод в качестве значения допопции **RepositoryView.Header** с суффиксом добавленного языка. После этого при применении в добавляемом классе появится значение на соответствующем языке данных в ОПУ. Если нужно завести другую опцию для этих целей, её название должно начинаться с префикса **Resx**.  
 +Рекомендуется называть такие опции **Resx_СистемноеНазваниеПараметра**. 
 +
 +Логика работы кнопки **Заполнить умолчания** следующая: если у класса есть параметр **Название**, то ему в качестве значения по умолчанию выставляется формула со ссылкой на опцию **RepositoryView.Header**. При этом, если метаданные мультиязычные, то значение по умолчанию задается для всех локализованных параметров (**Название_en, Название_ru_RU,...**), а ссылка в формуле задается на локализованную опцию на том же языке, что и параметр (**RepositoryView.Header.en**). 
 +
 +Если метаданные были немультиязычные и у параметра было значение по умолчанию, то при добавлении языков данных в значениях по умолчанию класса должны появиться значения для всех локализованных параметров (если там были ссылки на опцию, то для каждого локализованного параметра должна указываться опция для его языка) 
 +
 +Если же из мультиязычных метаданных делают немультиязычные, то значение по умолчанию для локализованного параметра на основном языке данных должно попасть к мультиязычному параметру, а сама опция - потерять признак языка. 
 +
 +== ==
 +**Внимание!** Не рекомендуется править файлы ресурсов языков, поставляемых вместе с Business Studio. Они перезаписываются своими новыми версиями в рамках конвертации при обновлении версии программы. 
 +==== ====
 +
 На вкладке "Ключи" задаются ключи для класса - как простые (уникальность проверяется по одному параметру), так и составные (уникальность проверяется по сочетанию нескольких параметров). Удаление ключа производится из контекстного меню по пункту "Удалить строку". На вкладке "Ключи" задаются ключи для класса - как простые (уникальность проверяется по одному параметру), так и составные (уникальность проверяется по сочетанию нескольких параметров). Удаление ключа производится из контекстного меню по пункту "Удалить строку".
  
Строка 85: Строка 116:
 ===== ===== ===== =====
 \\ \\
-На вкладке "Описание" дается многострочное описание функционального назначения класса и его места в объектной иерархии.+На вкладке "Описание" дается многострочное описание функционального назначения класса и его места в объектной иерархии. Если описание оставить пустым, то оно автоматически заполнится заголовком класса.
 \\ \\ \\ \\
 На вкладке "Мультиязычные параметры" приводится список мультиязычных параметров класса. Для унаследованных от родительских классов мультиязычных параметров, которые тоже присутствуют в этом окне, флажок, отвечающий за мультиязычность на этой вкладке, по умолчанию установлен, но может быть снят пользователем. На вкладке "Мультиязычные параметры" приводится список мультиязычных параметров класса. Для унаследованных от родительских классов мультиязычных параметров, которые тоже присутствуют в этом окне, флажок, отвечающий за мультиязычность на этой вкладке, по умолчанию установлен, но может быть снят пользователем.
Строка 91: Строка 122:
 <startTableBox> <startTableBox>
 ^  Название  ^  Тип  ^  Назначение  ^ ^  Название  ^  Тип  ^  Назначение  ^
-^  //Категория "ПоказКласса"//  ^^^ +^  //Категория "RepositoryView"//  ^^^ 
-ПоказКласса.Заголовок | Строка | Опция класса, содержит **//Заголовок//** класса, который будет показываться в стандартных формах в заголовке. Если значение доп. опции не задано или доп. опция отсутствует на вкладке "Доп. опции" - берется **//ПолноеНаименование//** класса. | +RepositoryView.Header | Строка | Опция класса, содержит **//Заголовок//** класса, который будет показываться в стандартных формах в заголовке. Если значение доп. опции не задано или доп. опция отсутствует на вкладке "Доп. опции" - берется **//ПолноеНаименование//** класса. | 
-ПоказКласса.ТолькоЧтение | Логика | Объект класса нельзя модифицировать, независимо от настроек прав. | +RepositoryView.ReadOnly | Логика | Объект класса нельзя модифицировать, независимо от настроек прав. | 
-ПоказКласса.Видимый | Логика | Для показа по умолчанию в формах выбора справочника (**Нет** - класс будет показан только после включения опции "Показывать все"), а также для показа в Навигаторе объектов (**Нет** - класс не будет показан в Навигаторе объектов кроме ситуации, когда он выведен на отдельной вкладке). | +RepositoryView.Visible | Логика | Для показа по умолчанию в формах выбора справочника (**No** - класс будет показан только после включения опции "Показывать все"), а также для показа в Навигаторе объектов (**No** - класс не будет показан в Навигаторе объектов кроме ситуации, когда он выведен на отдельной вкладке). | 
-ПоказКласса.Иконка | Строка | Иконка класса для показа в формах выбора справочников. Могут использоваться как иконки присутствующие в составе программы по умолчанию - для них требуемое значение этого параметра совпадает с нумерацией соответствующих графических файлов из папки objects, которая находится по следующему пути: <Каталог установки Business Studio>\BS_Portal\www\img\objects\ (например, C:\Program Files\STU-Soft\Business Studio 4.2\BS_Portal\www\img\objects\), так и иконки из своих библиотек - для них требуемое значение этого параметра включает путь к библиотеке с иконками и её индекс, подробнее о назначении для пользовательских классов таких иконок см. в примере [[ru/technical_manual/editor_param_class/examples/appointment_of_the_icon_for_a_user_class]]. | +RepositoryView.Icon | Строка | Иконка класса для показа в формах выбора справочников. Могут использоваться как иконки присутствующие в составе программы по умолчанию - для них требуемое значение этого параметра совпадает с нумерацией соответствующих графических файлов из папки objects, которая находится по следующему пути: <Каталог установки Business Studio>\BS_Portal\www\img\objects\ (например, C:\Program Files\STU-Soft\Business Studio 4.2\BS_Portal\www\img\objects\), так и иконки из своих библиотек - для них требуемое значение этого параметра включает путь к библиотеке с иконками и её индекс, подробнее о назначении для пользовательских классов таких иконок см. в примере [[ru/technical_manual/editor_param_class/examples/appointment_of_the_icon_for_a_user_class]]. | 
-ПоказКласса.ГлавныйКлюч |   | Имя главного ключа, по нему осуществляется автоматический импорт/экспорт и автогенерация объектов импорта. | +RepositoryView.ClassIcon | Строка | Иконка класса и его объектовЕсли параметр пустой, используется параметр **RepositoryView.Icon** (Иконка справочника). | 
-ПоказКласса.Иерархический | Логика | Используется для импорта, для стандартных форм. \\ \\ Если значение опции **Да** - разрешается создавать группы в стандартных формах. При импорте объекты создаются группами, если этот момент не указан особо. \\ \\ **Нет** - Не разрешается создавать группы в стандартных формах. При импорте объекты создаются не группами, если этот момент не указан особо. | +| RepositoryView.MainKey |   | Имя главного ключа, по нему осуществляется автоматический импорт/экспорт и автогенерация объектов импорта. | 
-ПоказКласса.ЗависимыеКлассы | Строка | Значение - перечень зависимых классов, которые хотелось бы открыть из данного класса. Обычно в зависимых классах есть объектный параметр исходного класса. | +RepositoryView.Hierarchical | Логика | Используется для импорта, для стандартных форм. \\ \\ Если значение опции **Yes** - разрешается создавать группы в стандартных формах. При импорте объекты создаются группами, если этот момент не указан особо. \\ \\ **No** - Не разрешается создавать группы в стандартных формах. При импорте объекты создаются не группами, если этот момент не указан особо. | 
-ПоказКласса.ПолныйДоступ | Логика | **Да** - полный Доступ/Модификация объекта класса есть всегда, независимо от настроек прав. | +RepositoryView.DependentRepositories | Строка | Значение - перечень зависимых классов, которые хотелось бы открыть из данного класса. Обычно в зависимых классах есть объектный параметр исходного класса. | 
-| ПоказКласса.Авторазмер | Логика | Если значение опции **Нет** - то авторазмер сетки снимается, и размер каждой колонки подбирается автоматически (появляется горизонтальная прокрутка). \\ \\ По умолчанию - **Да** (если значение доп. опции не задано или доп. опция отсутствует на вкладке "Доп. опции"). | +RepositoryView.Autosize | Логика | Если значение опции **Yes** - то авторазмер сетки снимается, и размер каждой колонки подбирается автоматически (появляется горизонтальная прокрутка). \\ \\ По умолчанию - **Yes** (если значение доп. опции не задано или доп. опция отсутствует на вкладке "Доп. опции"). | 
-ПоказКласса.Синхронизировать | Логика | Определяет, будет ли на форме включена кнопка синхронизации. В формах списков объектов и форме редактирования объекта синхронизация включена по умолчанию. |+RepositoryView.Synchronize | Логика | Определяет, будет ли на форме включена кнопка синхронизации. В формах списков объектов и форме редактирования объекта синхронизация включена по умолчанию. | 
 +| RepositoryView.DeleteLastFigureObject | Логика | Позволяет автоматически удалять объект из системы при удалении последней фигуры, обозначающей объект на диаграмме.\\ Исключение:\\ Связи с признаком Основная  иерархия автоматически не удаляются. | 
 +| RepositoryView.AllowedObjectCreationInRepository | Логика | Разрешает создавать объекты в справочнике. | 
 +| RepositoryView.AllowedObjectCreationOfClass | Логика | Разрешает создавать объекты  данного класса. Актуально для классов, имеющих разделение на подклассы, где каждый объект является членом определенного подкласса. | 
 +| RepositoryView.NewObjectNaming | Логика | Позволяет использовать название класса для именования новых объектов. | 
 +| RepositoryView.PropertyForDisplay | Строка | Параметр, выводимый в справочнике и полях ввода в качестве названия объекта. Если параметр пуст, используется параметр "Название". | 
 +| RepositoryView.PropertyForEdit | Строка | Параметр объекта, который будет редактироваться при входе в режим редактирования названия в **Навигаторе** или на фигуре диаграммы. | 
 +| RepositoryView.PropertyForSorting |  Строка | Параметр объекта, который будет использоваться при сортировке объектов на одном уровне иерархии. Если параметр не задан, то производится сортировка по алфавиту по параметру **RepositoryView.PropertyForDisplay**. |
 ^  //Категория "EPC"//  ^^^ ^  //Категория "EPC"//  ^^^
 | EPC.Position | Строка | В качестве значения задаётся число, соответствующее позиции иконки данного класса на панели элементов диаграммы EPC (чем выше число - тем ниже иконка). | | EPC.Position | Строка | В качестве значения задаётся число, соответствующее позиции иконки данного класса на панели элементов диаграммы EPC (чем выше число - тем ниже иконка). |
-| EPC.Shape | Строка | Для пользовательских классов можно задавать пользовательские фигуры (шейпы) для отображения их объектов на диаграммах нотации EPC, используя содержащий их набор элементов MS Visio формата vss/vssx, подробнее о данной возможности см. в примере [[ru/technical_manual/editor_param_class/examples/appointment_of_the_epc_shape_for_a_user_class]]. |+| EPC.Shape | Строка | Для пользовательских классов можно задавать пользовательские фигуры (шейпы) для отображения их объектов на диаграммах нотации EPC, используя содержащий их набор элементов MS Visio формата vss/vssx, подробнее о данной возможности см. в примере [[ru/technical_manual/editor_param_class/examples/epc_user_shapes]]. |
 <endTableBox|Таблица 3. Дополнительные опции класса> <endTableBox|Таблица 3. Дополнительные опции класса>
- + 
 +==== Переключение языков в MetaEdit ==== 
 + 
 +Язык в MetaEdit переключается в правом нижнем углу.  
 + 
 +На переключение языка реагируют дерево (при активной опции **Показывать заголовки классов**) и панель свойств. 
 ==== Особенности задания ключей для пользовательских классов ==== ==== Особенности задания ключей для пользовательских классов ====
  
 При создании нового класса, требуется вручную завести для него ключи на одноименной вкладке в окне редактирования класса, если на этот класс будут ссылаться с помощью параметров типа "Объект" из других классов. При создании нового класса, требуется вручную завести для него ключи на одноименной вкладке в окне редактирования класса, если на этот класс будут ссылаться с помощью параметров типа "Объект" из других классов.
  
-Это требование применимо, если класс создается в качестве потомка от класса, не имеющего ключей (например, от "Элементы списков"). При создании же класса от родителя, имеющего ключи (например, "Объекты системы" - ключ "guid"), отдельно создавать ключи не требуется. +Это требование применимо, если класс создается в качестве потомка от класса, не имеющего ключей (например, от "Строки списков"). При создании же класса от родителя, имеющего ключи (например, "Объекты системы" - ключ "guid"), отдельно создавать ключи не требуется. 
  
-**Пример:** создание для класса из числа потомков класса "Элементы списков" вложенного списка/структуры (получается, что во вложенном списке/структуре окажется объектный параметр «Владелец» со ссылкой на родительский класс).+**Пример:** создание для класса из числа потомков класса "Строки списков" вложенного списка/структуры (получается, что во вложенном списке/структуре окажется объектный параметр «Владелец» со ссылкой на родительский класс).
  
-В случае, если для любого класса из числа потомков класса "Элементы списков" (для определённости назовём его "Класс 1") создаётся параметр с типом "Список" или "Структура", необходимо для этого класса сделать следующее:+В случае, если для любого класса из числа потомков класса "Строки списков" (для определённости назовём его "Класс 1") создаётся параметр с типом "Список" или "Структура", необходимо для этого класса сделать следующее:
   - Создать параметр, значения которого будут уникальными в рамках класса, являющегося владельцем класса "Класс 1". Это может быть, например, "Номер документа", если список представляет собой список документов. В дальнейшем потребуется заполнять значение этого параметра для каждой строки списка с соблюдением этого условия по уникальности.   - Создать параметр, значения которого будут уникальными в рамках класса, являющегося владельцем класса "Класс 1". Это может быть, например, "Номер документа", если список представляет собой список документов. В дальнейшем потребуется заполнять значение этого параметра для каждой строки списка с соблюдением этого условия по уникальности.
   - В окне редактирования класса, на вкладке "Ключ" создать для класса "Класс 1" новый ключ, в который включить 2 параметра: параметр, созданный в предыдущем пункте, и параметр "Владелец".   - В окне редактирования класса, на вкладке "Ключ" создать для класса "Класс 1" новый ключ, в который включить 2 параметра: параметр, созданный в предыдущем пункте, и параметр "Владелец".
   - Применить изменения к базе данных.   - Применить изменения к базе данных.
  
-Это справедливо и для случаев, когда уровней вложенности несколько: например, если у класса "Класс 1" из числа потомков класса "Элементы списков" есть список, ссылающийся на класс "Класс 2", а у того - список, ссылающийся на класс "Класс 3", то описанное выше следует сделать для классов "Класс 1" и "Класс 2".+Это справедливо и для случаев, когда уровней вложенности несколько: например, если у класса "Класс 1" из числа потомков класса "Строки списков" есть список, ссылающийся на класс "Класс 2", а у того - список, ссылающийся на класс "Класс 3", то описанное выше следует сделать для классов "Класс 1" и "Класс 2".
  
 ===== Параметры класса ===== ===== Параметры класса =====
  
-Параметры выделенного класса в правой части окна на вкладке "Параметры".+Параметры выделенного класса приведены в правой части окна на вкладке "Параметры".
  
 Все действия с параметрами классов (см. Таблицу 4 ниже) производятся из контекстного меню, вызываемого от параметров на этой вкладке. Все действия с параметрами классов (см. Таблицу 4 ниже) производятся из контекстного меню, вызываемого от параметров на этой вкладке.
Строка 147: Строка 190:
  
  
-[{{ ru/technical_manual/editor_param_class/edit_metadata/change_edit_metadata_055.png?nolink |Рисунок 4}}]+[{{ ru/technical_manual/editor_param_class/edit_metadata/change_edit_metadata_055.png?nolink |Рисунок 4}}] 
  
 На вкладке "Опции" необходимо выбрать тип параметра: //простой, объектный, список, структура, перечисление//. На вкладке "Опции" необходимо выбрать тип параметра: //простой, объектный, список, структура, перечисление//.
  
-Если тип параметра //Простой//, то необходимо уточнить его тип: //логический, целый, строка, вещественный, датавремя, изображение, бинарный или текст.// Для параметра типа //Строка// необходимо указать длину, максимум 4000 символов. Для параметра типа //Вещественный// необходимо указать общую длину и длину дробной части (количество знаков после запятой), максимум 28 символов. Если тип параметра //Объектный//, то необходимо указать класс, который будет являться типом объектов, на которые будет ссылаться этот параметр.+Если тип параметра //Простой//, то необходимо уточнить его тип: //логический, целый, строка, вещественный, датавремя, бинарный или текст.// Для параметра типа //Строка// необходимо указать длину, максимум 4000 символов. Для параметра типа //Вещественный// необходимо указать общую длину и длину дробной части (количество знаков после запятой), максимум 28 символов. Если тип параметра //Объектный//, то необходимо указать класс, который будет являться типом объектов, на которые будет ссылаться этот параметр.
  
-Если тип параметра //Список// или //Структура//, то необходимо указать элементы списка, которые будут являться типом объектов, на которые будет ссылаться этот параметр. Указанные таким образом классы должны быть конечными (не иметь потомков) и не должны быть созданы под классами, уже указанными в каких-либо параметрах с типом //Список// или //Структура//.+Если тип параметра //Список// или //Структура//, то необходимо указать строки списка, которые будут являться типом объектов, на которые будет ссылаться этот параметр. Указанные таким образом классы должны быть конечными (не иметь потомков) и не должны быть созданы под классами, уже указанными в каких-либо параметрах с типом //Список// или //Структура//.
  
-Если тип параметра //Перечисление//, то в качестве типа объектов указывается перечисление. Тип параметра выбирается по кнопке {{ru/technical_manual/editor_param_class/edit_metadata/edit_metadata_057.png?nolink}}.+Если тип параметра //Перечисление//, то в качестве типа объектов указывается перечисление.  
 + 
 +Тип параметра выбирается по кнопке {{common/3dot.png?nolink}}.
  
 == == == ==
Строка 171: Строка 216:
 | ::: |  20-28  |  13  | | ::: |  20-28  |  13  |
 | ДатаВремя | 8 || | ДатаВремя | 8 ||
-| Изображение | 16 || 
 | Бинарный | 16 || | Бинарный | 16 ||
 | Текст | 16 || | Текст | 16 ||
Строка 180: Строка 224:
 <endTableBox|Таблица 5. Длина в байтах для различных типов параметров> <endTableBox|Таблица 5. Длина в байтах для различных типов параметров>
 \\ \\
-Опции параметра //Только для чтения//, //История// и //Наследуемый// недоступны для изменений, т.к. пользовательские параметры всегда редактируемые, без истории, не наследуемые. 
  
-Пользовательский параметр может быть не хранимым, т.еон может сам не хранить информацию, а использоваться для вывода данных, хранящихся в других параметрах системы. Примеры создания таких параметров см. в [[ru/technical_manual/editor_param_class/examples/create_not_stored_parameters]].+Опция параметра //Не хранимый// отвечает за то, будет ли параметр сам хранить информацию (хранимый параметр) или же не будет, а будет использоваться для вывода данных, хранящихся в других параметрах системы (не хранимый параметр). Пользовательский параметр может быть не хранимым, примеры создания таких параметров см. в [[ru/technical_manual/editor_param_class/examples/create_not_stored_parameters]]
 + 
 +Опция параметра //Мультиязычный// отвечает за то, будет ли параметр мультиязычным, т.е. будет ли он поддерживать одновременно разные значения на разных языках базы. У не мультиязычного параметра объекта будет одно значение вне зависимости от количества языков в базе.
  
 На вкладке "Доп. опции" определяется набор дополнительных опций параметра класса. Они позволяют указывать заголовки, управлять порядком и видимостью по умолчанию, настраивать действия. Из контекстного меню можно вносить доп. опции по категориям. Удаление опции производится из контекстного меню выбором пункта "Удалить выделенные строки". Описание дополнительных опций параметра приведено в Таблице 6 //Дополнительные опции параметров классов//. На вкладке "Доп. опции" определяется набор дополнительных опций параметра класса. Они позволяют указывать заголовки, управлять порядком и видимостью по умолчанию, настраивать действия. Из контекстного меню можно вносить доп. опции по категориям. Удаление опции производится из контекстного меню выбором пункта "Удалить выделенные строки". Описание дополнительных опций параметра приведено в Таблице 6 //Дополнительные опции параметров классов//.
Строка 192: Строка 237:
 ===== ===== ===== =====
  
-На вкладке "Описание" можно дать многострочное описание функционального назначения параметра класса и его места в объектной иерархии.+На вкладке "Описание" можно дать многострочное описание функционального назначения параметра класса и его места в объектной иерархии. Если описание оставить пустым, то оно автоматически заполнится заголовком параметра класса.
  
  
 <startTableBox> <startTableBox>
 ^  Название  ^  Тип  ^  Назначение  ^ ^  Название  ^  Тип  ^  Назначение  ^
-^  //Категория "Показ"//  ^^^ +^  //Категория "PropertyView"//  ^^^ 
-Показ.Заголовок | Строка | Содержит **//Заголовок//** параметра, который будет показываться в стандартных формах. \\ Если значение не задано, берется **//Наименование//** параметра. | +PropertyView.Header | Строка | Содержит **//Заголовок//** параметра, который будет показываться в стандартных формах. \\ Если значение не задано, берется **//Наименование//** параметра. | 
-Показ.Видимый | Логика | Если значение опции **Да** - то параметр показывается в форме списка. Если значение доп. опции не заполнено или доп. опция отсутствует на вкладке "Доп. опции" - **Да**. | +PropertyView.Visible | Логика | Если значение опции **Yes** - то параметр показывается в форме списка. Если значение доп. опции не заполнено или доп. опция отсутствует на вкладке "Доп. опции" - используется значение опции **Yes**. | 
-Показ.ВидимыйОб | Логика | Если значение опции **Да** - то параметр показывается в форме единичного показа. Если значение доп. опции не заполнено или доп. опция отсутствует на вкладке "Доп. опции" - используется значение опции "Видимый". | +PropertyView.VisibleObj | Логика | Если значение опции **Yes** - то параметр показывается в форме единичного показа. Если значение доп. опции не заполнено или доп. опция отсутствует на вкладке "Доп. опции" - используется значение опции **Yes**. | 
-Показ.НаВкладке | Логика | Указывается для параметров-списков. Если значение опции **Да**, то список отображается на вкладке в форме единичного показа. Если опция не заполнена - **Нет**. | +PropertyView.OnTab | Логика | Указывается для параметров-списков. Если значение опции **Yes**, то список отображается на вкладке в форме единичного показа. Если опция не заполнена - используется значение опции **No**. | 
-Показ.Редактирование | Логика | Если значение опции **Да** - то параметр редактируется в форме списка. Если значение доп. опции не заполнено или доп. опция отсутствует на вкладке "Доп. опции" - **Нет**. | +PropertyView.Editable | Логика | Если значение опции **Yes** - то параметр редактируется в форме списка. Если значение доп. опции не заполнено или доп. опция отсутствует на вкладке "Доп. опции" - используется значение опции **No**. | 
-Показ.РедактированиеОб | Логика | Если значение опции **Да** - то параметр редактируется в форме единичного показа. Если значение доп. опции не заполнено или доп. опция отсутствует на вкладке "Доп. опции" - **Нет**. | +PropertyView.EditableObj | Логика | Если значение опции **Yes** - то параметр редактируется в форме единичного показа. Если значение доп. опции не заполнено или доп. опция отсутствует на вкладке "Доп. опции" - используется значение опции **No**. | 
-Показ.Обязательный | Логика | **Да/Нет.** Служит для выделения параметров, обязательных для ввода. | +PropertyView.Required | Логика | **Yes/No.** Служит для выделения параметров, обязательных для ввода. | 
-Показ.Номер | Целое | Показывает порядковый номер расположения параметра на форме списка объектов. \\ \\ **Внимание!** В системе есть возможность добавлять/убирать колонки, используя специальную форму. \\ \\ Если вы хотите, чтобы параметр не показывался по умолчанию, но пользователь в дальнейшем имел возможность вывести его на показ, нужно проставить Показ.Номер = -1.  Тем самым параметр появится в форме настройки колонок и можно его перетащить на основную форму. \\ \\ Следует отметить, что в отличие от формы настройки колонок скрытые колонки загружаются, что снижает быстродействие. | +PropertyView.Number | Целое | Показывает порядковый номер расположения параметра на форме списка объектов. \\ \\ **Внимание!** В системе есть возможность добавлять/убирать колонки, используя специальную форму. \\ \\ Если вы хотите, чтобы параметр не показывался по умолчанию, но пользователь в дальнейшем имел возможность вывести его на показ, нужно проставить PropertyView.Number = -1.  Тем самым параметр появится в форме настройки колонок и можно его перетащить на основную форму. \\ \\ Следует отметить, что в отличие от формы настройки колонок скрытые колонки загружаются, что снижает быстродействие. | 
-Показ.НомерОб | Целое | Задает порядковый номер расположения параметра на форме единичного показа объекта. Для параметров-списков - порядковый номер вкладки. \\ \\ **Внимание!** Если значение доп. опции не заполнено или доп. опция отсутствует на вкладке "Доп. опции", то порядковый номер заполнится от Показ.Номер. | +PropertyView.NumberObj | Целое | Задает порядковый номер расположения параметра на форме единичного показа объекта. Для параметров-списков - порядковый номер вкладки. \\ \\ **Внимание!** Если значение доп. опции не заполнено или доп. опция отсутствует на вкладке "Доп. опции", то порядковый номер заполнится от PropertyView.Number. | 
-Показ.МинРазмер | Целое | Минимальный размер колонки, по умолчанию 0. Необходимо, например, при авторазмере, когда нужно, чтобы название обязательно было полностью видимым. | +PropertyView.MinSize | Целое | Минимальный размер колонки, по умолчанию 0. Необходимо, например, при авторазмере, когда нужно, чтобы название обязательно было полностью видимым. | 
-Показ.Размер | Целое | Задает размер колонки в сетке в форме списка объектов. | +PropertyView.Size | Целое | Задает размер колонки в сетке в форме списка объектов. | 
-Показ.Сортировка | Строка | Возможные значения: **ВозрастаниеУбывание**. Используется для сортировки по параметру в форме списка. | +PropertyView.Sort | Строка | Возможные значения: **AscendDescend**. Используется для сортировки по параметру в форме списка. | 
-Показ.Формат | Строка | Значение - формат вывода значения параметра в формате C# (см. [[ru/manual/manual]], глава [[ru/manual/administration/numerators_classes]]). Выводит значение параметра в заданном формате в форме списка. | +PropertyView.Format | Строка | Значение - формат вывода значения параметра в формате C# (см. [[ru/manual]], глава [[ru/manual/administration/numerators_classes]]). Выводит значение параметра в заданном формате в форме списка. | 
-Показ.ФорматОб | Строка | Значение - формат вывода значения параметра в формате C#. Выводит значение параметра в заданном формате в форме редактирования объекта. | +PropertyView.FormatObj | Строка | Значение - формат вывода значения параметра в формате C#. Выводит значение параметра в заданном формате в форме редактирования объекта. | 
-Показ.Превью | Логика | Параметр, у которого стоит значение **Да**, появится в виде поля превью под строкой (если заполнен), например, комментарий. \\ \\ **Внимание!** Чтобы этот параметр показывался в виде поля превью под строкой, но не показывался при этом в виде колонки в форме списка, нужно для него установить Показ.Номер = -1. \\ \\ Также, если хотите, чтобы это поле показывалось в форме показа объекта - проставьте Показ.НомерОб = 100 (например). \\ \\ Следовательно, данную опцию нужно заполнять, когда порядок в единичной форме показа отличается от формы списка, например Комментарий, который не показывается в форме списка (Показ.Номер=-1), но показывается в форме единичного показа Показ.НомерОб  =  100. \\ ** ** | +PropertyView.Preview | Логика | Параметр, у которого стоит значение **Да**, появится в виде поля превью под строкой (если заполнен), например, комментарий. \\ \\ **Внимание!** Чтобы этот параметр показывался в виде поля превью под строкой, но не показывался при этом в виде колонки в форме списка, нужно для него установить PropertyView.Number = -1. \\ \\ Также, если хотите, чтобы это поле показывалось в форме показа объекта - проставьте PropertyView.NumberObj = 100 (например). \\ \\ Следовательно, данную опцию нужно заполнять, когда порядок в единичной форме показа отличается от формы списка, например Комментарий, который не показывается в форме списка (PropertyView.Number = -1), но показывается в форме единичного показа PropertyView.NumberObj  =  100. \\ ** ** | 
-Показ.Префикс | Строка | Может указываться для не хранимых параметров. Значение - ссылка на параметр объекта. \\ \\ Предназначен для вывода вложенных параметров, например //Версия.Автор//. Пример создания такого параметра см. в [[ru/technical_manual/editor_param_class/examples/create_not_stored_parameters#пример_создания_не_хранимого_параметра|Пример создания не хранимого параметра]]. \\ \\ **Внимание!** Тип параметра, для которого задается данная доп. опция, обязательно должен совпадать с типом параметра, на который идет ссылка. \\ ** ** | +PropertyView.Prefix | Строка | Может указываться для не хранимых параметров. Значение - ссылка на параметр объекта. \\ \\ Предназначен для вывода вложенных параметров, например //Версия.Автор//. Пример создания такого параметра см. в [[ru/technical_manual/editor_param_class/examples/create_not_stored_parameters#пример_создания_не_хранимого_параметра|Пример создания не хранимого параметра]]. \\ \\ **Внимание!** Тип параметра, для которого задается данная доп. опция, обязательно должен совпадать с типом параметра, на который идет ссылка. \\ ** ** | 
-Показ.ФорматСводный | Строка | Может указываться для не хранимых параметров с типом "Строка". Значение - комбинация из ссылок на параметры объекта с типом "Строка", каждая из которых заключена в квадратные скобки, и произвольного текста. \\ \\ Пример создания такого параметра см. в [[ru/technical_manual/editor_param_class/examples/create_not_stored_parameters#пример_создания_не_хранимого_сводного_параметра|Пример создания не хранимого сводного параметра]]. | +PropertyView.ComplexFormat | Строка | Может указываться для не хранимых параметров с типом "Строка". Значение - комбинация из ссылок на параметры объекта с типом "Строка", каждая из которых заключена в квадратные скобки, и произвольного текста. \\ \\ Пример создания такого параметра см. в [[ru/technical_manual/editor_param_class/examples/create_not_stored_parameters#пример_создания_не_хранимого_сводного_параметра|Пример создания не хранимого сводного параметра]]. | 
-^  //Категория "Редактирование"//  ^^^ +PropertyView.Editor | Строка | Задает эдитор на экранных формах списков, отличный от стандартного (по умолчанию) для формы списка объектов. \\ \\ Например, для параметра типа Текст эдитор может быть MemoEdit (с просмотром содержимого) или RichEdit (текст в формате RTF), по умолчанию привязан эдитор MemoEditEx - без просмотра содержимого в сетке. \\ \\ **Примечание:** Эдитор MemoEdit может быть привязан и к параметру типа строка, если нужно автоматически увеличивать высоту ячейки, если строка не помещается. Пользоваться этой возможностью нужно осторожно - нельзя позволять редактировать строку этим эдитором (только просмотр) - так как пользователь может вставить перевод строки. \\ \\ Возможные значения: \\ - MemoEdit, RichEdit (вместо MemoEditEx по умолчанию); \\ - PictureEdit (вместо ImageEdit по умолчанию); \\ - ButtonEdit (для привязки эдитора для выбора, при нажатии на кнопку которого должен выполниться метод, описанный в опции **PropertyView.ButtonAction**). | 
-Редактирование.Эдитор | Строка | Задает эдитор на экранных формах списков, отличный от стандартного (по умолчанию) для формы списка объектов. \\ \\ Например, для параметра типа Текст эдитор может быть MemoEdit (с просмотром содержимого) или RichEdit (текст в формате RTF), по умолчанию привязан эдитор MemoEditEx - без просмотра содержимого в сетке. \\ \\ **Примечание:** Эдитор MemoEdit может быть привязан и к параметру типа строка, если нужно автоматически увеличивать высоту ячейки, если строка не помещается. Пользоваться этой возможностью нужно осторожно - нельзя позволять редактировать строку этим эдитором (только просмотр) - так как пользователь может вставить перевод строки. \\ \\ Возможные значения: \\ - MemoEdit, RichEdit (вместо MemoEditEx по умолчанию); \\ - PictureEdit (вместо ImageEdit по умолчанию); \\ - ButtonEdit (для привязки эдитора для выбора, при нажатии на кнопку которого должен выполниться метод, описанный в опции **ДействиеПоКнопке**). | +PropertyView.EditorObj | Строка | Задает эдитор на экранных формах объекта, отличный от стандартного (по умолчанию) для формы редактирования объекта. | 
-Редактирование.ЭдиторОб | Строка | Задает эдитор на экранных формах объекта, отличный от стандартного (по умолчанию) для формы редактирования объекта. | +PropertyView.ButtonAction | Строка | В качестве значения используется имя метода, который будет запускаться на исполнение при нажатии кнопки **"…"** эдитора (переопределенного в опции **PropertyView.Editor**, либо **PropertyView.EditorObj** в значение ButtonEdit). \\ ** ** | 
-Редактирование.Действие-ПоКнопке | Строка | В качестве значения используется имя метода, который будет запускаться на исполнение при нажатии кнопки **"…"** эдитора (переопределенного в опции **Эдитор**, либо **ЭдиторОб** в значение ButtonEdit). \\ ** ** | +PropertyView.DeleteButtonAction | Строка | В качестве значения используется имя метода, который будет запускаться на исполнение при нажатии кнопки с крестом эдитора (переопределенного в опции **PropertyView.Editor**, либо **PropertyView.EditorObj** в значение ButtonEdit). \\ ** ** | 
-Редактирование.Действие-ПоКнопкеУдалить | Строка | В качестве значения используется имя метода, который будет запускаться на исполнение при нажатии кнопки с крестом эдитора (переопределенного в опции **Эдитор**, либо **ЭдиторОб** в значение ButtonEdit). \\ ** ** | +PropertyView.Synchronize | Логика | Если значение опции **Yes**, то по этому объектному полю будет синхронизироваться форма редактирования объекта данного класса. \\ \\ Если значение **No** - синхронизация не используется. |
-^  //Категория "Связи"//  ^^^ +
-Связи.Синхронизировать | Логика | Если значение опции **Да**, то по этому объектному полю будет синхронизироваться форма редактирования объекта данного класса. \\ \\ Если значение **Нет** - синхронизация не используется. |+
 ^  //Прочее//  ^^^ ^  //Прочее//  ^^^
 | Название доп. опции | Тип доп. опции | Значение опции: =<Название доп. опции данного или одного из вышележащих классов>. \\ \\ В случае использования данного механизма доп. опции параметра класса присваивается значение указанной произвольной опции (переменной) данного или одного из вышележащих классов. Если опция определена в одном из вышележащих классов и в одном из классов-потомков ее значение переопределено - доп. опции будет присвоено переопределенное значение. Механизм может применяться, например, для управления видимостью параметров в классах-потомках (в одних потомках параметр виден, в других - нет). | | Название доп. опции | Тип доп. опции | Значение опции: =<Название доп. опции данного или одного из вышележащих классов>. \\ \\ В случае использования данного механизма доп. опции параметра класса присваивается значение указанной произвольной опции (переменной) данного или одного из вышележащих классов. Если опция определена в одном из вышележащих классов и в одном из классов-потомков ее значение переопределено - доп. опции будет присвоено переопределенное значение. Механизм может применяться, например, для управления видимостью параметров в классах-потомках (в одних потомках параметр виден, в других - нет). |
Строка 240: Строка 283:
 ===== Свойства перечисления ===== ===== Свойства перечисления =====
  
-Форма "Свойства перечисления(Рис. 5) вызывается при добавлении нового перечисления или редактировании существующего. Создание и редактирование возможно только для пользовательских перечисленийк их названию добавляется префикс //usr////_//. Вызов перечисления на редактирование осуществляется выбором соответствующей опции контекстного меню+Окно **Свойства перечисления** (Рис. 5) вызывается при добавлении нового перечисления или редактировании существующего. При создании пользовательских перечислений к их названию добавляется префикс //"usr_"//.
  
 +На вкладке **Элементы** задается список элементов перечисления. Параметры перечисления:
 +  * //Значение// -  числовое значение элемента; 
 +  * //Название// - системное название элемента;
 +  * //Описание// - заголовок элемента, который отображается в интерфейсе программы.
  
-[{{ ru/technical_manual/editor_param_class/edit_metadata/change_edit_metadata_059.png?nolink |Рисунок 5}}]+Вызов перечисления на редактирование осуществляется выбором соответствующего пункта контекстного меню.
  
-На вкладке лементы" задается список элементов перечисления. Параметры перечисления: //значение, наименование, описание.// Значение -  подставляемое значение, название системное название элементаописание - подставляемое название элемента. Удаление элемента перечисления осуществляется из контекстного меню.+Редактирование доступно для: 
 + 
 +  * параметра //Описание// системных перечислений на всех языках, кроме **Языка по умолчанию** (см. [[ru/manual/multilingual_module/terms]]) и русского (ru); 
 +  * всех параметров пользовательских перечислений на всех языках. 
 + 
 +== == 
 +**Внимание!** Не рекомендуется изменять системное название элемента пользовательского перечисления, так как в этом случае потребуется заново вводить значения параметра //Описание// на всех языках. 
 +===== ===== 
 +\\ 
 + 
 +[{{ ru/technical_manual/editor_param_class/edit_metadata/change_edit_metadata_059.png?nolink |Рисунок 5}}] 
 +  
 +Удаление элемента перечисления осуществляется выбором соответствующего пункта контекстного меню.
  
 Параметр //Множество// позволяет задавать параметру объекта несколько значений из перечисления. При изменении параметра //Множество// во включенное состояние для уже созданных объектов, информация в базе не теряется. При отключении параметра //Множество// информация в базе по параметрам объектов этого перечисления утратится. Параметр //Множество// позволяет задавать параметру объекта несколько значений из перечисления. При изменении параметра //Множество// во включенное состояние для уже созданных объектов, информация в базе не теряется. При отключении параметра //Множество// информация в базе по параметрам объектов этого перечисления утратится.
Строка 253: Строка 312:
 ===== ===== ===== =====
 \\ \\
-На вкладке "Описание" дается многострочное описание перечисления.+ 
 +На вкладке **Доп.опции** можно задать значение доп. опций "RepositoryView.Visible" и "PropertyView.Header", их работа идентична работе соответствующих опций классов (см. Таблицу 3 в [[ru/technical_manual/editor_param_class/edit_metadata#свойства_класса|Свойства класса]]). 
 + 
 +На вкладке **Описание** дается многострочное описание перечисления. 
 + 
 +===== Добавление SQL индекса ===== 
 + 
 +SQL индексы предназначены для ускорения работы фильтров, где фильтрация происходит по параметрам, которые включены в индекс. 
 + 
 +Форма "Добавление SQL индекса" (Рис. 6) вызывается при добавлении нового SQL индекса или редактировании существующего. Создание и редактирование SQL индексов возможно для хранимых справочников. В индекс могут входить хранимые параметры всех типов, кроме списков и структур. К названию SQL индекса добавляется префикс //STU////_//.  
 + 
 +== == 
 +**Внимание!** Добавлять SQL индексы для объектных полей не требуется, так как для них уже присутствуют системные индексы по умолчанию. 
 +===== ===== 
 +\\ 
 + 
 +Добавление новых и изменение существующих индексов производится выбором соответствующего пункта контекстного меню на вкладке "Индексы". 
 + 
 +[{{ ru/technical_manual/editor_param_class/edit_metadata/change_edit_metadata_060.png?nolink |Рисунок 6}}] 
  
 [<contextnavigator>] [<contextnavigator>]
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +{(rater>id=ru_technical_manual_editor_param_class_edit_metadata|name=Редактирование метаданных|type=vote|trace=ip|headline=off)}
Driven by DokuWiki