|
Значение не является значением объектного типа ( | ☑ | ||
---|---|---|---|---|
0
Vladius
06.10.11
✎
17:34
|
Пока Выборка.Следующий() Цикл
Если Выборка.Количество > Выборка.КоличествоОстаток И Выборка.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Товар Тогда Нехватает = Выборка.Количество - Выборка.КоличествоОстаток; Сообщить("Не хватает товара " + Выборка.Номенклатура + " количество " + Нехватает + " в наличии " + Выборка.КоличествоОстаток); Отказ=Истина; КонецЕсли; КонецЦикла; Значение не является значением объектного типа! Где ошибка то? |
|||
1
CTmuB
06.10.11
✎
17:35
|
выборку в студию
|
|||
2
Jstunner
06.10.11
✎
17:36
|
где?
|
|||
3
Vladius
06.10.11
✎
17:36
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура, | МИНИМУМ(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество, | СУММА(РасходнаяНакладнаяСписокНоменклатуры.Цена) КАК Цена, | СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма |ПОМЕСТИТЬ ДокТЧ |ИЗ | Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры |ГДЕ | РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ДокТЧ.Номенклатура КАК Номенклатура, | ДокТЧ.Количество КАК Количество, | ДокТЧ.Цена КАК Цена, | ДокТЧ.Сумма КАК Сумма, | Остатки.Партия КАК Партия, | ЕСТЬNULL(Остатки.КоличествоОстаток, 0) КАК КоличествоОстаток, | ЕСТЬNULL(Остатки.СтоимостьОстаток, 0) КАК СтоимостьОстаток |ИЗ | ДокТЧ КАК ДокТЧ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки( | &Момент, | Номенклатура В | (ВЫБРАТЬ | ДокТЧ.Номенклатура | ИЗ | ДокТЧ КАК ДокТЧ)) КАК Остатки | ПО ДокТЧ.Номенклатура = Остатки.Номенклатура | |УПОРЯДОЧИТЬ ПО | Партия " + ПорядокПартий + " |ИТОГИ МИНИМУМ(Количество), МИНИМУМ(КоличествоОстаток), МИНИМУМ(СтоимостьОстаток) |ПО ДокТЧ.Номенклатура"; Запрос.УстановитьПараметр("Момент", МоментВремени()); Запрос.УстановитьПараметр("Ссылка", Ссылка); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); |
|||
4
zladenuw
06.10.11
✎
17:36
|
Ошибку лучше
|
|||
5
Jstunner
06.10.11
✎
17:37
|
в какой строчке ругается-то, текст ошибки полный давай
|
|||
6
Vladius
06.10.11
✎
17:37
|
Значение не является значением объектного типа (ВидНоменклатуры)
|
|||
7
kryptonite
06.10.11
✎
17:38
|
Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
|
|||
8
kryptonite
06.10.11
✎
17:38
|
ИТОГИ МИНИМУМ(Количество), МИНИМУМ(КоличествоОстаток), МИНИМУМ(СтоимостьОстаток)
|ПО ДокТЧ.Номенклатура |
|||
9
zbv
06.10.11
✎
17:39
|
Если выборка ПоГруппировкам, то и нужно выбирать по группировкам.
|
|||
10
CTmuB
06.10.11
✎
17:40
|
(9) +
|
|||
11
ShoGUN
06.10.11
✎
17:41
|
(0) Ты результат запроса в ТЗ выгрузи и всё увидишь... Номенклатура пустая в каких-то строках(в итоговых, очевидно, ибо (9))
|
|||
12
Vladius
06.10.11
✎
17:43
|
(11) Ничего не пустая, через точку останова посмотрел, показывает значение "Товар"
|
|||
13
Vetal_978
06.10.11
✎
17:45
|
Хотел поинтересоваться, а зачем в запросе Цену суммировать? :)
|
|||
14
CTmuB
06.10.11
✎
17:47
|
(13) чтобы получить общую продажную цену
|
|||
15
CTmuB
06.10.11
✎
17:47
|
)
|
|||
16
Vladius
06.10.11
✎
17:47
|
(13) А че не надо?))
|
|||
17
Vetal_978
06.10.11
✎
17:48
|
(16) не, ну может оно и надо, мне просто интересно зачем?
|
|||
18
ShoGUN
06.10.11
✎
17:51
|
(14) Омг, ОБЩАЯ ЦЕНА - это жесь О_о
|
|||
19
Vladius
06.10.11
✎
17:51
|
(17) Вот и я себя спрашиваю, зачем) Исправил.
Подскажите лучше как исправить Значение не является значением объектного типа (ВидНоменклатуры) Так и не понял где ошибка |
|||
20
ShoGUN
06.10.11
✎
17:52
|
Всё-таки рекомендую результат запроса просмотреть хоть бегло...
|
|||
21
zbv
06.10.11
✎
17:53
|
Пока Выборка.Следующий() Цикл
Если не ЗначениеЗаполнено(Выборка.Номенклатура) Тогда Продолжить; КонецЕсли; //Выбор данных ... |
|||
22
ShoGUN
06.10.11
✎
17:53
|
(19) Это означает, что ты обращаешься к полям у объекта примитивного типа. Чаще всего это Неопределено или NULL на месте ссылки/объекта.
|
|||
23
Vetal_978
06.10.11
✎
17:53
|
а детальные записи где?
|
|||
24
Vladius
06.10.11
✎
17:54
|
(20) В результате запроса все проверил. Все работает идеально. Вот необходимо добавить Что бы проверка количества товара срабатывала тогда когда у номенклатуры значение ТОВАР
|
|||
25
Mort
06.10.11
✎
17:54
|
(0) Вынеси ВидНоменклатуры в запрос, чтобы не дрочить базу по сто раз.
|
|||
26
ShoGUN
06.10.11
✎
17:56
|
(25) Тоже верно. И видно будет сразу, где косяк.
|
|||
27
cViper
06.10.11
✎
18:11
|
(0) Используй ЕСТЬNULL.
|
|||
28
cViper
06.10.11
✎
18:15
|
+(27) Разглядел запрос. Используешь )))
|
|||
29
Vladius
06.10.11
✎
18:18
|
Вроде получилось, сделал вот так:
Выборка.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Товар Тогда Просто через запрос вытащил значение. Кстати посмотрите правильно ли я сделал или вообще полный п..дец намудрил ))) Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка.Следующий() Цикл Если Выборка.Количество > Выборка.КоличествоОстаток И Выборка.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Товар Тогда Нехватает = Выборка.Количество - Выборка.КоличествоОстаток; Сообщить("Не хватает товара " + Выборка.Номенклатура + " количество " + Нехватает + " в наличии " + Выборка.КоличествоОстаток); Отказ=Истина; КонецЕсли; КонецЦикла; Если Отказ Тогда Возврат; КонецЕсли; Выборка.Сбросить(); Пока Выборка.Следующий() Цикл Если Выборка.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Услуга Тогда Движение = Движения.Продажи.Добавить(); Движение.Период = Дата; Движение.Номенклатура = Выборка.Номенклатура; Движение.Количество = Выборка.Количество; Движение.Продажа = Выборка.Сумма; Иначе ОсталосьСписать = Выборка.Количество; ВыборкаПартии = Выборка.Выбрать(); Пока ВыборкаПартии.Следующий() И ОсталосьСписать <>0 Цикл Списать = Мин(Выборка.Количество, Выборка.КоличествоОстаток); Себестоимость = Списать / ВыборкаПартии.КоличествоОстаток * ВыборкаПартии.СтоимостьОстаток; Движение = Движения.ОстаткиНоменклатуры.ДобавитьРасход(); Движение.Период = Дата; Движение.Номенклатура = ВыборкаПартии.Номенклатура; Движение.Количество = Списать; Движение.Партия = ВыборкаПартии.Партия; Движение.Стоимость = Себестоимость; ОсталосьСписать = ОсталосьСписать-Списать; Движение = Движения.Продажи.Добавить(); Движение.Период = Дата; Движение.Номенклатура = ВыборкаПартии.Номенклатура; Движение.Количество = Списать; Движение.Себестоимость = Себестоимость*Списать; Движение.Продажа = Выборка.Сумма; КонецЦикла; КонецЕсли; КонецЦикла; Движения.Продажи.Записывать=Истина; Движения.ОстаткиНоменклатуры.Записывать=Истина; Здесь я проверяю, если номенклатура товар то проверяется количество и если номенклатуры хватает тогда документ проводится, если УСЛУГА тогда количество товара не проверяется и движение проводится по регистру продажи. Что не так сделал? Или криво сделал? Только сильно не пинайте ) Я ещё учусь ) Просто интересно Ваше мнение... |
|||
30
Vladius
06.10.11
✎
18:57
|
Что некому мой код покритиковать?)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |