Обработки заполнения табличных частей

Новая тема
"Здравствуйте !
В модуле внешней обработки к табличной части следующий код:
//
Процедура Инициализировать(Объект,Материалы,ТабличноеПолеОбъекта) Экспорт

ФормаНастройка = ПолучитьФорму("Форма");
Если ФормаНастройка.ОткрытьМодально() = Истина Тогда
Сформировать();
КонецЕсли;


КонецПроцедуры

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

Запрос.УстановитьПараметр("Документ", Документ);
Запрос.УстановитьПараметр("Дата",Объект.Дата);

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() цикл
СтрокаТЧ = Объект.Материалы.Добавить();
СтрокаТЧ.Номенклатура = Выборка.Номенклатура;

СтрокаТЧ.ХарактеристикаНоменклатуры = Выборка.Характеристкика;
СтрокаТЧ.СерияНоменклатуры = Выборка.Серия;
СтрокаТЧ.Заказ = Выборка.ДокументРез;
СтрокаТЧ.ЗаказРезерв = Выборка.ДокументРез;
СтрокаТЧ.Склад = Выборка.Склад;
СтрокаТЧ.Качество    = Справочники.Качество.Новый;
СтрокаТЧ.СтатьяЗатрат    = Справочники.СтатьиЗатрат.НайтиПоНаименованию("Материалы");
СтрокаТЧ.Количество = Выборка.Остаток;
Сообщить (СтрокаТЧ.Номенклатура);
Сообщить(СтрокаТЧ.Заказ);
Сообщить(СтрокаТЧ.Количество);
Сообщить(СтрокаТЧ.СтатьяЗатрат);
Сообщить(СтрокаТЧ);
Сообщить(Объект);
КонецЦикла;

КонецПроцедуры

При выполнении возникает ошибка: Значение не является значением объектного типа (Дата).
PLZ скиньте ссылку на пример обработки
Подскажите, что не так.

Заранее благодарю."
"0) Нафига делать лишний рекурсивный вызов процедуры? Вполне можно написать
"Если НЕ ФормаНастройка.ОткрытьМодально() = Истина Тогда
Возврат;
КонецЕсли;"

...далее весь текст процедуры "Сформировать()".

1) "РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&Дата, ДокументРезерва = &Документ) КАК ТоварыВРезервеНаСкладахОстатки" позволит сразу выбрать весь зарезервированный по документу товар. Никаких больше условий задавать не придется.

2) Что устанавливается в параметр запроса "Документ"? Если ссылка на документ, из которого вызываем обработку, то должно быть
"Запрос.УстановитьПараметр("Документ", Объект.Ссылка);".

3) "СтрокаТЧ = Объект[Материалы].Добавить();" В данном случае переменная "Материалы" содержит в себе имя табличной части, из которой вызывается обработка заполнения ТЧ.

4) Для чего вызывается форма настройки? Не увидел в коде какого-либо ее использования.

5) Куда сбросить пример?"
kolpermyakov7@yandex.ru

Спасибо.
Сбросил самую наипростейшую. Как с ответами на предыдущие 4 вопроса?
2) Документ мы выбираем из поля ввода обработки
4) На самом деле, это не настройка. Задача состоит в том, чтобы при открытии обработки из табличной части документа, форма обработки появлялась и можно было заполнить строку ввода для передачи параметра.

А откуду процедура Сформировать знает об Объекте?
Надо же передавать параметры в процедуру или следать их глобальными и определить в Инициализировать.
Читают тему
(гостей: 1)

Быстрый переход