Прочитать структуру табличных частей справочника и документа

Учебные задачи

Табличная часть в метаданных описывает колонки. Она не содержит фактические строки штрихкодов товара или товаров заявки.

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

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

Подготовка

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

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

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

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

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

  6. Документы → Добавить: имя УчебнаяЗаявка, тип номера Строка, длина 9, автонумерация включена. Проведение запретите: это только учебный документ без движений.

  7. Добавьте реквизит Комментарий (Строка, длина 100) и табличную часть Товары: Товар (СправочникСсылка.УчебныеТовары), Количество (Число, 9 цифр, 0 дробных, неотрицательное), Цена (Число, 12 цифр, 2 дробных, неотрицательное). Модуль документа пустой.

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


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

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

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

  1. В собственных метаданных получаем Штрихкоды справочника и Товары документа, не создавая ни одного объекта данных.

  2. ТабличныеЧасти — коллекция описаний. Каждое описание имеет Реквизиты пользовательских колонок и отдельные СтандартныеРеквизиты.

  3. ПолноеИмя включает владельца и имя части. Родитель возвращает описание справочника или документа, не строку табличной части.

  4. ДлинаНомераСтроки — настройка стандартного номера; Количество реквизитов — количество колонок схемы, не товаров.

  5. Использование зависит от владельца: для справочника связано с группами/элементами; не переносим этот смысл на все виды владельцев.

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

  1. Штрихкоды имеет два собственных реквизита Штрихкод/Основной, Товары — три Товар/Количество/Цена.

  2. Сообщения включают полные имена обеих частей и их владельцев.

  3. Откройте пустой новый товар: в его Штрихкоды по-прежнему 0 строк, несмотря на две колонки описания.

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

Прочитана конкретная схема двух табличных частей и объяснено отличие метаданных от строк объекта.

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

  1. Количество колонок описания не является Количество() строк табличной части объекта.

  2. Стандартный НомерСтроки не нужно создавать как собственный пользовательский реквизит.

  3. Настройка проверки заполнения не доказывает прохождение проверок для будущих данных заявки.

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

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

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

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

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