Добрый день!
Возникла следующая ситуация,
Есть Макет печатной формы, в него нужно добавить строку "Заказчик" с реквизитом <Наименование>,
который будет включать в себя Наименование, Контактное лицо и телефон
В модуле Маршрутного листа в Функцию "ПечатьМаршрутныйЛистСЗаказами" добавил

```1c
    //Контрагент, контактное лицо
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | уатЗаказГрузоотправителя.Контрагент.Наименование КАК Наименование,
    | уатЗаказГрузоотправителя.Контрагент.ОсновноеКонтактноеЛицо КАК ОсновноеКонтактноеЛицо
    |ИЗ
    | Документ.уатЗаказГрузоотправителя КАК уатЗаказГрузоотправителя";

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    КонтрагентКонтактноеЛицо = ";
    Если ВыборкаДетальныеЗаписи.Следующий() Тогда
    КонтрагентИКонтактноеЛицо =
    " " + ВыборкаДетальныеЗаписи.Наименование
    +
    " " + ВыборкаДетальныеЗаписи.ОсновноеКонтактноеЛицо;
    КонецЕсли;
    Возврат КонтрагентИКонтактноеЛицо;

    //Телефон
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | уатЗаказГрузоотправителя.Контрагент.КонтактнаяИнформация.(
    | НомерТелефона КАК НомерТелефона
    | )
    |ИЗ
    | Документ.уатЗаказГрузоотправителя КАК уатЗаказГрузоотправителя";

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Если ВыборкаДетальныеЗаписи.Следующий() Тогда
    Телефон = ВыборкаДетальныеЗаписи.НомерТелефона;
    КонецЕсли;
    //Выводим данные
    ОбластьМакетаШапка.Параметры.Наименование = КонтрагентИКонтактноеЛицо + Телефон;
```

И при печати Маршрутного Листа детализация по заказам выходит ошибка:
Значение не является значением объектного типа "Защита"
Код:

```1c
    // Процедура устанавливает свойства Защита и ТолькоПросмотр для табл. документов
    //согласно настройкам пользователя УАТ
    //
    Процедура УстановитьРедактированиеПечатныхФормДокумента(КоллекцияПечатныхФорм) Экспорт
    ЗащитаПечФорм = уатПраваИНастройки.уатПолучитьПраваИНастройкиПользователя(, "ЗащитаПечатныхФорм");
    ТолькоПросмотрПечФорм = уатПраваИНастройки.уатПолучитьПраваИНастройкиПользователя(, "ОткрытиеПечатныхФормДокументовВРежимеПросмотра");

    Для Каждого ТекПечФорма Из КоллекцияПечатныхФорм Цикл
    ТекПечФорма.ТабличныйДокумент.Защита = ЗащитаПечФорм;

    ТекПечФорма.ТабличныйДокумент.ТолькоПросмотр = ТолькоПросмотрПечФорм;
    Для Каждого ТекОбл Из ТекПечФорма.ТабличныйДокумент.Области Цикл
    ТекОбл.Защита = ЗащитаПечФорм;
    КонецЦикла;
    КонецЦикла;
    КонецПроцедуры
```

Направьте на путь истинный
---
Спасибо, разобрался вот итоговый код

```1c
    Функция ПолучитьПараметрыЗаказчика(СсылкаНаМЛ)

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 1
    | уатМаршрутныйЛистЗаказы.ЗаказГрузоотправителя.Контрагент КАК Контрагент,
    | уатМаршрутныйЛистЗаказы.Контрагент.ОсновноеКонтактноеЛицо
    |ИЗ
    | Документ.уатМаршрутныйЛист.Заказы КАК уатМаршрутныйЛистЗаказы
    |ГДЕ
    | уатМаршрутныйЛистЗаказы.Ссылка = &Ссылка";

    Запрос.УстановитьПараметр("Ссылка", СсылкаНаМЛ);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Если ВыборкаДетальныеЗаписи.Следующий() Тогда
    Телефон = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
    ТелефонКонтрагента = уатОбщегоНазначенияСервер.ПолучитьКонтактнуюИнформацию(ВыборкаДетальныеЗаписи.Контрагент,Телефон);
    ВидДругое = Справочники.ВидыКонтактнойИнформации.ДругаяИнформацияКонтрагенты;
    Другое = уатОбщегоНазначенияСервер.ПолучитьКонтактнуюИнформацию(ВыборкаДетальныеЗаписи.Контрагент,ВидДругое);
    ИнфоКонтрагент =
    "
    + ВыборкаДетальныеЗаписи.Контрагент.Наименование
    + ", Контактное лицо: " + ВыборкаДетальныеЗаписи.Контрагент.ОсновноеКонтактноеЛицо
    + ", Телефон: " + ТелефонКонтрагента
    + ", Другое: " + Другое;
    КонецЕсли;

    Возврат ИнфоКонтрагент;
    КонецФункции
```

