Вывести в макет дополнительные реквизиты БП 3.0

1. belka23 21.02.23 14:23 Сейчас в теме
БП 3.0
В справочнике контрагенты добавлены два дополнительных реквизита "код по реестру" и "пометка по реестру", при этом код по реестру есть у каждого контрагента, а пометка заполнена не у всех. Делаю внешнюю печатную формы где нужно вывести эти дополнительные реквизиты
Область.Параметры.КодПоРеестру = СсылкаНаОбъект.Контрагент.ДополнительныеРеквизиты[0].Значение;
Область.Параметры.ПометкаПоРеестру = СсылкаНаОбъект.Контрагент.ДополнительныеРеквизиты[1].Значение;

При таком варианте печатная форма выводится только у того контрагента у кого заполнены оба дополнительных реквизита, а там где второй реквизит пустой выводится ошибка Индекс находится за границами массива. Подскажите как можно реализовать?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. DBV 21.02.23 15:28 Сейчас в теме
(1) а с чего вы взяли, что СсылкаНаОбъект.Контрагент.ДополнительныеРеквизиты[0].Значение это КодПоРеестру?

ДополнительныеРеквизиты - это табличная часть:
- Свойство - Ссылка из ПВХ
- Значение - Собственно значение

В итоге вам надо получить ссылку на ПВХ и искать его в табличный части

Можно использовать для этого методы из БСП (Свойства)
2. belka23 21.02.23 14:24 Сейчас в теме
Вот весь код
Функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)

	
    ТабличныйДокумент						= Новый ТабличныйДокумент;
	ТабличныйДокумент.КлючПараметровПечати	= "ПАРАМЕТРЫ_ПЕЧАТИ_ПечатьКонверта";
	ТабличныйДокумент.ИмяПараметровПечати	= "ПараметрыПечати";
	ТабличныйДокумент.АвтоМасштаб			= Истина;
	ТабличныйДокумент.ОтображатьЗаголовки	= Ложь;
	ТабличныйДокумент.ОтображатьСетку		= Ложь;
	ТабличныйДокумент.ТолькоПросмотр		= Истина;
	ТабличныйДокумент.Защита				= Ложь;
	ТабличныйДокумент.ОриентацияСтраницы	= ОриентацияСтраницы.Портрет;
	
	Макет = ПолучитьМакет("Конверт");
	Запрос = Новый Запрос();
	Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);

	
	СсылкаНаОбъект = МассивОбъектов[0];
	
				
			
    СведенияОКонтрагенте    = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(СсылкаНаОбъект.Контрагент);
	ПредставлениеПолучателя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,");
		
    АдресПоПрописке  = УправлениеКонтактнойИнформацией.ПредставлениеКонтактнойИнформацииОбъекта( СсылкаНаОбъект.Контрагент,
                               Справочники.ВидыКонтактнойИнформации.ПочтовыйАдресКонтрагента,, ТекущаяДата());
    АдресПоПрописке2 = РегламентированнаяОтчетностьКлиентСервер.РазложитьАдрес(АдресПоПрописке);
    СтруктураАдреса  = РаботаСАдресами.СведенияОбАдресе(АдресПоПрописке2); 
    ПараметрИндекс     = СтруктураАдреса.Страна;
  

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

	
	Область = Макет.ПолучитьОбласть("Шапка");  
	
	Область.Параметры.КодПоРеестру = СсылкаНаОбъект.Контрагент.ДополнительныеРеквизиты[0].Значение;
    Область.Параметры.ПометкаПоРеестру = СсылкаНаОбъект.Контрагент.ДополнительныеРеквизиты[1].Значение;
	
    Область.Параметры.Кому = ПредставлениеПолучателя; 
	Область.Параметры.Куда =  УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(СсылкаНаОбъект.Контрагент, Справочники.ВидыКонтактнойИнформации.ПочтовыйАдресКонтрагента);	
	Область.Параметры.Индекс = ПараметрИндекс;
	
		ТабличныйДокумент.Вывести(Область);
   
		Область = Макет.ПолучитьОбласть("Перечень");
		Область.Параметры.СчетФактураНомер = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(СсылкаНаОбъект.Номер); 
	    Область.Параметры.СчетФактураДата =  Формат(СсылкаНаОбъект.Дата, "ДЛФ=ДД");
        Область.Параметры.АктНомер = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(СсылкаНаОбъект.Номер); 
	    Область.Параметры.АктДата =  Формат(СсылкаНаОбъект.Дата, "ДЛФ=ДД");
		 

		ТабличныйДокумент.Вывести(Область);
	
		//КонецЦикла;
	
	Возврат ТабличныйДокумент;

	КонецФункции

#КонецОбласти
Показать
Оставьте свое сообщение

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