ОбъектМетаданных: Справочник.ТабличныеЧасти

Свойства · TabularSections

Тип: КоллекцияОбъектовМетаданных. Коллекция объектов метаданных, описывающих табличные части данного объекта метаданных. Элементами коллекции являются объекты типа ОбъектМетаданных: ТабличнаяЧасть.

Полное описание, параметры и ограничения

ОбъектМетаданных: Справочник.ТабличныеЧасти (MetadataObject: Catalog.TabularSections)

ОбъектМетаданных: Справочник (MetadataObject: Catalog)

ТабличныеЧасти (TabularSections)

Доступен, начиная с версии 8.1.

Использование:
Только чтение.
Описание:
Тип: КоллекцияОбъектовМетаданных.
Коллекция объектов метаданных, описывающих табличные части данного объекта метаданных.
Элементами коллекции являются объекты типа ОбъектМетаданных: ТабличнаяЧасть.
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Проверить состав справочника и настройки блокировки без блокирования

Стандартные поля, собственные реквизиты и табличные части — разные коллекции. Настройки блокировки читаем отдельно от выполнения реальной блокировки.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.

  2. Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.

  3. Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.

  4. Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.

  5. Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки, вызывающую ВыполнитьПример() Экспорт. Каждый фрагмент выполняйте отдельно, не склеивайте их в одну процедуру.

  6. Все проверки этого блока только читают метаданные собственного справочника. Изменения настроек из подготовки выполняйте вручную в Конфигураторе только новой базы Учебная85, затем обновляйте конфигурацию БД.

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


Если Метаданные.Справочники.Найти("УчебныеТовары") = Неопределено Тогда
    ВызватьИсключение "Сначала создайте учебный справочник по подготовке";
КонецЕсли;

Описание = Метаданные.Справочники.УчебныеТовары;
ЕстьКод = Ложь;
ЕстьНаименование = Ложь;
Для Каждого Стандартный Из Описание.СтандартныеРеквизиты Цикл
    Если Стандартный.Имя = "Код" Тогда
        ЕстьКод = Истина;
    КонецЕсли;
    Если Стандартный.Имя = "Наименование" Тогда
        ЕстьНаименование = Истина;
    КонецЕсли;
КонецЦикла;
Сообщить(ЕстьКод);
Сообщить(ЕстьНаименование);
Сообщить(Описание.Реквизиты.Найти("Артикул") <> Неопределено);
Сообщить(Описание.ТабличныеЧасти.Найти("Штрихкоды") <> Неопределено);
Сообщить(Описание.ВводитсяНаОсновании.Количество() = 0);
Сообщить(Описание.ДополнительныеИндексы.Количество() = 0);
Сообщить(Описание.Характеристики.Количество() = 0);
Сообщить(Описание.Команды.Количество() = 0);
Сообщить(Описание.Макеты.Количество() = 0);
Сообщить("Число полей блокировки: " + Строка(Описание.ПоляБлокировкиДанных.Количество()));
Сообщить("Режим управления блокировкой: " + Строка(Описание.РежимУправленияБлокировкойДанных));

Разбор по шагам

  1. Код/Наименование проверяем обходом описаний стандартных реквизитов: у этой коллекции нет Найти. Артикул ищем в обычных реквизитах, Штрихкоды — в табличных частях.

  2. Пустые ВводитсяНаОсновании, Характеристики, Команды и Макеты ожидаются именно в подготовленном маленьком справочнике.

  3. ДополнительныеИндексы — явно заданные дополнительные индексы. Ноль не означает отсутствие стандартных индексов или индексации Артикул.

  4. ПоляБлокировкиДанных и РежимУправленияБлокировкойДанных — описание схемы. Код не начинает транзакцию и не блокирует товар.

Как проверить результат

  1. Девять проверок дают Истина.

  2. Последние два сообщения показывают фактическую политику блокировки. Записанных товаров для этой проверки не нужно.

