Получить собственный макет этикетки через объект товара

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

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

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

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

Подготовка

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

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

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

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

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

  6. До запуска дополнительно создайте у УчебныеТовары макет УчебнаяЭтикетка типа Табличный документ. В его ячейках A1/A2 задайте учебные подписи и обновите конфигурацию.


Если Метаданные.Справочники.Найти("УчебныеТовары") = Неопределено Тогда
    ВызватьИсключение "Сначала создайте учебный справочник по подготовке";
КонецЕсли;
Товар = Справочники.УчебныеТовары.СоздатьЭлемент();
Товар.Наименование = "Учебная книга";
Товар.Артикул = "A-01";
Товар.Цена = 250;
Этикетка = Товар.ПолучитьМакет("УчебнаяЭтикетка");
Сообщить(ТипЗнч(Этикетка) = Тип("ТабличныйДокумент"));
Этикетка.Область(1, 1).Текст = Товар.Наименование;
Этикетка.Область(2, 1).Текст = "Артикул: " + Товар.Артикул;
Сообщить(Этикетка.Область(1, 1).Текст = "Учебная книга");
Сообщить(Этикетка.Область(2, 1).Текст = "Артикул: A-01");
Сообщить(Товар.ЭтоНовый());

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

  1. ПолучитьМакет получает объект ресурса по точному имени. Отсутствующий макет должен исправляться в подготовке, а не заменяться произвольным файлом.

  2. Область(1,1) адресует ячейку по строке/колонке. Наименование и артикул берём из собственного незаписанного товара.

  3. Изменяем полученный табличный документ в памяти. Показ, печать и запись PDF/файла не вызываются.

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

  1. Четыре сообщения Истина; A1 содержит Учебная книга, A2 — Артикул: A-01.

  2. Проверьте макет в Конфигураторе: присваивание ячеек во время выполнения не редактировало источник метаданных.

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

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

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

  1. Имя макета и имя товара — разные имена; макет не является реквизитом объекта.

  2. Для макета другого типа методы Область/Текст неприменимы. Подготовка явно задаёт Табличный документ.

  3. Этот код не создаёт промышленную печатную форму и не проверяет физическую печать.

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

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

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

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

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