```1c
    ОбластьМакетаШапка.Параметры.ПредставлениеЗаказчика = ПолучитьПараметрыЗаказчика(ТекущийДокумент);
```
---
```1c
    ИнфоКонтрагент =
    "
    + ВыборкаДетальныеЗаписи.Контрагент.Наименование
    + ?(ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.Контрагент.ОсновноеКонтактноеЛицо),", Контактное лицо: " + ВыборкаДетальныеЗаписи.Контрагент.ОсновноеКонтактноеЛицо, ")
    + ?(ЗначениеЗаполнено(ТелефонКонтрагента), ", Телефон: " + ТелефонКонтрагента, ")
    + ?(ЗначениеЗаполнено(Другое),", Другое: " + Другое, ");
```
---
Посмотрите в печати любого похожего документа будет код на подобии

```1c
    ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.Дата), "ПолноеНаименование,");
```

или похожим способом можно получить структуру со всякими Инн, телефонами, адресами и прочим.

В примере вашего кода лучше явно "привести к строке" поставив в начале кавычки

```1c
    ОбластьМакетаШапка.Параметры.Наименование = " + КонтрагентИКонтактноеЛицо +" " + Телефон;
```

в дальнейшем обязательно пригодится )
---
```1c
    Возврат КонтрагентИКонтактноеЛицо;
```
 просто закомментируйте эту строчку.. далее определите переменную Телефон = ""; т.к. её может не быть в контактной информации и она выпадет с ошибкой что переменная не определена, ну и в посте номер (2) я уже написал про

```1c
    ОбластьМакетаШапка.Параметры.Наименование = " + КонтрагентИКонтактноеЛицо +" " + Телефон;
```
---
```1c
    Возврат КонтрагентИКонтактноеЛицо;
```

просто закомментируйте эту строчку..
Да все работает, выводятся данные КонтрагентИКонтактноеЛицо, а вот с Телефоном проблемы, передалал запрос, но все равно пустая строка

```1c
    //Телефон
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | КонтрагентыКонтактнаяИнформация.НомерТелефона КАК НомерТелефона1
    |ИЗ
    | Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация";

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Если ВыборкаДетальныеЗаписи.Следующий() Тогда
    Телефон = ВыборкаДетальныеЗаписи.НомерТелефона1;
    КонецЕсли;
```
---
Есть мысли что у меня нет прав на изменение макетов,
 // Процедура устанавливает свойства Защита и ТолькоПросмотр для табл. документов согласно настройкам пользователя УАТ
Но если закомментировать данные которые я ввожу в модуль, и оставить на макете надпись Заказчик, то документ выводится на печать...
help
---
У Вас в коде почему-то посреди печати стоит "Возврат КонтрагентИКонтактноеЛицо;" и видимо дальше вместо КоллекцииПечатныхФорм передаётся контактное лицо которое и выпадает с ошибкой.. или это вы выложили разные процедуры общим текстом ?
Выложите всю процедуру печати и всё станет ясно.
---
Значение не является значением объектного типа "Защита"
Означает, что в момент
 ТекПечФорма.ТабличныйДокумент.Защита
ТекПечФорма.ТабличныйДокумент не имеет свойства "Защита", что говорит о том, что ТекПечФорма.ТабличныйДокумент - совсем не табличный документ в этот момент.

