Вывести в макет дополнительные реквизиты БП 3.0
БП 3.0
В справочнике контрагенты добавлены два дополнительных реквизита "код по реестру" и "пометка по реестру", при этом код по реестру есть у каждого контрагента, а пометка заполнена не у всех. Делаю внешнюю печатную формы где нужно вывести эти дополнительные реквизиты
При таком варианте печатная форма выводится только у того контрагента у кого заполнены оба дополнительных реквизита, а там где второй реквизит пустой выводится ошибка Индекс находится за границами массива. Подскажите как можно реализовать?
В справочнике контрагенты добавлены два дополнительных реквизита "код по реестру" и "пометка по реестру", при этом код по реестру есть у каждого контрагента, а пометка заполнена не у всех. Делаю внешнюю печатную формы где нужно вывести эти дополнительные реквизиты
Область.Параметры.КодПоРеестру = СсылкаНаОбъект.Контрагент.ДополнительныеРеквизиты[0].Значение;
Область.Параметры.ПометкаПоРеестру = СсылкаНаОбъект.Контрагент.ДополнительныеРеквизиты[1].Значение;
При таком варианте печатная форма выводится только у того контрагента у кого заполнены оба дополнительных реквизита, а там где второй реквизит пустой выводится ошибка Индекс находится за границами массива. Подскажите как можно реализовать?
По теме из базы знаний
- Некоторые особенности БП 3.0
- [БП 3.0, УТ 11.2][БДРС] Печать пакета документов ТОРГ-12 и Счет-фактура из документа РТиУ с настройкой индивидуального макета для любого контрагента
- Счет-фактура для 1С: Бухгалтерии 3.0 (управляемые формы)
- Использование макетов вместо дополнительных реквизитов или регистров сведений
- Заявка, поручение на перевозку, транспортная спецификация, печать договоров на перевозку для БП 3.0
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) а с чего вы взяли, что СсылкаНаОбъект.Контрагент.ДополнительныеРеквизиты[0].Значение это КодПоРеестру?
ДополнительныеРеквизиты - это табличная часть:
- Свойство - Ссылка из ПВХ
- Значение - Собственно значение
В итоге вам надо получить ссылку на ПВХ и искать его в табличный части
Можно использовать для этого методы из БСП (Свойства)
ДополнительныеРеквизиты - это табличная часть:
- Свойство - Ссылка из ПВХ
- Значение - Собственно значение
В итоге вам надо получить ссылку на ПВХ и искать его в табличный части
Можно использовать для этого методы из БСП (Свойства)
Вот весь код
Функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПечатьКонверта";
ТабличныйДокумент.ИмяПараметровПечати = "ПараметрыПечати";
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ОтображатьЗаголовки = Ложь;
ТабличныйДокумент.ОтображатьСетку = Ложь;
ТабличныйДокумент.ТолькоПросмотр = Истина;
ТабличныйДокумент.Защита = Ложь;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
Макет = ПолучитьМакет("Конверт");
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
СсылкаНаОбъект = МассивОбъектов[0];
СведенияОКонтрагенте = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(СсылкаНаОбъект.Контрагент);
ПредставлениеПолучателя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,");
АдресПоПрописке = УправлениеКонтактнойИнформацией.ПредставлениеКонтактнойИнформацииОбъекта( СсылкаНаОбъект.Контрагент,
Справочники.ВидыКонтактнойИнформации.ПочтовыйАдресКонтрагента,, ТекущаяДата());
АдресПоПрописке2 = РегламентированнаяОтчетностьКлиентСервер.РазложитьАдрес(АдресПоПрописке);
СтруктураАдреса = РаботаСАдресами.СведенияОбАдресе(АдресПоПрописке2);
ПараметрИндекс = СтруктураАдреса.Страна;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СчетФактураВыданный.Номер КАК Номер,
| СчетФактураВыданный.Дата КАК Дата,
| СчетФактураВыданный.Контрагент.ДополнительныеРеквизиты.(
| Свойство КАК КонтрагентСвойство,
| Значение КАК КонтрагентЗначение
| ) КАК Контрагент
|ИЗ
| Документ.СчетФактураВыданный КАК СчетФактураВыданный";
Запрос.УстановитьПараметр("ДатаСреза", Новый Граница(СсылкаНаОбъект.Дата, ВидГраницы.Включая));
Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);;
РезультатЗапроса = Запрос.Выполнить();
Шапка = РезультатЗапроса.Выбрать();
Область = Макет.ПолучитьОбласть("Шапка");
Область.Параметры.КодПоРеестру = СсылкаНаОбъект.Контрагент.ДополнительныеРеквизиты[0].Значение;
Область.Параметры.ПометкаПоРеестру = СсылкаНаОбъект.Контрагент.ДополнительныеРеквизиты[1].Значение;
Область.Параметры.Кому = ПредставлениеПолучателя;
Область.Параметры.Куда = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(СсылкаНаОбъект.Контрагент, Справочники.ВидыКонтактнойИнформации.ПочтовыйАдресКонтрагента);
Область.Параметры.Индекс = ПараметрИндекс;
ТабличныйДокумент.Вывести(Область);
Область = Макет.ПолучитьОбласть("Перечень");
Область.Параметры.СчетФактураНомер = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(СсылкаНаОбъект.Номер);
Область.Параметры.СчетФактураДата = Формат(СсылкаНаОбъект.Дата, "ДЛФ=ДД");
Область.Параметры.АктНомер = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(СсылкаНаОбъект.Номер);
Область.Параметры.АктДата = Формат(СсылкаНаОбъект.Дата, "ДЛФ=ДД");
ТабличныйДокумент.Вывести(Область);
//КонецЦикла;
Возврат ТабличныйДокумент;
КонецФункции
#КонецОбласти
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот