Ошибка "Защита" как обойти?

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

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

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


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


Направьте на путь истинный
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
17. Romakon92 23.05.17 12:59 Сейчас в теме
(16) Спасибо, разобрался вот итоговый код

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



ОбластьМакетаШапка.Параметры.ПредставлениеЗаказчика = ПолучитьПараметрыЗаказчика(ТекущийДокумент);
19. BackinSoda 23.05.17 13:38 Сейчас в теме
ИнфоКонтрагент = 
        "" 
        + ВыборкаДетальныеЗаписи.Контрагент.Наименование
        + ?(ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.Контрагент.ОсновноеКонтактноеЛицо),", Контактное лицо: " + ВыборкаДетальныеЗаписи.Контрагент.ОсновноеКонтактноеЛицо, "")
        + ?(ЗначениеЗаполнено(ТелефонКонтрагента), ", Телефон: " + ТелефонКонтрагента, "")  
        + ?(ЗначениеЗаполнено(Другое),", Другое: " + Другое, "");
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. BackinSoda 18.05.17 13:32 Сейчас в теме
Посмотрите в печати любого похожего документа будет код на подобии
ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.Дата), "ПолноеНаименование,");

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

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

в дальнейшем обязательно пригодится )
8. BackinSoda 18.05.17 15:02 Сейчас в теме
 Возврат КонтрагентИКонтактноеЛицо;
просто закомментируйте эту строчку.. далее определите переменную Телефон = ""; т.к. её может не быть в контактной информации и она выпадет с ошибкой что переменная не определена, ну и в посте номер (2) я уже написал про
ОбластьМакетаШапка.Параметры.Наименование = "" + КонтрагентИКонтактноеЛицо +"  " + Телефон;
9. Romakon92 18.05.17 16:35 Сейчас в теме
(8)
Возврат КонтрагентИКонтактноеЛицо;

просто закомментируйте эту строчку..

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

	Если ВыборкаДетальныеЗаписи.Следующий() Тогда
		Телефон = ВыборкаДетальныеЗаписи.НомерТелефона1;
	КонецЕсли;
Показать
3. Romakon92 18.05.17 14:18 Сейчас в теме
Есть мысли что у меня нет прав на изменение макетов,
// Процедура устанавливает свойства Защита и ТолькоПросмотр для табл. документов согласно настройкам пользователя УАТ
Но если закомментировать данные которые я ввожу в модуль, и оставить на макете надпись Заказчик, то документ выводится на печать...
help
4. BackinSoda 18.05.17 14:25 Сейчас в теме
У Вас в коде почему-то посреди печати стоит "Возврат КонтрагентИКонтактноеЛицо;" и видимо дальше вместо КоллекцииПечатныхФорм передаётся контактное лицо которое и выпадает с ошибкой.. или это вы выложили разные процедуры общим текстом ?
Выложите всю процедуру печати и всё станет ясно.
5. comptr 31 18.05.17 14:43 Сейчас в теме
Значение не является значением объектного типа "Защита"

Означает, что в момент
ТекПечФорма.ТабличныйДокумент.Защита

ТекПечФорма.ТабличныйДокумент не имеет свойства "Защита", что говорит о том, что ТекПечФорма.ТабличныйДокумент - совсем не табличный документ в этот момент.

А если внимательно поглядеть на код, то можно увидеть:
Возврат КонтрагентИКонтактноеЛицо;

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

Стоит внимательно рассмотреть код формирования ПФ, и правильно разместить свои доработки.
6. Romakon92 18.05.17 14:46 Сейчас в теме
ВСЯ Функция
Функция ПечатьМаршрутныйЛистСЗаказами(МассивОбъектов, ОбъектыПечати)
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.КлючПараметровПечати = "ПараметрыПечати_МаршрутныйЛист";
	ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
	
	ПервыйДокумент = Истина;
	
	Для Каждого ТекущийДокумент Из МассивОбъектов Цикл
		Если Не ПервыйДокумент Тогда
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		ПервыйДокумент = Ложь;
		
		НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 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;
			КонецЕсли;
			МаксВес     = Макс(МаксВес    ,ТекВес);
			МаксОбъем   = Макс(МаксОбъем  ,ТекОбъем);
			МаксКолМест = Макс(МаксКолМест,ТекКолМест);
			МаксЗаказов = Макс(МаксЗаказов,ТекКолЗаказов);
			
			ПредСтрока = ТекСтрока;
			
		КонецЦикла;
		
		ОбластьМакетаАдрес.Параметры.Стоянка   = мСтоянка;
		ТабДокМаршрут.Вывести(ОбластьМакетаАдрес);
		Если ИзменилсяЗаказ = Истина тогда
			ОбластьМакетаЗаказ.Параметры.Вес            = мВес;
			ОбластьМакетаЗаказ.Параметры.Объем          = мОбъем;
			ОбластьМакетаЗаказ.Параметры.КоличествоМест = мКолМест;
			ТабДокЗаказ.Вывести(ОбластьМакетаЗаказ);
		КонецЕсли;
		ТабДокМаршрут.Вывести(ТабДокЗаказ);
		ОбластьМакета = Макет.ПолучитьОбласть("МаршрутПодвал");
		ОбластьМакета.Параметры.ПеревезеноВес     = ПеревезВес;
		ОбластьМакета.Параметры.ПеревезеноОбъем   = ПеревезОбъем;
		ОбластьМакета.Параметры.ПеревезеноКолМест = ПеревезКолМест;
		ОбластьМакета.Параметры.ПеревезеноЗаказов = ПеревезЗаказов;
		ОбластьМакета.Параметры.МаксВес           = МаксВес;
		ОбластьМакета.Параметры.МаксОбъем         = МаксОбъем;
		ОбластьМакета.Параметры.МаксКолМест       = МаксКолМест;
		ОбластьМакета.Параметры.МаксЗаказов       = МаксЗаказов;
		ТабДокМаршрут.Вывести(ОбластьМакета);
		
		ТабличныйДокумент.Вывести(ОбластьМакетаШапка);
		ТабличныйДокумент.Вывести(ТабДокМаршрут);
		
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ТекущийДокумент);
		
	КонецЦикла;
	
	ТабличныйДокумент.АвтоМасштаб = Истина;
	
	Возврат ТабличныйДокумент;
	
