ОбъектМетаданных: Документ.Макеты

Свойства · Templates

Тип: КоллекцияОбъектовМетаданных. Коллекция объектов метаданных, описывающих макеты, принадлежащие данному объекту метаданных.

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

ОбъектМетаданных: Документ.Макеты (MetadataObject: Document.Templates)

ОбъектМетаданных: Документ (MetadataObject: Document)

Макеты (Templates)

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

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

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

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

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

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

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

Получить текстовую памятку именно из макета своего документа

Создаётся незаписанный черновик; имя и тип его собственного макета проверяются. ПолучитьМакет не означает печать и может вернуть разные типы.

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

Полный серверный модуль новой собственной Учебная85, точная 8.5.1.1343. Непроводимая заявка; временные собственные записи только с отменой транзакции. Код здесь не запускался.

Подготовка

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

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

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

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

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

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

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

  8. У своего документа и товара модули пустые, подписок, расширений и внешних обработчиков нет. История данных выключена; проведение УчебнаяЗаявка запрещено, движения/регистры не создаются.

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

  10. Свойства ссылки readonly. Непустой UUID/ссылка не означает наличие записи, а ВерсияДанных — непрозрачная строка, не номер документа или версия конфигурации.

  11. Примеры здесь не запускались в 1С. Только код и установленная справка 8.5.1.1343; ваши документы не создавались, не проводились и не удалялись.

  12. Создайте серверный общий модуль УчебныеСсылкиДокументов и вставьте весь модуль одного урока. ВыполнитьПример() Экспорт вызывайте из своей процедуры формы с &НаСервереБезКонтекста; обновите конфигурацию БД.

  13. Для этого блока корень Учебная85, единственный справочник УчебныеТовары, единственный непроводимый документ УчебнаяЗаявка; регистров нет. Модули объекта/менеджера и подписки пустые, история выключена, расширений, обменов и фоновых заданий нет.

  14. Запускайте полный модуль одного урока отдельно, единственным пользователем. Нельзя заменять проверки имени/схемы рабочими объектами или передавать документ, найденный по первой строке.

  15. Уроки с записью/пометкой/удалением сами создают новый товар и новую заявку внутри своей транзакции, отслеживают только их ссылки и отменяют всё при успехе/ошибке. Фиксации нет; не вызывайте их внутри чужой транзакции.

  16. Уроки черновика/времени/макета вообще не записывают документы. Все помощники и подготовленные данные предоставлены в полном модуле, внешняя библиотека не нужна.

  17. Прямое Удалить не проверяет ссылочную целостность; откат учебной транзакции не делает этот метод безопасным для рабочего документа. Допустима только своя новая пустая база без внешних обработчиков. Здесь 1С не запускалась.

  18. УчебнаяЗаявка → Макеты → Добавить: УчебнаяПамяткаЧерновика, тип ТекстовыйДокумент. Запишите ровно две свои строки: OWN-DOC-85 и Черновик не записан. Обновите конфигурацию БД; этот текст не является печатной формой.

