Ошибка при выводе адреса

1. iiwanc 01.09.26 14:14 Сейчас в теме
Здравствуйте!
Простите, если не сюда пишу и за глупые вопросы.
Изучаю внешние печатные формы и БСП.
1С:Предприятие 8.3 (8.3.27.1859)
Бухгалтерия предприятия, редакция 3.0 (3.0.177.30)
Пытаюсь вывести адрес через запрос.

Написал:
Функция СведенияОВнешнейОбработке() Экспорт
	
	ВерсияБСП = "3.0.1.0";
	
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(ВерсияБСП);
	ПараметрыРегистрации.Информация = НСтр("ru = 'Договор (Word)'");
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
	ПараметрыРегистрации.Версия = "1.0.0.0";
	ПараметрыРегистрации.Назначение.Добавить("Документ.ПоступлениеТоваровУслуг");
	
	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = НСтр("ru = 'Договор (Word)'");
	Команда.Идентификатор = "ПечатьДоговораWord";
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
		
	Возврат ПараметрыРегистрации;
	
КонецФункции

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
		
	ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ПечатьДоговораWord");
	Если ПечатнаяФорма <> Неопределено Тогда		
		ОфисныеДокументы = НапечататьДоговор(МассивОбъектов);
		ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Печать договора (Word)'");
		ПечатнаяФорма.ОфисныеДокументы = ОфисныеДокументы;
	КонецЕсли;
	
КонецПроцедуры

Функция НапечататьДоговор(МассивОбъектов)
	
	ОфисныеДокументы = Новый Соответствие;
	МакетДокумента = ПолучитьМакет("ПФ_DOCX_Макет");
	Шаблон = НСтр("ru = 'Заказ покупателя №[Номер] от [Дата]'");
	
	Макет = УправлениеПечатью.ИнициализироватьМакетОфисногоДокумента(МакетДокумента, Неопределено);
	Если Макет = Неопределено Тогда
		Возврат "";
	КонецЕсли;
	
	ОписаниеОбластей = Новый Структура;
	
	УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "Шапка",         		   "Общая");
	
	УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "Подвал",         		   "Общая");
		
	ДанныеПоШапке = ПолучитьДанныеДляПечати(МассивОбъектов);
	
	Для Каждого ДанныеПечати Из ДанныеПоШапке Цикл
		
		ДанныеПечати.Дата = Формат(ДанныеПечати.Дата, "ДЛФ=DD");

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

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

СсылкаНаКонтрагента = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", 1111111111);  
Запрос.УстановитьПараметр("Контрагент", СсылкаНаКонтрагента);
Запрос.УстановитьПараметр("ВидКИ", Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
 
Результат = Запрос.Выполнить();
	
	  
КонецФункции
Показать


Обработка устанавливается но при работе появляется сообщение:
Ошибка при вызове метода контекста (Выполнить)
{ВнешняяОбработка.ПоступлениеДоговор.МодульОбъекта(155)}:Возврат ОбщегоНазначения.ТаблицаЗначенийВМассив(Запрос.Выполнить().Выгрузить());
{ВнешняяОбработка.ПоступлениеДоговор.МодульОбъекта(52)}:ДанныеПоШапке = ПолучитьДанныеДляПечати(МассивОбъектов);
{ВнешняяОбработка.ПоступлениеДоговор.МодульОбъекта(24)}:ОфисныеДокументы = НапечататьДоговор(МассивОбъектов);
{ОбщийМодуль.УправлениеПечатью.Модуль(2134)}:ВнешняяОбработкаОбъект.Печать(
{ОбщаяФорма.ПечатьДокументов.Форма(793)}:УправлениеПечатью.ПечатьПоВнешнемуИсточнику(
{ОбщаяФорма.ПечатьДокументов.Форма(61)}:КоллекцияПечатныхФорм = СформироватьПечатныеФормы(Параметры.ИменаМакетов, Отказ);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(345)}:ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, ВладелецФормы, Строка(Новый УникальныйИдентификатор));
{ОбщийМодуль.УправлениеПечатьюГлобальный.Модуль(13)}:УправлениеПечатьюСлужебныйКлиент.ПродолжитьВыполнениеКомандыПечати();

[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
{(21, 43)}: Не задано значение параметра "Контрагент"
КонтрагентыКонтактнаяИнформация.Ссылка = <<?>>&Контрагент
Показать


Так понимаю, не правильно передаю данные контрагента.
Подскажите, пожалуйста, как решить вопрос.
Начитался много, но сложить в общую картину не получается.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 84 01.09.26 14:23 Сейчас в теме
(1)
| КонтрагентыКонтактнаяИнформация.Ссылка = &Контрагент
| И КонтрагентыКонтактнаяИнформация.Вид = &ВидКИ


Параметры запроса установите перед тем как

Возврат ОбщегоНазначения.ТаблицаЗначенийВМассив(Запрос.Выполнить().Выгрузить());
6. iiwanc 01.09.26 15:03 Сейчас в теме
(2)
Возврат ОбщегоНазначения.ТаблицаЗначенийВМассив(Запрос.Выполнить().Выгрузить());

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


Получаю сообщение:
Не определен список получаемых файлов.
[ОшибкаИспользованияВстроенногоЯзыка]
8. nomad_irk 84 01.09.26 15:06 Сейчас в теме
(6) чтобы не бежать по каждому чиху в форум, создайте у обработки форму и инициируйте выполнение формирование печатной формы из нее - так можно будет отладить ВПФ, открывая ее через меню Файл - Открыть
4. ZergKRSK 130 01.09.26 14:43 Сейчас в теме
(1)
Запрос.УстановитьПараметр("Контрагент", СсылкаНаКонтрагента);
Запрос.УстановитьПараметр("ВидКИ", Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);

Это должно быть ДО выполнения запроса


(1)
СсылкаНаКонтрагента = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", 1111111111);

Пойти и посмотреть какой тип у реквизита ИНН
3. Anton_new01 01.09.26 14:39 Сейчас в теме
(1) попробуй так...
но ты лучше сформулируй, что ты хочешь получить...
а то ты не только не понимаешь как это сделать, но и что надо сделать.

Функция ПолучитьДанныеДляПечати(МассивОбъектов)
	
	Запрос = Новый Запрос;
	СсылкаНаКонтрагента = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", 1111111111);  
	Запрос.УстановитьПараметр("Контрагент", СсылкаНаКонтрагента);
	//Запрос.УстановитьПараметр("ВидКИ", Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
	Запрос.УстановитьПараметр("ДатаПечати", ТекущаяДата());
	Запрос.УстановитьПараметр("МассивДоговоров", МассивОбъектов);
	Запрос.Текст = 
	"ВЫБРАТЬ
	|    &ДатаПечати КАК ДатаПечати,
	|    ПоступлениеТоваровУслуг.Организация КАК Заказчик,
	|    ПоступлениеТоваровУслуг.Контрагент КАК Самозанятый,
	|    ПоступлениеТоваровУслуг.Контрагент.ИНН КАК ИННСамозанятого,
	|    ПоступлениеТоваровУслуг.Дата КАК Дата,
	|    ПоступлениеТоваровУслуг.Организация.ИНН КАК ЗаказчикИНН,
	|    ПоступлениеТоваровУслуг.Организация.ОГРН КАК ЗаказчикОГРН
	|ИЗ
	|    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
	|ГДЕ
	|    ПоступлениеТоваровУслуг.Ссылка В(&МассивДоговоров)
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|    КонтрагентыКонтактнаяИнформация.Представление КАК ЗаказчикАдрес
	|ИЗ
	|    Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
	|ГДЕ
	|    КонтрагентыКонтактнаяИнформация.Ссылка = &Контрагент
	|    И КонтрагентыКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)
	|    И КонтрагентыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)";
	// данный запрос - выгрузит только тз ЗаказчикАдрес по контрагенту
	
	ТЗ = Запрос.Выполнить().Выгрузить(); 
	
	//Если нужны данные из первого запроса, то так :
	массивРезультатовЗапроса = Запрос.ВыполнитьПакет(); // два запроса - соответсвенно два результата запроса 0 и 1 в массиве.
	ТЗПоДоговрам = массивРезультатовЗапроса[0].Выгрузить(); 
	
	МассивПоТЗ = ОбщегоНазначения.ТаблицаЗначенийВМассив(ТЗПоДоговрам);
	Возврат МассивПоТЗ; // тут можно в отладке посмотреть а то что надо в нем или нет...
	
