Обработка по отбору документов

Версия для печатиPDF-версия
Значит так. Наставников у меня нет. Поэтому буду рад любой помощи. На программировании не зарабатываю, только изучаю, поэтому вопросы мои будут тривиальными и во многом глупыми (Для Вас).
Выслали мне по почте ( и-мейлу) задачу:
 
РЕЕСТР ДОКУМЕНТОВ
 
Тип документа:
 
НачалоПериода:                                 КонецПериода:
 
Отбор
Реквизит
Значение
 
 
 
 
 
 
 
 
 
 
 
Отчет

                                                                           

Номер
Дата
Документ
Сумма
 
 
 
 
 
Печать
 
Создать внешнюю обработку, в которой можно просматривать документы, к-рые были сформированы за определенный период.
Поле "Тип Документа" - выпадающий список, в котором должны быть все типы документов, которые существуют в системе.
Поля Начальной и Конечной дат -  Соответственно даты начала и конца периода отбора документов
Таблица Реквизитов
В этой таблице должны содержаться все реквизиты выбранного документа (должны заполняться при выборе типа документа)
Поле Отбор – должен ставиться флажок для определения  будет ли по этому полю проводиться отбор по значению в поле «Значения».
При нажатии на кнопку «Отчет» в нижней таблице заолняются соответствующие реквизиты документов.  в поле «Документ» должна записываться «Ссылка». По нажатию кнопки  должен формироваться отчет по найденным документам.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
Т.Е. своими словами : Выбираем даты, при выборе типа документа из выпадающего списка в первую таблицу попадают все документы выбраного типа, входящие в нужный период, в поле отбор ставим галочки, после нажатия на кнопку ОТЧЕТ во вторую таблицу попадают только те документы, которые мы отметили галочкой.
 
Задача простая, но я изучаю 1С меньше месяца, поэтому для меня тяжело.
 
Мои успехи:  
   Текст модуля внешней обработки:
 
&НаКлиенте

Процедура ТипДокументаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	Если (Объект.НачальнаяДата = Дата(1,1,1,0,0,0)) И (Объект.КонечнаяДата = Дата(1,1,1,0,0,0)) Тогда
		ОтветПользователя = Вопрос("Не выбран период! Установить Даты?",РежимДиалогаВопрос.ОКОтмена);
	Иначе
		ОтображениеВыпадающегоСписка();
	КонецЕсли;

	Если ОтветПользователя <> КодВозвратаДиалога.ОК Тогда
		ОтветПользователя = Неопределено;
		ОтображениеВыпадающегоСписка();
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ОтображениеВыпадающегоСписка()
	Если Объект.КонечнаяДата = Дата(1,1,1,0,0,0) Тогда
		Объект.КонечнаяДата = ТекущаяДата();
	КонецЕсли;

	ВидыДокументовИзБазы = ВыборДокументовИмя();

	Если ВидыДокументовИзБазы.Количество()=0 Тогда
		Предупреждение("Документов в базе не обнаружено");
		ЭтаФорма.Закрыть();
	Иначе
		ВыборВидаДокумента=ВыбратьИзСписка(ВидыДокументовИзБазы,Элементы.ТипДокумента);
		СписокВыбраныхДокументов = ВыборДокументов(Строка(ВыборВидаДокумента));
		Если СписокВыбраныхДокументов.Количество()=0 Тогда
			Предупреждение("Документов "+ВыборВидаДокумента.Значение+" в базе не обнаружено");
		Иначе
			ЗаполнениеТаблици1НаСервере(СписокВыбраныхДокументов);
		КонецЕсли;
	КонецЕсли
КонецПроцедуры // ОтображениеВыпадающегоСписка()

&НаСервере
Функция ВыборДокументовИмя()
	СписокИменДокуменов = Новый СписокЗначений;
	Для Каждого ИмяДокумента Из Метаданные.Документы Цикл
		СписокИменДокуменов.Добавить(ИмяДокумента.Имя);
	КонецЦикла;
	Возврат СписокИменДокуменов;
КонецФункции // ВыборДокументов()

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

	Результат = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = Результат.Выбрать();
		
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		СписокДокументов.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
	КонецЦикла;

	Возврат СписокДокументов;
КонецФункции // ВыборДокуменов()

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

	ЗначениеВДанныеФормы(ТаблицаВыбраныхДокументов1,Таблица1);
КонецПроцедуры // ЗаполнениеТаблици1НаСервере()

&НаКлиенте
Процедура Отчет(Команда)
	//ЗаполнениеТаблици2НаСервере(данные);
КонецПроцедуры

&НаСервере
Процедура ЗаполнениеТаблици2НаСервере(Данные)
		
КонецПроцедуры // ЗаполнениеТаблици2НаСервере()

Реквизиты Внешней обработки:

 
Начальна дата  типа Дата  И
КонечнаяДата  типа Дата
 
В общем, как объяснить - не знаю. Я делаю Реквизиты формы:
 
ВыборДокумента
Таблица1
Таблица2
 
Все это перетягиваю в поля формы
 
Среди полей имеем:
Поле "Выбор Документа " путьКданным -- соответствующий реквизит формы, на вкладке "Использование"  -- "КнопкаВыбора" ставим "Да"
 
Так же среди полей и две таблици, у которых путь к данным тоже к соответствующим реквизитам формы.
Как еще объяснить, я не знаю.
В общем, при выборе видаДокумента у меня все получается, первая таблица заполняется нормально, но не знаю, как придумать чтобы теперь во вторую таблицу выбрать строки первой таблици, которые были помечены в колонке отбор. Да и код мой паршивый - я это знаю. Но учитывайте , что я изучаю программирование менише месяца, поэтому сильно не психуйте, пытаясь разобраться в моих мемуарах, но если найдете время, для того чтобы продемонстрировать мне работу такой внешней обработки, буду признателен. И Еще - для того, чтобы нормально понять, что именно я смастерил, напишите мне, пожалуяста свой и-майл, я вышлю Вам на него свою обработку.
А задание на странице сайта не отбразилось. Вы, к сожалению, меня не поймете. Жаль.
Пришлите задание и обработку на novichok@novichok1c.ru.
PS. Никак не получается подсветку кода на сайте прикрутить. Очень сложно воспринимать.
Очень благодарен.вышлю
1. Насколько я понял из задания в первой таблице должны выводится реквизиты документа, по которым будет строиться отчет, а не сами документы. Тип поля Реквизит Таблицы1 - Строка, Тип поля Значение - Составной из всех возможных. 
Список реквизитов можно получить обходом коллекции Реквизиты метаданных документа.
Для Каждого Реквизит Из Метаданные.Документы.-ИмяДокумента-.Реквизиты Цикл
	СтрокаТаблицы = Таблица1.Добавить();
	// Добавление данных
	...
КонецЦикла;
Должна получиться таблица вроде как в настройках отчетов.
 
2. При нажатии на кнопку Отчет в Таблицу2 попадают только документы выбранного вида соответствующие отбору. Для этого нужно подставить условия из Таблицы1 в запрос.
 
PS. Незачем создавать таблицу значений в процедурах, если можно использовать табличные части формы.
Спасибо, подумаю над таким раскладом. Я действительно не в ту степь пошол.