А если внимательно поглядеть на код, то можно увидеть:
Возврат КонтрагентИКонтактноеЛицо;
И что-то мне подсказывает, что это прописано в функции, формирующей и заполняющей ТабличныйДокумент, который она потом и должна возвращать. А возвращает КонтрагентИКонтактноеЛицо - строка.

Стоит внимательно рассмотреть код формирования ПФ, и правильно разместить свои доработки.
---
ВСЯ Функция

```1c
    Функция ПечатьМаршрутныйЛистСЗаказами(МассивОбъектов, ОбъектыПечати)

    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.КлючПараметровПечати = "ПараметрыПечати_МаршрутныйЛист";
    ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;

    ПервыйДокумент = Истина;

    Для Каждого ТекущийДокумент Из МассивОбъектов Цикл
    Если Не ПервыйДокумент Тогда
    ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;
    ПервыйДокумент = Ложь;

    НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;

    ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_МаршрутныйЛист_МаршрутныйЛистСЗаказами";
    Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.уатМаршрутныйЛист.ПФ_MXL_МаршрутныйЛистСЗаказами");

    //Контрагент, контактное лицо
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | уатЗаказГрузоотправителя.Контрагент.Наименование КАК Наименование,
    | уатЗаказГрузоотправителя.Контрагент.ОсновноеКонтактноеЛицо КАК ОсновноеКонтактноеЛицо
    |ИЗ
    | Документ.уатЗаказГрузоотправителя КАК уатЗаказГрузоотправителя";

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    КонтрагентКонтактноеЛицо = ";
    Если ВыборкаДетальныеЗаписи.Следующий() Тогда
    КонтрагентИКонтактноеЛицо =
    " " + ВыборкаДетальныеЗаписи.Наименование
    +
    " " + ВыборкаДетальныеЗаписи.ОсновноеКонтактноеЛицо;
    КонецЕсли;
    Возврат КонтрагентИКонтактноеЛицо;
    //
    //Телефон
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | уатЗаказГрузоотправителя.Контрагент.КонтактнаяИнформация.(
    | НомерТелефона КАК НомерТелефона
    | )
    |ИЗ
    | Документ.уатЗаказГрузоотправителя КАК уатЗаказГрузоотправителя";

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Если ВыборкаДетальныеЗаписи.Следующий() Тогда
    Телефон = ВыборкаДетальныеЗаписи.НомерТелефона;
    КонецЕсли;
    //
    // Заголовок
    ОбластьМакетаШапка = Макет.ПолучитьОбласть("Заголовок");
    ОбластьМакетаШапка.Параметры.ТекстЗаголовка = уатОбщегоНазначенияТиповые.уатСформироватьЗаголовокДокумента(ТекущийДокумент, "Маршрутный лист");
    ОбластьМакетаШапка.Параметры.ПредставлениеПеревозчика = уатОбщегоНазначенияТиповыеСервер.ОписаниеОрганизации(
    уатОбщегоНазначенияСервер.СведенияОЮрФизЛице(ТекущийДокумент.Контрагент, ТекущийДокумент.Дата), "ПолноеНаименование");
    ОбластьМакетаШапка.Параметры.ПредставлениеТС = уатОбщегоНазначения.уатПредставлениеТС(ТекущийДокумент.ТС, ТекущийДокумент.Организация)
    + " (" + уатОбщегоНазначения.уатПредставлениеМоделиТС(ТекущийДокумент.ТС) + ")";
    ОбластьМакетаШапка.Параметры.Водитель = ТекущийДокумент.Водитель1;
    ОбластьМакетаШапка.Параметры.ПредставлениеВодителя = уатОбщегоНазначения.уатФИОСотрудникаПолноеСтрокой(ТекущийДокумент.Водитель1, НачалоДня(ТекущийДокумент.Дата));

    //Заполняем Наименование
    ОбластьМакетаШапка.Параметры.Наименование = КонтрагентИКонтактноеЛицо + Телефон;
    //

    Если ТекущийДокумент.Заказы.Количество() Тогда
    ОбластьМакетаШапка.Параметры.ПлановоеВремяВыезда = ПолучитьВремяОтправленияПлан(ТекущийДокумент);

    Если ТекущийДокумент.Заказы.НайтиСтроки(Новый Структура("Выполнен", Истина)).Количество() Тогда
    ОбластьМакетаШапка.Параметры.ФактическоеВремяВыезда = ТекущийДокумент.ДатаИВремяОтправления;
    КонецЕсли;

    ОбластьМакетаШапка.Параметры.ПлановоеВремяВозврата = ПолучитьВремяВозвратаПлан(ТекущийДокумент);

    Если ТекущийДокумент.Выполнен Тогда
    ОбластьМакетаШапка.Параметры.ФактическоеВремяВозврата = ТекущийДокумент.ДатаИВремяВыполнения;
    ОбластьМакетаШапка.Параметры.ДатаВыполнения = ТекущийДокумент.ДатаИВремяВыполнения;
    КонецЕсли;

    ПервыйПункт = ТекущийДокумент.Заказы[0].Пункт;
    ПерваяСтоянка = 0;
    ПредЗаказ = Неопределено;

    Для Сч = 0 По ТекущийДокумент.Заказы.Количество()-1 Цикл
    ТекСтрока = ТекущийДокумент.Заказы[Сч];
    Если Не ТекСтрока.Пункт = ПервыйПункт Тогда
    Прервать;
    КонецЕсли;

    Если Не ПредЗаказ = ТекСтрока.ЗаказГрузоотправителя Тогда
    ПерваяСтоянка = уатЗащищенныеФункцииСервер.СложитьВремя(ПерваяСтоянка, ТекСтрока.Стоянка);
    ПредЗаказ = ТекСтрока.ЗаказГрузоотправителя;
    КонецЕсли;
    КонецЦикла;

    мВремяПрибытия = уатЗащищенныеФункцииСервер.СложитьВремя(ТекущийДокумент.ДатаИВремяОтправленияПлан, -ПерваяСтоянка);
    КонецЕсли;

    ТабДокМаршрут = Новый ТабличныйДокумент;
    ТабДокЗаказ = Новый ТабличныйДокумент;

    ОбластьМакета = Макет.ПолучитьОбласть("МаршрутШапка");
    ТабДокМаршрут.Вывести(ОбластьМакета);
    ОбластьМакетаАдрес = Макет.ПолучитьОбласть("СтрокаАдрес");
    ОбластьМакетаЗаказ = Макет.ПолучитьОбласть("СтрокаЗаказ");

    ПредАдр = 0;
    ПредСтрока = Неопределено;
    ИзменилсяЗаказ = Ложь;
    ОбщийПробег = 0; мСтоянка = 0;
    СчАдресов = 1; СчЗаказов = 1;
    МаксВес = 0; МаксОбъем = 0; МаксКолМест = 0; МаксЗаказов = 0;
    ПеревезВес = 0; ПеревезОбъем = 0; ПеревезКолМест = 0; ПеревезЗаказов = 0;
    мВес = 0; мОбъем = 0; мКолМест = 0;
    ТекВес = 0; ТекОбъем = 0; ТекКолМест = 0; ТекКолЗаказов = 0;

    Для Каждого ТекСтрока ИЗ ТекущийДокумент.Заказы цикл

    Если ТекСтрока.Пункт = Неопределено ИЛИ НЕ ЗначениеЗаполнено(ТекСтрока.Пункт) тогда
    Если НЕ ТекСтрока.ЗаказГрузоотправителя.Пустая() И ТекСтрока.ТипТочкиМаршрута = Перечисления.уатТипыТочекМаршрута.Погрузка тогда
    мАдр = ТекСтрока.ЗаказГрузоотправителя.АдресОтправления;
    ИначеЕсли НЕ ТекСтрока.ЗаказГрузоотправителя.Пустая() И ТекСтрока.ТипТочкиМаршрута = Перечисления.уатТипыТочекМаршрута.Погрузка тогда
    мАдр = ТекСтрока.ЗаказГрузоотправителя.АдресДоставки;
    Иначе
    Продолжить;
    КонецЕсли;
    Иначе
    мАдр = ТекСтрока.Пункт;
    КонецЕсли;

    мАдр = ПолучитьАдресСтрокой(мАдр);

    Если мАдр <> ПредАдр тогда

    Если ПредАдр <> 0 тогда
    //выводим старую
    ОбластьМакетаАдрес.Параметры.Стоянка = мСтоянка;
    ТабДокМаршрут.Вывести(ОбластьМакетаАдрес);
    Если ИзменилсяЗаказ = Истина тогда
    ОбластьМакетаЗаказ.Параметры.Вес = мВес;
    ОбластьМакетаЗаказ.Параметры.Объем = мОбъем;
    ОбластьМакетаЗаказ.Параметры.КоличествоМест = мКолМест;
    Если СчАдресов >= 2 тогда
    мВремяПрибытия = уатЗащищенныеФункцииСервер.СложитьВремя(мВремяПрибытия, мСтоянка);
    ОбластьМакетаАдрес.Параметры.ПрибытиеПлан = мВремяПрибытия;
    КонецЕсли;
    ТабДокЗаказ.Вывести(ОбластьМакетаЗаказ);
    мВес = 0; мОбъем = 0; мКолМест = 0;
    КонецЕсли;
    ТабДокМаршрут.Вывести(ТабДокЗаказ);
    ТабДокЗаказ = Новый ТабличныйДокумент;
    ИзменилсяЗаказ = Ложь;
    КонецЕсли;

    ОбластьМакетаАдрес = Макет.ПолучитьОбласть("СтрокаАдрес");
    ОбластьМакетаАдрес.Параметры.Адрес = мАдр;
    ОбластьМакетаАдрес.Параметры.РасстояниеВремя = " + ТекСтрока.Расстояние + " / " + Формат(ТекСтрока.Время,"ЧДЦ=2; ЧРД=:; ЧН=0:00");
    ОбластьМакетаАдрес.Параметры.ПрибытиеПлан = мВремяПрибытия;
    ОбластьМакетаАдрес.Параметры.ПрибытиеФакт = ТекСтрока.ПрибытиеФакт;
    ОбластьМакетаАдрес.Параметры.Номер = СчАдресов;
    мВремяПрибытия = уатЗащищенныеФункцииСервер.СложитьВремя(мВремяПрибытия,ТекСтрока.Время);
    мСтоянка = 0;
    СчАдресов = СчАдресов + 1;
    СчЗаказов = 1;
    ОбщийПробег = ОбщийПробег + ТекСтрока.Расстояние;

    КонецЕсли;

    ПредАдр = мАдр;
    //произвольный пункт
    Если ТекущийДокумент.ВидОперации = Перечисления.уатВидыОперацийМаршрутныйЛист.ПоЗаказуГрузоотправителя И НЕ ЗначениеЗаполнено(ТекСтрока.ЗаказГрузоотправителя)
    ИЛИ ТекущийДокумент.ВидОперации = Перечисления.уатВидыОперацийМаршрутныйЛист.Произвольный И НЕ ЗначениеЗаполнено(ТекСтрока.Контрагент)
    И НЕ ЗначениеЗаполнено(ТекСтрока.Номенклатура) тогда

    мСтоянка = мСтоянка + ТекСтрока.Стоянка;
    ПредСтрока = ТекСтрока;
    Продолжить;
    КонецЕсли;

    Если ПредСтрока = Неопределено
    ИЛИ (ТекущийДокумент.ВидОперации = Перечисления.уатВидыОперацийМаршрутныйЛист.ПоЗаказуГрузоотправителя И
    (ПредСтрока.ЗаказГрузоотправителя <> ТекСтрока.ЗаказГрузоотправителя ИЛИ ПредСтрока.ТипТочкиМаршрута <> ТекСтрока.ТипТочкиМаршрута))
    ИЛИ (ТекущийДокумент.ВидОперации = Перечисления.уатВидыОперацийМаршрутныйЛист.Произвольный И ТекСтрока.Контрагент <> ПредСтрока.Контрагент) Тогда

    Если ИзменилсяЗаказ = Истина Тогда
    //Выводим
    ОбластьМакетаЗаказ.Параметры.Вес = мВес;
    ОбластьМакетаЗаказ.Параметры.Объем = мОбъем;
    ОбластьМакетаЗаказ.Параметры.КоличествоМест = мКолМест;
    ТабДокЗаказ.Вывести(ОбластьМакетаЗаказ);
    ИзменилсяЗаказ = Ложь;
    мВес = 0; мОбъем = 0; мКолМест = 0;
    КонецЕсли;
    мСтоянка = уатЗащищенныеФункцииСервер.СложитьВремя(мСтоянка,ТекСтрока.Стоянка);
    ОбластьМакетаЗаказ = Макет.ПолучитьОбласть("СтрокаЗаказ");
    мКонтр = ";
    Если ТекСтрока.ЗаказГрузоотправителя.Пустая() И ЗначениеЗаполнено(ТекСтрока.Контрагент) тогда
    мКонтр = ТекСтрока.Контрагент;
    Иначе
    Если ТекСтрока.ТипТочкиМаршрута = Перечисления.уатТипыТочекМаршрута.Погрузка тогда
    мКонтр = ТекСтрока.ЗаказГрузоотправителя.Грузоотправитель;
    Иначе
    мКонтр = ТекСтрока.ЗаказГрузоотправителя.Грузополучатель;
    КонецЕсли;
    Если мКонтр = Неопределено ИЛИ НЕ ЗначениеЗаполнено(мКонтр) тогда
    мКонтр = ТекСтрока.ЗаказГрузоотправителя.Контрагент;
    КонецЕсли;
    КонецЕсли;

    ОбластьМакетаЗаказ.Параметры.Номер = " + (СчАдресов - 1) + "." + СчЗаказов;
    ОбластьМакетаЗаказ.Параметры.Контрагент = мКонтр;
    ОбластьМакетаЗаказ.Параметры.Заказ = " + ТекСтрока.ЗаказГрузоотправителя.Номер + " от " + ТекСтрока.ЗаказГрузоотправителя.Дата;
    ОбластьМакетаЗаказ.Параметры.НомерПоУчетуЗаказчика = ТекСтрока.ЗаказГрузоотправителя.НомерПоУчетуЗаказчика;
    ОбластьМакетаЗаказ.Параметры.Операция = ТекСтрока.ТипТочкиМаршрута;

    СчЗаказов = СчЗаказов + 1;
    ИзменилсяЗаказ = Истина;
    КонецЕсли;

    мВес = мВес + ТекСтрока.ВесБрутто;
    мОбъем = мОбъем + ТекСтрока.Объем;
    мКолМест = мКолМест + ТекСтрока.КоличествоМест;
    Если ТекСтрока.ТипТочкиМаршрута = Перечисления.уатТипыТочекМаршрута.Погрузка тогда
    ПеревезВес = ПеревезВес + ТекСтрока.ВесБрутто;
    ПеревезОбъем = ПеревезОбъем + ТекСтрока.Объем;
    ПеревезКолМест = ПеревезКолМест + ТекСтрока.КоличествоМест;
    ТекВес = ТекВес + ТекСтрока.ВесБрутто;
    ТекОбъем = ТекОбъем + ТекСтрока.Объем;
    ТекКолМест = ТекКолМест + ТекСтрока.КоличествоМест;
    ПеревезЗаказов = ПеревезЗаказов + 1;
    ТекКолЗаказов = ТекКолЗаказов + 1;
    ИначеЕсли ТекСтрока.ТипТочкиМаршрута = Перечисления.уатТипыТочекМаршрута.Разгрузка тогда
    ТекВес = ТекВес - ТекСтрока.ВесБрутто;
    ТекОбъем = ТекОбъем - ТекСтрока.Объем;
    ТекКолМест = ТекКолМест - ТекСтрока.КоличествоМест;
    ТекКолЗаказов = ТекКолЗаказов - 1;
    КонецЕсли;
    МаксВес = Макс(МаксВес ,ТекВес);
    МаксОбъем = Макс(МаксОбъем ,ТекОбъем);
    МаксКолМест = Макс(МаксКолМест,ТекКолМест);
    МаксЗаказов = Макс(МаксЗаказов,ТекКолЗаказов);

    ПредСтрока = ТекСтрока;

    КонецЦикла;

    ОбластьМакетаАдрес.Параметры.Стоянка = мСтоянка;
    ТабДокМаршрут.Вывести(ОбластьМакетаАдрес);
    Если ИзменилсяЗаказ = Истина тогда
    ОбластьМакетаЗаказ.Параметры.Вес = мВес;
    ОбластьМакетаЗаказ.Параметры.Объем = мОбъем;
    ОбластьМакетаЗаказ.Параметры.КоличествоМест = мКолМест;
    ТабДокЗаказ.Вывести(ОбластьМакетаЗаказ);
    КонецЕсли;
    ТабДокМаршрут.Вывести(ТабДокЗаказ);
    ОбластьМакета = Макет.ПолучитьОбласть("МаршрутПодвал");
    ОбластьМакета.Параметры.ПеревезеноВес = ПеревезВес;
    ОбластьМакета.Параметры.ПеревезеноОбъем = ПеревезОбъем;
    ОбластьМакета.Параметры.ПеревезеноКолМест = ПеревезКолМест;
    ОбластьМакета.Параметры.ПеревезеноЗаказов = ПеревезЗаказов;
    ОбластьМакета.Параметры.МаксВес = МаксВес;
    ОбластьМакета.Параметры.МаксОбъем = МаксОбъем;
    ОбластьМакета.Параметры.МаксКолМест = МаксКолМест;
    ОбластьМакета.Параметры.МаксЗаказов = МаксЗаказов;
    ТабДокМаршрут.Вывести(ОбластьМакета);

    ТабличныйДокумент.Вывести(ОбластьМакетаШапка);
    ТабличныйДокумент.Вывести(ТабДокМаршрут);

    УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ТекущийДокумент);

    КонецЦикла;

    ТабличныйДокумент.АвтоМасштаб = Истина;

    Возврат ТабличныйДокумент;

    КонецФункции // ПечатнаяФорма()
```
---
//Контрагент, контактное лицо
//Телефон
//Заполняем Наименование
Это все что я добавлял
---
Как минимум в запросе не хватает условия
```1c
    ГДЕ ссылка = &ВашКонтрагент
```
 ну и скорее всего других отборов на Вид/Тип контактной информации (где выбирается что это Телефон а не адрес или почта) , с контактнымЛицом та же история