КонецФункции
Показать
5. Anton_new01 01.09.26 14:45 Сейчас в теме
(1)
понял нужны данные по ПТУ + адрес контрагента.

что-то типа того

Функция ПолучитьДанныеДляПечати(МассивОбъектов)
	
	Запрос = Новый Запрос;
	СсылкаНаКонтрагента = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "1111111111"); // лучше по коду 
	Запрос.УстановитьПараметр("Контрагент", СсылкаНаКонтрагента);
	//Запрос.УстановитьПараметр("ВидКИ", Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
	Запрос.УстановитьПараметр("ДатаПечати", ТекущаяДата());
	Запрос.УстановитьПараметр("МассивДоговоров", МассивОбъектов);
	Запрос.Текст = 
	"ВЫБРАТЬ
	|    &ДатаПечати КАК ДатаПечати,
	|    ПоступлениеТоваровУслуг.Организация КАК Заказчик,
	|    ПоступлениеТоваровУслуг.Контрагент КАК Самозанятый,
	|    ПоступлениеТоваровУслуг.Контрагент.ИНН КАК ИННСамозанятого,
	|    КонтрагентыКонтактнаяИнформация.Представление КАК ЗаказчикАдрес,
	|    ПоступлениеТоваровУслуг.Дата КАК Дата,
	|    ПоступлениеТоваровУслуг.Организация.ИНН КАК ЗаказчикИНН,
	|    ПоступлениеТоваровУслуг.Организация.ОГРН КАК ЗаказчикОГРН
	|ИЗ
	|    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
	|    Левое соединение Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
	|		По ПоступлениеТоваровУслуг.Контрагент = КонтрагентыКонтактнаяИнформация.ссылка
	|			И КонтрагентыКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)
	|			И КонтрагентыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
	|ГДЕ
	|    ПоступлениеТоваровУслуг.Ссылка В(&МассивДоговоров)";
	
	МассивПоТЗ = ОбщегоНазначения.ТаблицаЗначенийВМассив(Запрос.Выполнить().Выгрузить());
	Возврат МассивПоТЗ; // тут можно в отладке посмотреть а то что надо в нем или нет...
	
КонецФункции
Показать
7. iiwanc 01.09.26 15:05 Сейчас в теме
(5) Вы верно поняли.
Если по вашему примеру делаю, то адрес в форме не заполняется, к сожалению
9. Anton_new01 01.09.26 15:07 Сейчас в теме
(7) а остальное заполняется?

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

за образец лучше взять из (5).
10. meriferi 04.09.26 15:41 Сейчас в теме
Отбор контрагента делай по ссылке
Для отправки сообщения требуется регистрация/авторизация

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