Процедура ВыполнитьПример() Экспорт
    
    Если Метаданные.Справочники.Найти("УчебныеТовары") = Неопределено Тогда
        ВызватьИсключение "Сначала создайте учебный справочник по подготовке";
    КонецЕсли;
    Если Метаданные.Документы.Найти("УчебнаяЗаявка") = Неопределено Тогда
        ВызватьИсключение "Сначала подготовьте собственную УчебнаяЗаявка";
    КонецЕсли;
    Если Метаданные.Справочники.Количество() <> 1
        Или Метаданные.Документы.Количество() <> 1
        Или Метаданные.РегистрыНакопления.Количество() <> 0
        Или Метаданные.РегистрыСведений.Количество() <> 0
        Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Тогда
        ВызватьИсключение "Нужны только собственные товар и непроводимая заявка, без регистров";
    КонецЕсли;
    ОписаниеДокумента = Метаданные.Документы.Найти("УчебнаяЗаявка");
    Если ОписаниеДокумента.Макеты.Найти("УчебнаяПамяткаЧерновика") = Неопределено Тогда
        ВызватьИсключение "Сначала подготовьте собственный текстовый макет";
    КонецЕсли;
    Черновик = Документы.УчебнаяЗаявка.СоздатьДокумент();
    Памятка = Черновик.ПолучитьМакет("УчебнаяПамяткаЧерновика");
    Если ТипЗнч(Памятка) <> Тип("ТекстовыйДокумент") Тогда
        ВызватьИсключение "Учебный макет должен быть именно текстовым документом";
    КонецЕсли;
    ТекстПамятки = Памятка.ПолучитьТекст();
    Сообщить(СтрНайти(ТекстПамятки, "OWN-DOC-85") > 0);
    Сообщить(СтрНайти(ТекстПамятки, "Черновик не записан") > 0);
    Сообщить(Черновик.ЭтоНовый());
    Сообщить(Черновик.Ссылка.Пустая());
    Сообщить("Свой текстовый макет прочитан без записи заявки, печати и файлов");
КонецПроцедуры

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

  1. В Конфигураторе подготовить только собственный именованный макет по инструкции ниже.

  2. Проверить наличие макета в метаданных своей заявки до вызова.

  3. Создать свой новый объект и вызвать ПолучитьМакет на нём, не на неопределённом входном объекте.

  4. До ПолучитьТекст проверить, что возвращён ТекстовыйДокумент, а не табличный или иной макет.

  5. Проверить две собственные строки-маркера, не печатать и не сохранять файл.

  6. Документ остаётся новым с пустой ссылкой.

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

  1. Два текстовых маркера найдены.

  2. Проверки нового объекта и пустой ссылки Истина.

  3. Нет вызовов Записать, Показать, Напечатать или записи файла.

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

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

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

  1. Непустая ссылка не доказывает существование записи; плановую ссылку не читать как сохранённый документ.

  2. Модифицированность относится к локальным изменениям объекта после чтения, не к изменениям другими пользователями. ВерсияДанных — непрозрачная readonly-строка.

  3. Заблокирован относится к блокировке именно этим объектом языка; это не общий индикатор всех блокировок записи. Собственную явную блокировку освобождайте отдельно, не рассчитывайте только на откат.

  4. Пометка не удаляет запись, а прямое Удалить удаляет сразу без проверки ссылок. Если документ проведён, установка пометки отменяет проведение; модифицированный объект перед пометкой вызывает ошибку.

  5. Статические проверки по справке и тексты контрольных условий не являются выполнением BSL в 1С.

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

Проверить стандартные Номер/Дата и собственные поля заявки

Для документа стандартные реквизиты отличаются от справочника. Ищем их обходом описаний и отдельно проверяем Комментарий и табличную часть Товары.

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

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

Подготовка

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

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

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

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

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

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

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

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

  9. Выполняйте только в новой базе Учебная85. Проверки читают настройки УчебнаяЗаявка; документы не создаются, не записываются и не проводятся.

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


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

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

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

  1. Описания стандартных реквизитов поддерживают обход; у коллекции нет Найти. Проверяем имена Номер и Дата через булевы признаки.

  2. Обычные реквизиты и табличные части — коллекции объектов метаданных, у них есть Найти. Ищем Комментарий и Товары, не значения конкретной заявки.

  3. Пустые дополнительные настройки ожидаются по подготовке. Ноль дополнительных индексов не означает отсутствие индексов платформы.

  4. Настройки блокировки читаются, но блокировки не устанавливаются и транзакции не начинаются.

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

  1. Девять проверок дают Истина; затем фактические настройки блокировки.

  2. В описании есть табличная часть Товары, но строки товаров и количество заявок базы не читались.

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

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

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

  1. Не используйте одинаковый набор стандартных полей для справочника и документа: у заявки Номер/Дата, а не Код/Наименование.

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

  3. Пустая коллекция собственных команд не доказывает отсутствие стандартных действий платформы.

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

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

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

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

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