Обработка для печати реестра документов

Версия для печатиPDF-версия
Добрый день!
Нужно написать обработку, в которую подбираются документы, извлекаются из подобранных документов номера , суммы, контрагенты и распечатывается.
я сделал кнопку подбора, в СписокЗначений подбираются нужные документы, но как дальше сделать чтоб выводил номера и суммы я не знаю. либо надо переделать чтоб сразу из подбора он извлекал эти значения.

вот код:

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

Процедура ТаблицаЗначенийОбработкаВыбора(Элемент,ВыбранноеЗначение, СтандартнаяОбработка)

КонецПроцедуры
Если нужно распечатать произвольные документы, то алгоритм может быть такой:
  1. На форме нужно создать реквизит типа Таблица значений. Добавить в таблицу колонки "Ссылка", "Номер", "Сумма", "Контрагент" соответствующих типов.
  2. Заполнить список документов (колонку "Ссылка").
  3. Обработать документы (нужно добавить кнопку и создать обработчик нажатия).
  4. Печать списка (типовыми средствами через контекстное меню "Вывести список" или создать печатную форму).
Примерный код обработки документов:
Процедура КнопкаВыполнитьНажатие(Кнопка)
	Для Каждого СтрокаТаблицы Из ТаблицаДокументов Цикл 
		СтрокаТаблицы.Номер = СтрокаТаблицы.Ссылка.Номер;
		СтрокаТаблицы.Сумма = СтрокаТаблицы.Ссылка.Сумма;
		СтрокаТаблицы.Контрагент = СтрокаТаблицы.Ссылка.Контрагент;
	КонецЦикла;
КонецПроцедуры
Не получается заполнить список документов! создал ТЗ , а заполняется только одна строчка. как сделать чтоб все выбранные значения туда попадали?

Процедура ТЗОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	ТЗ = Новый ТаблицаЗначений;
	ТЗ.Колонки.Добавить("Ссылка");
	ТЗ.Колонки.Добавить("Контрагент");
	ТЗ.Колонки.Добавить("Номер");
	ТЗ.Колонки.Добавить("Сумма");
	
	Стр = ТЗ.Добавить();
	СтрСсылка = ВыбранноеЗначение.Ссылка;
	СтрКон = ВыбранноеЗначение.Контрагент;
	СтрНомер = ВыбранноеЗначение.Номер;
	СтрСум =  ВыбранноеЗначение.СуммаДокумента;
	Стр.Контрагент = СтрКон;
	Стр.Ссылка = СтрСсылка;
	Стр.Номер  = СтрНомер;
	Стр.Сумма = СтрСум;
	
	ЭлементыФормы.ТЗ.СоздатьКолонки();
КонецПроцедуры
 
Прикреплённые файлы: 
У вас обработка привязана к событию Обработка выбора ТЗ. При каждом вызове обработчика события ТЗ пересоздаётся и в неё добавляется 1 строка, соответствующая выбранному значению.
Вариант построчного добавления и обработки документов.
Если хотите сначала заполнить список документов, а потом его массово обработать, то я бы посоветовал добавить на форму новый элемент Поле ввода с типом значения Список значений.
Вставка поля ввода с типом Список значений
 
У добавленного элемента нужно установить свойство ТипЗначенийСписка (в данном случае - ДокументСсылка.РеализацияТоваровУслуг).
Выбор типа значений списка
 
В обработчик нажатия кнопки нужно вставить подобный код:
Процедура КнопкаВыполнитьНажатие(Кнопка)
	Для Каждого ЭлементСписка Из СписокДокументов Цикл 
		НоваяСтрока = ТЗ.Добавить();
		НоваяСтрока.Ссылка = ЭлементСписка.Значение;
		НоваяСтрока.Контрагент = НоваяСтрока.Ссылка.Контрагент;
		НоваяСтрока.Номер = НоваяСтрока.Ссылка.Номер;
		НоваяСтрока.Сумма = НоваяСтрока.Ссылка.СуммаДокумента;
	КонецЦикла;
КонецПроцедуры
Прикреплённые файлы: 
В первой обработке почему-то не заполняется ТЗ, а вторая прекрасно работает! Спасибо вам огромное!
Сейчас пытаюсь приделать собственный макет для печати.
Вы меня просто спасли!
В первой обработке надо построчно добавлять документы. Т.е. добавляете новую строку, выбираете документ в поле Ссылка. Обработка вытаскивает из документа контрагента, номер и сумму.
Будут ещё вопросы - обращайтесь.
Всё получилось! Нарисовал макет и выгрузил всё туда! и ещё добавил "итоги" получилась отличная обработка для маршрутных листов) Спасибо!
Прикреплённые файлы: 

Прописал вывод в табличнй документ, и запись его на жесткий диск, как можно проверить что файл действительно создался?

У объектов типа Файл есть метод Существует(). Нужно вызвать его после записи файла на диск.

Пример:

Функция ПроверитьСуществованиеФайла(ИмяФайла) Экспорт
    ФайлНаДиске = Новый Файл(ИмяФайла);
    Если ФайлНаДиске.Существует() Тогда
        Возврат Истина;
    Иначе
        Возврат Ложь;
    КонецЕсли;
КонецФункции

Спасибо!
это работает)

Нужно сделать чтоб выводился общий вес по накладным которые выбрали в списке документов, как лучше сделать?
никак не могу добраться до него. Или кроме как запросом не вытянуть эти данные? у меня получается добавить только такие данные как адрес доставки или количество товаров, а вес нет.

Без запроса не обойтись. Как правило вес указывается у единицы хранения товара, а в самих накладных вес не указывается.

Хорошо.

Посмотрел в форме торг12 вес заполняется из документов реализации.

как сделать запрос чтоб он был непосредственно из отобранных накладных(СписокЗначений)?

Нужен общий вес по всем документам или по каждому документу отдельно?

PS. Какая конфигурация?

Ну я так думаю, то что сначала сделать колонку с весом а потом в макет вывести итог, ( как с суммой например)
вообще нужен общий вес по всем отобранным документам. УТ 10.3. 

я думаю лежит где то здесь)
Документы.РеализацияТоваровИуслуг.Товары.Номенклатура.ЕдиницыИзмерения.Вес   или

Документы.РеализацияТоваровИуслуг.Товары.ЕдиницыИзмерения.Вес

Для нахождения веса по отдельной накладной можно использовать следующий запрос:

ВЫБРАТЬ
	СУММА(РеализацияТоваровУслугТовары.Количество * РеализацияТоваровУслугТовары.ЕдиницаИзмерения.Вес) КАК Вес
ИЗ
	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
	РеализацияТоваровУслугТовары.Ссылка = &Ссылка

В параметр Ссылка передаёте ссылку из текущей строки таблицы.

 

Для нахождения веса по списку накладных запрос нужно немного подправить:

ВЫБРАТЬ
	СУММА(РеализацияТоваровУслугТовары.Количество * РеализацияТоваровУслугТовары.ЕдиницаИзмерения.Вес) КАК Вес
ИЗ
	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
	РеализацияТоваровУслугТовары.Ссылка В(&СписокСсылок)

Выгружаете колонку "Ссылка" из таблицы документов в какую-нибудь переменную и передаёте её в параметр СписокСсылок.