---
Контактное лицо выводится корректно, насчет
(10) (где выбирается что это Телефон а не адрес или почта)
немного не понял, у меня же в запросе указано
 КонтрагентыКонтактнаяИнформация.НомерТелефона
---
Не уверен что он записывает в этот реквизит телефон. Думаю вам нужно поле "Представление" и при этом указать и Тип и Вид в условии, для теста заполните поле телефон, а в запросе выберите все поля из таблицы КонтактнаяИнформация, для теста напишите таб = Запрос.Выполнить().Выгрузить(); и посмотрите что содержится в таблице и в какой колонке (подчеркну, что это для теста и получать инфу уже из выборки лучше)
---
```1c
    "ВЫБРАТЬ
    | КонтрагентыКонтактнаяИнформация.НомерТелефона КАК НомерТелефона1
    |ИЗ
    | Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
    |ГДЕ
    | КонтрагентыКонтактнаяИнформация.Ссылка = &ВашКонтрагент";
```

Прошу прощение за нубство, но что такое &ВашКонтрагент? Название контрагента?
---
да Ссылка = &Контрагент , при этом нужно для запроса определить параметр
Запрос.УстановитьПараметр("Контрагент" , ТекущийДокумент.Контрагент);
---
Получилось, номер телефона находится в НомерТелефонаБезКодов

