Тип: ОписанияСтандартныхРеквизитов. Свойство содержит коллекцию настроек стандартных реквизитов объекта метаданных. Состав стандартных реквизитов зависит от вида объекта метаданных.
Полное описание, параметры и ограничения
ОбъектМетаданных: Справочник.СтандартныеРеквизиты (MetadataObject: Catalog.StandardAttributes)
ОбъектМетаданных: Справочник (MetadataObject: Catalog)
СтандартныеРеквизиты (StandardAttributes)
Доступен, начиная с версии 8.2.
Использование:
Только чтение.
Описание:
Тип: ОписанияСтандартныхРеквизитов.
Свойство содержит коллекцию настроек стандартных реквизитов объекта метаданных. Состав стандартных реквизитов зависит от вида объекта метаданных.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Проверить состав справочника и настройки блокировки без блокирования
Стандартные поля, собственные реквизиты и табличные части — разные коллекции. Настройки блокировки читаем отдельно от выполнения реальной блокировки.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.
Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.
Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.
Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.
Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки, вызывающую ВыполнитьПример() Экспорт. Каждый фрагмент выполняйте отдельно, не склеивайте их в одну процедуру.
Все проверки этого блока только читают метаданные собственного справочника. Изменения настроек из подготовки выполняйте вручную в Конфигураторе только новой базы Учебная85, затем обновляйте конфигурацию БД.
Не устанавливайте расширения в учебную базу и не создавайте дополнительные индексы, характеристики, команды или макеты, если конкретное упражнение этого не требует.
Если Метаданные.Справочники.Найти("УчебныеТовары") = Неопределено Тогда
ВызватьИсключение "Сначала создайте учебный справочник по подготовке";
КонецЕсли;
Описание = Метаданные.Справочники.УчебныеТовары;
ЕстьКод = Ложь;
ЕстьНаименование = Ложь;
Для Каждого Стандартный Из Описание.СтандартныеРеквизиты Цикл
Если Стандартный.Имя = "Код" Тогда
ЕстьКод = Истина;
КонецЕсли;
Если Стандартный.Имя = "Наименование" Тогда
ЕстьНаименование = Истина;
КонецЕсли;
КонецЦикла;
Сообщить(ЕстьКод);
Сообщить(ЕстьНаименование);
Сообщить(Описание.Реквизиты.Найти("Артикул") <> Неопределено);
Сообщить(Описание.ТабличныеЧасти.Найти("Штрихкоды") <> Неопределено);
Сообщить(Описание.ВводитсяНаОсновании.Количество() = 0);
Сообщить(Описание.ДополнительныеИндексы.Количество() = 0);
Сообщить(Описание.Характеристики.Количество() = 0);
Сообщить(Описание.Команды.Количество() = 0);
Сообщить(Описание.Макеты.Количество() = 0);
Сообщить("Число полей блокировки: " + Строка(Описание.ПоляБлокировкиДанных.Количество()));
Сообщить("Режим управления блокировкой: " + Строка(Описание.РежимУправленияБлокировкойДанных));Разбор по шагам
Код/Наименование проверяем обходом описаний стандартных реквизитов: у этой коллекции нет Найти. Артикул ищем в обычных реквизитах, Штрихкоды — в табличных частях.
Пустые ВводитсяНаОсновании, Характеристики, Команды и Макеты ожидаются именно в подготовленном маленьком справочнике.
ДополнительныеИндексы — явно заданные дополнительные индексы. Ноль не означает отсутствие стандартных индексов или индексации Артикул.
ПоляБлокировкиДанных и РежимУправленияБлокировкойДанных — описание схемы. Код не начинает транзакцию и не блокирует товар.
Как проверить результат
Девять проверок дают Истина.
Последние два сообщения показывают фактическую политику блокировки. Записанных товаров для этой проверки не нужно.
Ожидаемый результат
Проверка структуры перед импортом без чтения/изменения бизнес-данных.
На что обратить внимание
Коллекция стандартных реквизитов не равна реквизитам экземпляра объекта в памяти.
Чтение настроек блокировки не доказывает отсутствие конкуренции пользователей и не заменяет корректную транзакцию.
Подготовка запрещает добавлять свои команды/макеты: иначе ожидаемые нули должны быть пересмотрены, а не скрыты.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Разделить историю выбора, историю изменений и полнотекстовый поиск
Одно стандартное поле Код участвует в разных механизмах. Читаем только декларации: не обслуживаем поиск и не выгружаем исторические значения.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.
Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.
Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.
В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.
Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.
Объект = Метаданные.Справочники.Найти("Номенклатура");
Если Объект = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует Справочники.Номенклатура";
КонецЕсли;
Описания = Объект.СтандартныеРеквизиты;
Стандартный = Неопределено;
Для Каждого ОписаниеПоля Из Описания Цикл
Если ОписаниеПоля.Имя = "Код" Тогда
Стандартный = ОписаниеПоля;
Прервать;
КонецЕсли;
КонецЦикла;
Если Стандартный = Неопределено Тогда
ВызватьИсключение "Стандартный реквизит Код не найден";
КонецЕсли;
Сообщить("История выбора: " + Строка(Стандартный.ИсторияВыбораПриВводе));
Сообщить(Стандартный.ИсторияДанных = Метаданные.СвойстваОбъектов.ИспользованиеИсторииДанных.Использовать);
Сообщить(Стандартный.ПолнотекстовыйПоиск = Метаданные.СвойстваОбъектов.ИспользованиеПолнотекстовогоПоиска.Использовать);
Сообщить(Стандартный.Имя = "Код");Разбор по шагам
ИсторияВыбораПриВводе относится к подсказкам ранее выбираемых значений.
ИсторияДанных относится к сохранению версий изменения данных.
ПолнотекстовыйПоиск — участие поля в поисковом механизме, не поиск конкретного кода.
Никакие менеджеры истории и функции обновления индекса не вызываются.
Как проверить результат
По XML три сравнения Истина: использование истории, поиска и имя Код.
История выбора Auto/Авто; реальные коды и версии товаров не читаются.
Ожидаемый результат
Различены три настройки одного стандартного поля.
На что обратить внимание
Настройка использования не доказывает наличие уже записанных версий или свежего индекса.
История выбора не является полным журналом действий пользователя.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.