|
v7: Помогите понять что не так с запросом | ☑ | ||
---|---|---|---|---|
0
crisalis
22.07.13
✎
14:07
|
Доброе время суток, помогите пожалуйста что не так в запросе:
ТекстЗапроса = ТекстЗапроса + " |ДатаДокумента = Документ.РеализацияТМЦЦ.ДатаДок; | |Расход = Документ.РеализацияТМЦЦ.Сумма; | |Возврат = Документ.ВозвратТовараПоставщику.Сумма; | |Количество = Документ.РеализацияТМЦЦ.Количество, | Документ.ВозвратТовараПоставщику.Количество; | |Товар = Документ.РеализацияТМЦЦ.ТМЦ, | Документ.ВозвратТовараПоставщику.Товар; | |Клиент = Документ.РеализацияТМЦЦ.Контрагент, | Документ.ВозвратТовараПоставщику.Контрагент; | |Объем = Документ.РеализацияТМЦЦ.ТМЦ.Объем, | Документ.ВозвратТовараПоставщику.Товар.Объем; | |Упаковки =Документ.РеализацияТМЦЦ.ТМЦ.КоличествоВУпаковке, | Документ.ВозвратТовараПоставщику.Товар.КоличествоВУпаковке; |"; При отработке запроса выскакивает ошибка : Неверно заданный путь Объем Неверно заданный путь КоличествоВУпаковке Реквизит ТЧ Документ.РеализацияТМЦЦ.ТМЦ имеет изнчально тип Справочник и в форме принимает конкретный тип при выборе ТипТМЦ (Перечисление.ТипТМЦ) |
|||
1
КапЛей
22.07.13
✎
14:09
|
А Объём и КоличествоВУпаковке это что?
|
|||
2
crisalis
22.07.13
✎
14:10
|
(1) Реквизиты Справочник.Товары
|
|||
3
Калиостро
22.07.13
✎
14:13
|
(0)
Реквизит ТЧ Документ.РеализацияТМЦЦ.ТМЦ имеет изнчально тип Справочник Если не все справочники имеют реквизит "Объем", будет такая ошибка. |
|||
4
crisalis
22.07.13
✎
14:13
|
Я могу потом в выборке выцепить их через точку, но возникают проблемы с итогами. (((
|
|||
5
КапЛей
22.07.13
✎
14:15
|
(3) +1
|
|||
6
КапЛей
22.07.13
✎
14:16
|
+(5) Условие поставь в запросе на ТипТМЦ
|
|||
7
crisalis
22.07.13
✎
14:17
|
(3)
Если ( ВыбрТМЦ.Вид() = "Товары" ) Тогда ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.Товары; ИначеЕсли ( ВыбрТМЦ.Вид() = "ГотоваяПродукция" ) Тогда ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.ГП; ИначеЕсли ( ВыбрТМЦ.Вид() = "Материалы" ) И ( флРОДМатериал = 1 ) Тогда ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.Материалы; ИначеЕсли ( ВыбрТМЦ.Вид() = "Услуги" ) Тогда ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.Услуги; ИначеЕсли ( ВыбрТМЦ.Вид () = "МБП" ) И ( флМБП_Экспл = 1 ) Тогда ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.МБПвЭксплуатации; ИначеЕсли ( ВыбрТМЦ.Вид() = "МБП" ) И ( флРОДМБП = 1 ) Тогда ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.МБП ; ИначеЕсли ( ВыбрТМЦ.Вид() = "ОсновныеСредства" ) Тогда ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.ОсновныеСредства ; ИначеЕсли ( ВыбрТМЦ.Вид() = "НематериальныеАктивы" ) Тогда ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.НМА ; КонецЕсли; Во все добавить ??? |
|||
8
crisalis
22.07.13
✎
14:18
|
(6) Есть такое условие уже но не работает (((
Если ( флПоАгентам = 1 ) И ( ВыбАгент.РазмерСписка() > 0 ) Тогда ТекстЗапроса = ТекстЗапроса + " |Условие (Менеджер В ВыбАгент); |"; ИначеЕсли ( флПоАгентам = 0 ) И ( ВыбКонтр.РазмерСписка() > 0 ) Тогда ТекстЗапроса = ТекстЗапроса + " |Условие (Клиент В ВыбКонтр); |Условие (ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.Товары); |"; КонецЕсли; |
|||
9
viktor_vv
22.07.13
✎
14:21
|
|Условие (Товар.Вид() = ""ТМЦ"");
|
|||
10
КапЛей
22.07.13
✎
14:21
|
(8) значит условие не выполняется в ИначеЕсли.
И, кстати, в (0) ты пишешь о Перечисление.ТипТМЦ, а в (8) про Перечисление.ВидыТМЦДляРеализацииТМЦ |
|||
11
viktor_vv
22.07.13
✎
14:21
|
Хотя есть сомнение, что это поможет.
|
|||
12
Ёпрст
22.07.13
✎
14:23
|
(0) можно сделать, через функцию.
|
|||
13
КапЛей
22.07.13
✎
14:23
|
и перепиши в (8)
|Условие (ТМЦ.ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.Товары); |
|||
14
Ёпрст
22.07.13
✎
14:23
|
и объем и упаковку
|
|||
15
КапЛей
22.07.13
✎
14:24
|
+(13) Точнее
|Условие (Товар.ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.Товары); |
|||
16
crisalis
22.07.13
✎
14:29
|
(15) Вот запрос:
//{{ЗАПРОС(Сформировать) Период с НачДата по КонДата; Обрабатывать НеПомеченныеНаУдаление; ДатаДокумента = Документ.РеализацияТМЦЦ.ДатаДок; Расход = Документ.РеализацияТМЦЦ.Сумма; Возврат = Документ.ВозвратТовараПоставщику.Сумма; Количество = Документ.РеализацияТМЦЦ.Количество, Документ.ВозвратТовараПоставщику.Количество; Товар = Документ.РеализацияТМЦЦ.ТМЦ, Документ.ВозвратТовараПоставщику.Товар; Клиент = Документ.РеализацияТМЦЦ.Контрагент, Документ.ВозвратТовараПоставщику.Контрагент; Объем = Документ.РеализацияТМЦЦ.ТМЦ.Объем, Документ.ВозвратТовараПоставщику.Товар.Объем; Упаковки = Документ.РеализацияТМЦЦ.ТМЦ.КоличествоВУпаковке, Документ.ВозвратТовараПоставщику.Товар.КоличествоВУпаковке; Функция СуммаРасход = Сумма(Расход); Функция СуммаВозврат = Сумма(Возврат * (-1)); Функция СуммаКоличество = Сумма(Количество); Функция ДКЛ = Сумма(Объем * Количество / 10); Функция УПК = Сумма(Количество / Упаковки); Группировка Документ; Группировка Клиент Без Групп; Группировка Товар Без Групп; Условие (Клиент В ВыбКонтр); Условие (Товар.ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.Товары); Условие (ТМЦ В ВыбТов); |
|||
17
crisalis
22.07.13
✎
14:30
|
так же не работает (((
|
|||
18
Ёпрст
22.07.13
✎
14:30
|
(16) так не выйдет, если ТМЦ в документе - неопределенного вида.
|
|||
19
crisalis
22.07.13
✎
14:32
|
(18) как не определенного ? :
Процедура ПриВыбореВидаТМЦ() Если ( ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.Товары ) Тогда НазначитьВид ( ТМЦ, "Товары" ); ИначеЕсли ( ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.ГП ) Тогда НазначитьВид ( ТМЦ, "ГотоваяПродукция" ); ИначеЕсли ( ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.Материалы ) Тогда НазначитьВид ( ТМЦ, "Материалы" ); ИначеЕсли ( ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.Услуги ) Тогда НазначитьВид ( ТМЦ, "Услуги" ); ИначеЕсли ( ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.МБП ) Тогда НазначитьВид ( ТМЦ, "МБП" ); ИначеЕсли ( ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.МБПвЭксплуатации ) Тогда НазначитьВид ( ТМЦ, "МБП" ); ИначеЕсли ( ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.ОсновныеСредства ) Тогда НазначитьВид ( ТМЦ, "ОсновныеСредства" ); ИначеЕсли ( ВидТМЦ = Перечисление.ВидыТМЦДляРеализацииТМЦ.НМА ) Тогда НазначитьВид ( ТМЦ, "НематериальныеАктивы" ); КонецЕсли; КонецПроцедуры |
|||
20
crisalis
22.07.13
✎
14:33
|
(19) Это в форме документа документа...
|
|||
21
Ёпрст
22.07.13
✎
14:35
|
(19) Не тупи. В дереве метаданных, реквизит твой стоит как <Справочник> без вида.
У таких реквизитов в чорном запросе нет атрибутов. Можно только в условии пихать или при расчете функции. |
|||
22
crisalis
22.07.13
✎
14:36
|
(18) Может реально добавить везде (Спр.ГотоваяПродукция,Материалы...) реквизиты Объем, КоличествоВУпаковке...
|
|||
23
crisalis
22.07.13
✎
14:39
|
(21) Да я понял ... (((
|
|||
24
viktor_vv
22.07.13
✎
14:39
|
(22) Тогда уж (12), тормознее будет, но получше чем фигачить ненужные реквизиты в справочники.
|
|||
25
Ёпрст
22.07.13
✎
14:40
|
Ё...
Период с НачДата по КонДата; Обрабатывать НеПомеченныеНаУдаление; ДатаДокумента = Документ.РеализацияТМЦЦ.ДатаДок; Расход = Документ.РеализацияТМЦЦ.Сумма; ВозвратСумма = Документ.ВозвратТовараПоставщику.Сумма; Количество = Документ.РеализацияТМЦЦ.Количество, Товар = Документ.РеализацияТМЦЦ.ТМЦ, Документ.ВозвратТовараПоставщику.Товар; Клиент = Документ.РеализацияТМЦЦ.Контрагент, Документ.ВозвратТовараПоставщику.Контрагент; Функция СуммаРасход = Сумма(Расход); Функция СуммаВозврат = Сумма(ВозвратСумма * (-1)); Функция СуммаКоличество = Сумма(Количество); Функция ДКЛ = Сумма(Товар.Объем * Количество / 10); Функция УПК = Сумма(Количество / Товар.КоличествоВУпаковке); Группировка Клиент Без Групп; Группировка Документ; Группировка Товар Без Групп; Условие (Клиент В ВыбКонтр); Условие (ТМЦ В ВыбТов); |
|||
26
crisalis
22.07.13
✎
14:47
|
(25) Нечисловая переменная в функции накопления "Товар.Объем"
|
|||
27
crisalis
22.07.13
✎
14:54
|
(24) Еще не факт что поможет...
|
|||
28
Ёпрст
22.07.13
✎
14:57
|
не вопрос
Функция ПолучитьОбъем(Товар) Объем = 0; Попытка //можно и не через попытку, а проверкой на вид справочника лепить Объем = Товар.Объем; Исключение КонецПопытки; Возврат Объем; КонецФункции Функция ПолучитьУпаковку(Товар) Упаковка= 1; Попытка Упаковка= Товар.КоличествоВУпаковке; Исключение КонецПопытки; Возврат Упаковка; КонецФункции ........... Функция ДКЛ = Сумма(ПолучитьОбъем(Товар) * Количество / 10); Функция УПК = Сумма(Количество / ПолучитьУпаковку(Товар)); |
|||
29
Ёпрст
22.07.13
✎
14:57
|
насладлайся
|
|||
30
Ёпрст
22.07.13
✎
14:57
|
наслаждайся
|
|||
31
Ёпрст
22.07.13
✎
15:02
|
только надо еще кое что дописать, если количество - это целое число без дробной части у тебя в метаданных.
|
|||
32
Ёпрст
22.07.13
✎
15:02
|
чтоб точность функции повысить.
|
|||
33
crisalis
22.07.13
✎
15:05
|
(29)(30) Спасибо заработало ! )))
(31)(32) Объем (15,3), Количество (5,0) |
|||
34
Ёпрст
22.07.13
✎
15:07
|
(33) рано радуешься.. сейчас результат обеих функций - 5.0
|
|||
35
Ёпрст
22.07.13
✎
15:08
|
вот так переделай:
Функция ДКЛ = Сумма(Расход-Расход+ПолучитьОбъем(Товар) * Количество / 10); Функция УПК = Сумма(Расход-Расход+Количество / ПолучитьУпаковку(Товар)); |
|||
36
Ёпрст
22.07.13
✎
15:09
|
так хотя бы, результат будет иметь ту же точность, что и Расход = сумма в реквизите документа
|
|||
37
crisalis
22.07.13
✎
15:18
|
(36) Спасибо, но честно говоря я не заметил разницы
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |