{Документ.ИмяДокумента(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С форуме!