```1c
    //Телефон
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | КонтрагентыКонтактнаяИнформация.НомерТелефонаБезКодов
    |ИЗ
    | Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация";

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Если ВыборкаДетальныеЗаписи.Следующий() Тогда
    Телефон = ВыборкаДетальныеЗаписи.НомерТелефонаБезКодов;
    КонецЕсли;
```

Вот код :)
---
Без использования условия

```1c
    ГДЕ
    | КонтрагентыКонтактнаяИнформация.Ссылка = &Контрагент
```
 ваш запрос будет получать телефоны всех контрагентов в базе
---
Спасибо, разобрался вот итоговый код

```1c
    Функция ПолучитьПараметрыЗаказчика(СсылкаНаМЛ)

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 1
    | уатМаршрутныйЛистЗаказы.ЗаказГрузоотправителя.Контрагент КАК Контрагент,
    | уатМаршрутныйЛистЗаказы.Контрагент.ОсновноеКонтактноеЛицо
    |ИЗ
    | Документ.уатМаршрутныйЛист.Заказы КАК уатМаршрутныйЛистЗаказы
    |ГДЕ
    | уатМаршрутныйЛистЗаказы.Ссылка = &Ссылка";

    Запрос.УстановитьПараметр("Ссылка", СсылкаНаМЛ);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Если ВыборкаДетальныеЗаписи.Следующий() Тогда
    Телефон = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
    ТелефонКонтрагента = уатОбщегоНазначенияСервер.ПолучитьКонтактнуюИнформацию(ВыборкаДетальныеЗаписи.Контрагент,Телефон);
    ВидДругое = Справочники.ВидыКонтактнойИнформации.ДругаяИнформацияКонтрагенты;
    Другое = уатОбщегоНазначенияСервер.ПолучитьКонтактнуюИнформацию(ВыборкаДетальныеЗаписи.Контрагент,ВидДругое);
    ИнфоКонтрагент =
    "
    + ВыборкаДетальныеЗаписи.Контрагент.Наименование
    + ", Контактное лицо: " + ВыборкаДетальныеЗаписи.Контрагент.ОсновноеКонтактноеЛицо
    + ", Телефон: " + ТелефонКонтрагента
    + ", Другое: " + Другое;
    КонецЕсли;

    Возврат ИнфоКонтрагент;
    КонецФункции
```

