PDA

Просмотр полной версии : процедура проведения (временные таблицы)



Domanoff
13.03.2011, 19:34
я новичок пытаюсь сделать простую обработку, смысл такой чтоб табличную часть документа поместить в временную таблицу, чтоб потом при помощи ее ПРОВЕРИТЬ ОСТАТКИ, но при помещении выбрка детальной записи не видит номенклатуру, т е выдает ошибку Поле объекта не обнаружено (номенклатура)
Движение.Номенклатура = выборкадетальныезаписи.но� �енклатура; тогда как это делается и почему, поясните пожалуйста...я наверно саму структуру не понимаю...(((
код

Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГ ИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
если режим = РежимПроведенияДокумента.� �перативный Тогда
запрос1 = новый запрос;
менеджервт = новый менеджервременныхтаблиц;

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


пока выборкаДетальныеЗаписи.Сл� �дующий() Цикл
// регистр ОстаткиМатериалов Расход
Движения.ОстаткиМатериало� �.Записывать = Истина;
Движение = Движения.ОстаткиМатериало� �.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Рас� �од;
Движение.Период = Дата;
Движение.Номенклатура = выборкадетальныезаписи.но� �енклатура;
Движение.Склад = склад;
Движение.количество = выборкадетальныезаписи.ко� �ичество;
Движения.Распределение.Зап исывать = Истина;

// регистр Распределение Приход
Движение = Движения.Распределение.Доб авить();
Движение.ВидДвижения = ВидДвиженияНакопления.При� �од;
Движение.Период = Дата;
Движение.Подразделение = выборкадетальныезаписи.по� �разделение;
Движение.офис = выборкадетальныезаписи.оф� �с;
Движение.кабинет = выборкадетальныезаписи.ка� �инет;
Движение.материал = выборкадетальныезаписи.но� �енклатура;
Движение.ответственный = выборкадетальныезаписи.от� �етственный;
Движение.количество =выборкадетальныезаписи.ко личество;

КонецЦикла;


Запрос3 = новый Запрос;
Запрос3.МенеджерВременныхТ аблиц = менеджервт;
запрос3.текст = "ВЫБРАТЬ
| ОстаткиМатериаловОстатки.� �оличествоОстаток,
| ОстаткиМатериаловОстатки.� �оменклатура КАК Номенклатура1
|ИЗ
| РегистрНакопления.Остатки� �атериалов.Остатки(
| ,
| номенклатура В
| (ВЫБРАТЬ
| распределениераспределени е.номенклатура
| ИЗ
| распределениераспределени е)
| И склад = &склад) КАК ОстаткиМатериаловОстатки
|ГДЕ
| ОстаткиМатериаловОстатки.� �оличествоОстаток < 0" ;
Запрос3.УстановитьПараметр ("склад",склад);
результат = запрос3.Выполнить();
выборкадетальныезаписи = результат.Выбрать();
пока выборкадетальныезаписи.Сл� �дующий() цикл
сообщение = новый сообщениепользователю();
Сообщение = "не хватаетт" + Строка (-выборкадетальныезаписи.ко� �ичествоостаток) + "едениц Материала"
+ выборкадетальныезаписи.но� �енклатура +"";
сообщение.сообщить();
отказ = истина;
КонецЦикла;



конецесли;

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГ ИСТРОВ
КонецПроцедуры

avm3110
15.03.2011, 15:16
Поле объекта не обнаружено (номенклатура)
Движение.Номенклатура = выборкадетальныезаписи.но� �енклатура;


дЫк у Вас в запросе указано:
ВЫБРАТЬ
ОстаткиМатериаловОстатки.� �оличествоОстаток,
ОстаткиМатериаловОстатки.� �оменклатура КАК Номенклатура1

т.е. обращаться для подобного изврата тогда нужно как

Движение.Номенклатура = выборкадетальныезаписи.но� �енклатура1;