Внешняя печатная форма транспортной накладной

1. user1208936 01.12.21 22:07 Сейчас в теме
Добрый день!
Столкнулся с такой проблемой: есть внешняя печатная форма транспортной накладной комплексной автоматизации.
Необходимо в ПФ поставить номенклатуру из документа "реализация товаров и услуг"
Создал следующую функцию:

Функция СформироватьДопДанные (СсылкаНаОбъект)

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

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

			 
		КонецЦикла;	 
		 
	
	КонецЦикла;
		
КонецФункции

В процедуре "ЗаполнитьТабличныйДокументТН" в нужную строку подставил:
РеквизитыМакета.Вставить("Пункт3_1", СформироватьДопДанные(СсылкаНаОбъект));

"Пункт3_1" - параметр в макете, куда необходимо вставить номенклатуру.
Ошибок нет, но строка остается пустой. 
В чем проблема?

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

...........................................................................................................................

РеквизитыМакета.Вставить("Пункт3_1", ИменаТоваров); - при отладке в этой строке пусто...

Вообще, в эту ПФ многое не заполняется...
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. vadim1011985 101 01.12.21 22:42 Сейчас в теме
(1) Исправить текст запроса - нужно сразу тяннуть данные из таблицы ТЧ документа а не как у Вас. И потом у вас в цикле идет возврат - а это значит что , если в ТЧ несколько строк товаров , то вернется только одна.
user1671936; +1 Ответить
3. dehro 7 02.12.21 12:22 Сейчас в теме
Функция СформироватьДопДанные (СсылкаНаОбъект)

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

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

             
        КонецЦикла;     
         
    
    КонецЦикла;
        
КонецФункции
Показать


Это шедевр!
Что должна возвращать функция? Какую-нибудь номенклатуру из реализации?
Кода меньше, результат такой же:
Функция СформироватьДопДанные (СсылкаНаОбъект)

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

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


//Для правильно читающих рекомендации: В таблице одна строка и одна колонка. Тип значения имеет объем 32 байта, с Выбрать() можно не заморачиваться
Оставьте свое сообщение

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