Ожидаемый результат

Проверка структуры перед импортом без чтения/изменения бизнес-данных.

На что обратить внимание

  1. Коллекция стандартных реквизитов не равна реквизитам экземпляра объекта в памяти.

  2. Чтение настроек блокировки не доказывает отсутствие конкуренции пользователей и не заменяет корректную транзакцию.

  3. Подготовка запрещает добавлять свои команды/макеты: иначе ожидаемые нули должны быть пересмотрены, а не скрыты.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Проверить ограничения Номенклатуры до загрузки товаров

Перед импортом узнаём длины кода и наименования, иерархию, владельцев и состав реквизитов. Ничего не записываем.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.

  2. Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.

  3. В Конфигураторе найдите Справочники → Номенклатура. Пример рассчитан на конфигурацию, где этот справочник существует.


Описание = Метаданные.Справочники.Найти("Номенклатура");
Если Описание = Неопределено Тогда
    ВызватьИсключение "Номенклатура отсутствует в текущей конфигурации";
КонецЕсли;
Сообщить(Описание.ПолноеИмя());
Сообщить(Описание.Представление());
Сообщить(СтрШаблон("Имя: %1; синоним: %2", Описание.Имя, Описание.Синоним));
Сообщить(Описание.Комментарий);
Сообщить(СтрШаблон("Код: длина %1, тип %2; наименование: длина %3",
    Описание.ДлинаКода, Описание.ТипКода, Описание.ДлинаНаименования));
Сообщить(СтрШаблон("Автонумерация: %1; контроль уникальности: %2",
    Описание.Автонумерация, Описание.КонтрольУникальности));
Сообщить(СтрШаблон("Иерархия: %1; вид: %2; уровни: %3",
    Описание.Иерархический, Описание.ВидИерархии, Описание.КоличествоУровней));
Сообщить(СтрШаблон("Владельцев: %1; реквизитов: %2; табличных частей: %3",
    Описание.Владельцы.Количество(), Описание.Реквизиты.Количество(), Описание.ТабличныеЧасти.Количество()));
Для Каждого Реквизит Из Описание.Реквизиты Цикл
    Сообщить(СтрШаблон("%1: %2", Реквизит.Имя, Реквизит.Тип));
КонецЦикла;
НаименованиеИзФайла = "Учебная книга";
Если Описание.ДлинаНаименования > 0 И СтрДлина(НаименованиеИзФайла) > Описание.ДлинаНаименования Тогда
    ВызватьИсключение "Наименование длиннее разрешённого — загрузка должна быть отклонена";
КонецЕсли;
Сообщить("Предварительная проверка длины пройдена; запись не выполнялась");

Разбор по шагам

  1. Найти возвращает описание справочника, не ссылку на конкретный товар.

  2. По длинам и типу кода определяем ограничения полей, по иерархии — необходимость групп, по владельцам — зависимость от другого справочника.

  3. Обходим собственные реквизиты и выводим их реальные описания типов, а не предполагаем одинаковую схему во всех конфигурациях.

  4. Проверяем длину учебного наименования, но не создаём товар: это только один шаг предварительной проверки импорта.

Как проверить результат

  1. Длины и тип кода совпадают с настройками Номенклатуры в вашей учебной базе.

  2. Увеличьте НаименованиеИзФайла до значения длиннее ДлинаНаименования: получите исключение до какой-либо записи.

  3. Число реквизитов — число описаний полей, а не число заполненных значений у товара.

Ожидаемый результат

Получен фактический контракт справочника для подготовки импорта без создания товаров.

На что обратить внимание

  1. Контроль уникальности кода не гарантирует отсутствие товаров-дублей по артикулу или наименованию.

  2. ДлинаНаименования=0 требует отдельной интерпретации настройки; не объявляйте поле автоматически обязательным или безграничным.

  3. Успешная проверка длины не заменяет права доступа, обязательные реквизиты и обработчики записи.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.