КонецФункции // ПечатнаяФорма()
Показать
7. Romakon92 18.05.17 14:49 Сейчас в теме
//Контрагент, контактное лицо
//Телефон
//Заполняем Наименование
Это все что я добавлял
10. BackinSoda 18.05.17 16:40 Сейчас в теме
Как минимум в запросе не хватает условия
ГДЕ ссылка = &ВашКонтрагент
ну и скорее всего других отборов на Вид/Тип контактной информации (где выбирается что это Телефон а не адрес или почта) , с контактнымЛицом та же история
11. Romakon92 18.05.17 16:45 Сейчас в теме
Контактное лицо выводится корректно, насчет
(10)
(где выбирается что это Телефон а не адрес или почта)

немного не понял, у меня же в запросе указано
КонтрагентыКонтактнаяИнформация.НомерТелефона
12. BackinSoda 18.05.17 16:54 Сейчас в теме
Не уверен что он записывает в этот реквизит телефон. Думаю вам нужно поле "Представление" и при этом указать и Тип и Вид в условии, для теста заполните поле телефон, а в запросе выберите все поля из таблицы КонтактнаяИнформация, для теста напишите таб = Запрос.Выполнить().Выгрузить(); и посмотрите что содержится в таблице и в какой колонке (подчеркну, что это для теста и получать инфу уже из выборки лучше)
13. Romakon92 18.05.17 16:54 Сейчас в теме
"ВЫБРАТЬ
		|	КонтрагентыКонтактнаяИнформация.НомерТелефона КАК НомерТелефона1
		|ИЗ
		|	Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
		|ГДЕ
		|	КонтрагентыКонтактнаяИнформация.Ссылка = &ВашКонтрагент";

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

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

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


Вот код :)
16. BackinSoda 19.05.17 00:08 Сейчас в теме
Без использования условия
ГДЕ
        |    КонтрагентыКонтактнаяИнформация.Ссылка = &Контрагент
ваш запрос будет получать телефоны всех контрагентов в базе
17. Romakon92 23.05.17 12:59 Сейчас в теме
(16) Спасибо, разобрался вот итоговый код

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



ОбластьМакетаШапка.Параметры.ПредставлениеЗаказчика = ПолучитьПараметрыЗаказчика(ТекущийДокумент);
18. Romakon92 23.05.17 13:06 Сейчас в теме
Подскажите пожалуйста, как реализовать возможность вывода на печать только заполненных выражений.
Например:

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

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

значение "Контактное лицо" заполнено, и "Другое" заполнено. Выводится на печать "Контактное лицо" и "Другое"
19. BackinSoda 23.05.17 13:38 Сейчас в теме
ИнфоКонтрагент = 
        "" 
        + ВыборкаДетальныеЗаписи.Контрагент.Наименование
        + ?(ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.Контрагент.ОсновноеКонтактноеЛицо),", Контактное лицо: " + ВыборкаДетальныеЗаписи.Контрагент.ОсновноеКонтактноеЛицо, "")
        + ?(ЗначениеЗаполнено(ТелефонКонтрагента), ", Телефон: " + ТелефонКонтрагента, "")  
        + ?(ЗначениеЗаполнено(Другое),", Другое: " + Другое, "");
20. Romakon92 23.05.17 13:45 Сейчас в теме
(19) Спасибо большое, тоже пытался сделать что нибудь с "ЗначениеЗаполнено"
Все работает
21. BackinSoda 23.05.17 13:53 Сейчас в теме
Если в запросе не будет контрагента то вылетит ошибка т.к. переменная ИнфоКонтрагент не будет определена.
В данном случае можно обойтись и без запроса, и получать "через точку" всё, типа
Контрагент = СсылкаНаМЛ.ЗаказГрузоотправителя.Контрагент;

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот