Ответ в теме: Как в ЗУП 3.1 получить все реквизиты документа «Приём на работу»?

База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как в ЗУП 3.1 получить все реквизиты документа «Приём на работу»? › Ответ в теме: Как в ЗУП 3.1 получить все реквизиты документа «Приём на работу»?

#38389
bot_avaOdin — Одинэсник
Участник

    Чтобы во внешней печатной форме (ВПФ) для документа «ПриемНаРаботу» в ЗУП 3.1 вывести все реквизиты документа, нужно в модуле обработки ВПФ получить ссылку на объект документа и затем обратиться к его реквизитам.

    Пример кода на языке 1С (BSL) для процедуры формирования табличного документа с выводом всех реквизитов документа «ПриемНаРаботу»:

    |Процедура Печать(Объекты, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    | Если Объекты = Неопределено Или Объекты.Количество() = 0 Тогда
    | Возврат;
    | КонецЕсли;
    |
    | ДокументПриемНаРаботу = Объекты[0];
    |
    | ТабДок = Новый ТабличныйДокумент;
    | ТабДок.Колонки.Добавить(«Реквизит»);
    | ТабДок.Колонки.Добавить(«Значение»);
    |
    | // Получаем метаданные документа
    | МетаданныеДокумента = ДокументПриемНаРаботу.Метаданные();
    |
    | Для каждого Реквизит Из МетаданныеДокумента.Реквизиты Цикл
    | ИмяРеквизита = Реквизит.Имя;
    | ЗначениеРеквизита = ДокументПриемНаРаботу[ИмяРеквизита];
    | // Преобразуем значение в строку для вывода
    | Если ЗначениеРеквизита = Неопределено Тогда
    | СтрокаЗначения = «»;
    | ИначеЕсли ТипЗнч(ЗначениеРеквизита) = Тип(«Дата») Тогда
    | СтрокаЗначения = Формат(ЗначениеРеквизита, «ДФ=dd.MM.yyyy»);
    | ИначеЕсли ТипЗнч(ЗначениеРеквизита) = Тип(«СправочникСсылка») Тогда
    | СтрокаЗначения = ЗначениеРеквизита.Представление;
    | Иначе
    | СтрокаЗначения = Формат(ЗначениеРеквизита);
    | КонецЕсли;
    |
    | ТабДок.ДобавитьСтроку();
    | ТабДок.Значения[ТабДок.КоличествоСтрок, «Реквизит»] = Реквизит.Имя;
    | ТабДок.Значения[ТабДок.КоличествоСтрок, «Значение»] = СтрокаЗначения;
    | КонецЦикла;
    |
    | // Вывод табличного документа на печать или в форму
    | ПоказатьТабличныйДокумент(ТабДок);
    |КонецПроцедуры

    Объяснение:
    — ВПФ получает массив объектов, берём первый — это ссылка на документ «ПриемНаРаботу».
    — Через метаданные документа перебираем все реквизиты.
    — Для каждого реквизита получаем значение из объекта.
    — Приводим значение к строке с учётом типа (дата, справочник и т.п.).
    — Заполняем табличный документ двумя колонками: имя реквизита и его значение.
    — Выводим табличный документ на экран.

    Если нужно вывести реквизиты табличных частей, то нужно отдельно получить табличные части и пройтись по ним.

    Для табличных частей пример:

    |Для каждого ТабЧасть Из МетаданныеДокумента.ТабличныеЧасти Цикл
    | ИмяТабЧасти = ТабЧасть.Имя;
    | Таблица = ДокументПриемНаРаботу[ИмяТабЧасти];
    | Для каждого Строка Из Таблица Цикл
    | // Аналогично выводим реквизиты строк табличной части
    | КонецЦикла;
    |КонецЦикла;

    Рекомендую посмотреть здесь, как работать с ВПФ и табличными документами:
    https://infostart.ru/public/191796/
    https://infostart.ru/1c/articles/633085/

    База знаний 1С