```1c
    ОбластьМакетаШапка.Параметры.ПредставлениеЗаказчика = ПолучитьПараметрыЗаказчика(ТекущийДокумент);
```
---
Подскажите пожалуйста, как реализовать возможность вывода на печать только заполненных выражений.
Например:

значение "Контактное лицо" пустое, а "Другое" заполнено. Выводится на печать "Другое"

значение "Контактное лицо" заполнено, а "Другое" пустое. Выводится на печать "Контактное лицо"

значение "Контактное лицо" заполнено, и "Другое" заполнено. Выводится на печать "Контактное лицо" и "Другое"
---
```1c
    ИнфоКонтрагент =
    "
    + ВыборкаДетальныеЗаписи.Контрагент.Наименование
    + ?(ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.Контрагент.ОсновноеКонтактноеЛицо),", Контактное лицо: " + ВыборкаДетальныеЗаписи.Контрагент.ОсновноеКонтактноеЛицо, ")
    + ?(ЗначениеЗаполнено(ТелефонКонтрагента), ", Телефон: " + ТелефонКонтрагента, ")
    + ?(ЗначениеЗаполнено(Другое),", Другое: " + Другое, ");
```
---
Спасибо большое, тоже пытался сделать что нибудь с "ЗначениеЗаполнено"
Все работает
---
Если в запросе не будет контрагента то вылетит ошибка т.к. переменная ИнфоКонтрагент не будет определена.
В данном случае можно обойтись и без запроса, и получать "через точку" всё, типа
```1c
    Контрагент = СсылкаНаМЛ.ЗаказГрузоотправителя.Контрагент;
```

только перед этим надо будет проверить заполнен ли ЗаказГрузоотправителя. просто для примера)