{Документ.ИмяДокумента(73)}: Поле объекта не обнаружено (Количество) , ошибка при создании запроса
23.01.12, 17:55
Общительный
Группа: Пользователи
Сообщений: 29
Спасибо сказали: 0 раз
Рейтинг: 0
Помогите, пожалуйста, разобраться с ошибкой: {Документ.ИмяДокумента(73)}: Поле объекта не обнаружено (Количество)
Процедура ОбработкаПроведения(Отказ, Режим)
Запрос = Новый Запрос;
Если Режим = РежимПроведенияДокумента.Оперативный Тогда
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиОбъектовПрокатаПредприятияОстатки.КоличествоОстаток,
| ПередачаВПрокат.ТочкаПроката,
| ПередачаВПрокат.ДанныеПередачиВПрокат.(
| Клиент,
| ОбъектПроката,
| Количество,
| Сумма
| )
|ИЗ
| Документ.ПередачаВПрокат КАК ПередачаВПрокат
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиОбъектовПрокатаПредприятия.Остатки(&МоментВремени, ОбъектПроката В (&СписокОбъектовПрокатаДокумента)) КАК ОстаткиОбъектовПрокатаПредприятияОстатки
| ПО ПередачаВПрокат.ДанныеПередачиВПрокат.ОбъектПроката = ОстаткиОбъектовПрокатаПредприятияОстатки.ОбъектПроката
|ГДЕ
| ПередачаВПрокат.ДанныеПередачиВПрокат.Ссылка = &Ссылка
|
|ДЛЯ ИЗМЕНЕНИЯ
| РегистрНакопления.ОстаткиОбъектовПрокатаПредприятия.Остатки" ;
Иначе
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиОбъектовПрокатаПредприятияОстатки.КоличествоОстаток,
| ПередачаВПрокат.ТочкаПроката,
| ПередачаВПрокат.ДанныеПередачиВПрокат.(
| Клиент,
| ОбъектПроката,
| Количество,
| Сумма
| )
|ИЗ
| Документ.ПередачаВПрокат КАК ПередачаВПрокат
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиОбъектовПрокатаПредприятия.Остатки(&МоментВремени, ОбъектПроката В (&СписокОбъектовПрокатаДокумента)) КАК ОстаткиОбъектовПрокатаПредприятияОстатки
| ПО ПередачаВПрокат.ДанныеПередачиВПрокат.ОбъектПроката = ОстаткиОбъектовПрокатаПредприятияОстатки.ОбъектПроката
|ГДЕ
| ПередачаВПрокат.ДанныеПередачиВПрокат.Ссылка = &Ссылка
|
|ДЛЯ ИЗМЕНЕНИЯ
| РегистрНакопления.ОстаткиОбъектовПрокатаПредприятия.Остатки" ;
;
КонецЕсли ;
Запрос.УстановитьПараметр ("МоментВремени" , МоментВремени ());
Запрос.УстановитьПараметр ("СписокОбъектовПрокатаДокумента" , ДанныеПередачиВПрокат.ВыгрузитьКолонку("ОбъектПроката" ));
Запрос.УстановитьПараметр ("Ссылка" , Ссылка);
ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
Пока ВыборкаРезультатаЗапроса.Следующий() Цикл
Если Режим = РежимПроведенияДокумента.Оперативный Тогда
Для Каждого ТекСтрокаДанныеПередачиВПрокат Из ДанныеПередачиВПрокат Цикл
Движение = Движения.ОстаткиОбъектовПрокатаПредприятия.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.ОбъектПроката = ТекСтрокаДанныеПередачиВПрокат.ОбъектПроката;
Движение.ТочкаПроката = ТочкаПроката;
Движение.Количество = ТекСтрокаДанныеПередачиВПрокат.Количество;
КонецЦикла ;
Для Каждого ТекСтрокаДанныеПередачиВПрокат Из ДанныеПередачиВПрокат Цикл
Движение = Движения.ОбъектыПрокатаУКлиентов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Клиент = ТекСтрокаДанныеПередачиВПрокат.Клиент;
Движение.ОбъектПроката = ТекСтрокаДанныеПередачиВПрокат.ОбъектПроката;
Движение.Количество = ТекСтрокаДанныеПередачиВПрокат.Количество;
КонецЦикла ;
Остаток = ? (ВыборкаРезультатаЗапроса.КоличествоОстаток = Null , 0 , ВыборкаРезультатаЗапроса.КоличествоОстаток);
Если Остаток < ВыборкаРезультатаЗапроса.Количество Тогда
Сообщить ("Объекта проката" + СокрЛП(ВыборкаРезультатаЗапроса.ОбъектПроката) + "имеется только" + Остаток);
Отказ = Истина ;
Возврат ;
КонецЕсли ;
КонецЕсли ;
КонецЦикла ;
Движения.ОстаткиОбъектовПрокатаПредприятия.Записать();
Движения.ОбъектыПрокатаУКлиентов.Записать();
КонецПроцедуры
23.01.12, 18:23
Общительный
Группа: Пользователи
Сообщений: 29
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(Домовик @ 23.01.12, 19:12)
реквизит количество в табличной части документа отсутствует - первое, что в голову приходит также Количество есть в регистре, куда записываются движения - еще там можно проверить. Могли еще ошибку допустить, когда называли реквизит Количество. ошибка в имени поля
Да вроде проверила, в норме все... Голова кругом.
[
тут что-то было ]
Сообщение отредактировал logist - 23.01.12, 19:36
Причина редактирования: Правила п. 11 log
24.01.12, 9:33
Ветеран
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0
Цитата(kasya @ 23.01.12, 16:43)
а куда это вставлять нужно?
туда, где запрос выполняете. чтобы в отладчике посмотреть структуру и содержимое таблицы.
по поводу запроса. почему вы в качестве первой таблицы взяли документ, а в поле отнесли табличную часть?
можно сразу взять табличную часть -таблицу, а из нее реквизиты - поля. или так надо?
поле количество не определено поэтому, похоже.
еще циклы по строкам внутри цикла по выборке из запроса - почему?
Да! потому-что табличную часть в качестве поля делаете. Оказывается можно и так. ))Но тип поля ТАблицаЗначений. И с ним нужно вести как с таблицей значений. индексы строк выборки и таблзнач совпадают.
Сообщение отредактировал Домовик - 24.01.12, 9:43
24.01.12, 9:43
Крутой
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0
Цитата(kasya @ 23.01.12, 17:55)
Помогите, пожалуйста, разобраться с ошибкой: {Документ.ИмяДокумента(73)}: Поле объекта не обнаружено (Количество)
Остаток = ? (ВыборкаРезультатаЗапроса.КоличествоОстаток = Null , 0 , ВыборкаРезультатаЗапроса.КоличествоОстаток);
Если Остаток < ВыборкаРезультатаЗапроса.Количество Тогда
Сообщить ("Объекта проката" + СокрЛП(ВыборкаРезультатаЗапроса.ОбъектПроката) + "имеется только" + Остаток);
Отказ = Истина ;
Возврат ;
КонецЕсли ;
Вопрос знаками отмечено - там КоличествоОстаток наварное
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник. ЗиУП
24.01.12, 9:48
Ветеран
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0
Цитата(alex040269 @ 24.01.12, 5:43)
Вопрос знаками отмечено - там КоличествоОстаток наварное
нет. Количество в табличной части , тут обращение как к обычному полю. а нужно обращаться через таблицу значений. Либо в запросе определять полем.
Запрос = Новый Запрос;
Запрос.Текст= "ВЫБРАТЬ
| Документ1.ТабличнаяЧасть1.(
| НомерСтроки,
| Реквизит1,
| Реквизит2,
| Реквизит3
| ),
| Документ1.Реквизит1
|ИЗ
| Документ.Документ1.ТабличнаяЧасть1 КАК Документ1ТабличнаяЧасть1
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.Документ1 КАК Документ1
| ПО Документ1ТабличнаяЧасть1.Ссылка = Документ1.Ссылка" ;
Результат=Запрос.Выполнить().Выгрузить();
для Инд=0 По Результат.Количество()-1 Цикл
СтрРезультат=Результат.Получить(Инд);
ТоЧТОИщем=СтрРезультат.ТабличнаяЧасть1 .Получить(Инд).Реквизит1 ;
КонецЦикла ;
ТОЧТОИщем - аж вот так к значению реквизита Количество можно добраться
Сообщение отредактировал Домовик - 24.01.12, 9:57
Не нашли ответа на свой вопрос?
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!