|
Синтаксическая ошибка в запросе | ☑ | ||
---|---|---|---|---|
0
pnamik
01.03.15
✎
10:40
|
Добрый день
1С 8.0.18.2. самописная конфа. При сформировании отчета валовая прибыль выдает ошибку: {Форма.Форма(107)}: Ошибка при вызове метода контекста (Выполнить): {(29, 8)}: Синтаксическая ошибка "КАК" КОНЕЦ <<?>>КАК Рентабельность РезультатЗапроса = Запрос.Выполнить(); Не понимаю, как исправить. Помогите, пожалуйста Часть текста запроса: Запрос = Новый Запрос("ВЫБРАТЬ | ДвиженияПоПартиям.Период, | ДвиженияПоПартиям.Регистратор, | ДвиженияПоПартиям.КодОперации, | ДвиженияПоПартиям.Номенклатура КАК Номенклатура, | ДвиженияПоПартиям.Склад КАК Склад, | ДвиженияПоПартиям.Партия КАК Партия, | ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА | -1*0 ИНАЧЕ 1 КОНЕЦ * ДвиженияПоПартиям.Количество КАК Количество, | ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА -Чеки.СуммаВсего*0 ИНАЧЕ | ДвиженияПоПартиям.СуммаПрод КОНЕЦ КАК Выручка, | ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА | -1 ИНАЧЕ 0 КОНЕЦ * ДвиженияПоПартиям.Количество КАК КоличествоВозврат, | ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА -Чеки.СуммаВсего ИНАЧЕ | 0 КОНЕЦ КАК ВыручкаВозврат, | ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА | -1 ИНАЧЕ 1 КОНЕЦ * ДвиженияПоПартиям.Сумма КАК Себестоимость, | ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА | (Чеки.СуммаВсего - ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ ДвиженияПоПартиям.СуммаПрод - ДвиженияПоПартиям.Сумма КОНЕЦ КАК ВаловаяПрибыль, | ВЫБОР | КОГДА ЕСТЬNULL(ДвиженияПоПартиям.Сумма, 0) = 0 | ТОГДА 0 | ИНАЧЕ | ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА | (Чеки.СуммаВсего - ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод - ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.Сумма * 100 | КОНЕЦ КАК Наценка, | ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА | (Чеки.СуммаВсего - ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод - ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.СуммаПрод * 100 | КОНЕЦ КАК Рентабельность |ИЗ | РегистрНакопления.ДвиженияПоПартиям КАК ДвиженияПоПартиям | ЛЕВОЕ СОЕДИНЕНИЕ Документ.КассовыйЧек.Покупки КАК Чеки | ПО Чеки.Ссылка = ДвиженияПоПартиям.Регистратор | И Чеки.НомерСтроки = ДвиженияПоПартиям.НомерСтроки |ГДЕ | ДвиженияПоПартиям.Период МЕЖДУ &НачалоПериода И &КонецПериода | И ДвиженияПоПартиям.Регистратор ССЫЛКА Документ.КассовыйЧек" + ?(МассивНоменклатуры.Количество() > 0, " И ДвиженияПоПартиям.Номенклатура В ИЕРАРХИИ(&МассивНоменклатуры)", "") + ?(СкладЗаполнен = Истина, " И ДвиженияПоПартиям.Склад В ИЕРАРХИИ(&Склад)", "") + ?(ПартияЗаполнен = Истина, " И ДвиженияПоПартиям.Партия В ИЕРАРХИИ(&Партия)", "") + " |ИТОГИ | СУММА(КоличествоВозврат), | СУММА(ВыручкаВозврат), | СУММА(Количество), | СУММА(Выручка), | СУММА(Себестоимость), | СУММА(ВаловаяПрибыль), | СУММА(Наценка), | СУММА(Рентабельность) |ПО | ОБЩИЕ, | Номенклатура ИЕРАРХИЯ"); Запрос.УстановитьПараметр("КВ", Перечисления.КодыОпераций.ВозвратОтПокупателя); Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода)); Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода)); Запрос.УстановитьПараметр("МассивНоменклатуры", МассивНоменклатуры); Запрос.УстановитьПараметр("Склад", Склад); Запрос.УстановитьПараметр("Партия", Партия); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); ОбработкаПрерыванияПользователя(); Макет = ПолучитьМакет("МакетВариант1"); |
|||
1
pnamik
01.03.15
✎
10:41
|
Запрос = Новый Запрос("ВЫБРАТЬ
| ДвиженияПоПартиям.Период, | ДвиженияПоПартиям.Регистратор, | ДвиженияПоПартиям.КодОперации, | ДвиженияПоПартиям.Номенклатура КАК Номенклатура, | ДвиженияПоПартиям.Склад КАК Склад, | ДвиженияПоПартиям.Партия КАК Партия, | ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА | -1*0 ИНАЧЕ 1 КОНЕЦ * ДвиженияПоПартиям.Количество КАК Количество, | ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА -Чеки.СуммаВсего*0 ИНАЧЕ | ДвиженияПоПартиям.СуммаПрод КОНЕЦ КАК Выручка, | ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА | -1 ИНАЧЕ 0 КОНЕЦ * ДвиженияПоПартиям.Количество КАК КоличествоВозврат, | ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА -Чеки.СуммаВсего ИНАЧЕ | 0 КОНЕЦ КАК ВыручкаВозврат, | ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА | -1 ИНАЧЕ 1 КОНЕЦ * ДвиженияПоПартиям.Сумма КАК Себестоимость, | ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА | (Чеки.СуммаВсего - ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ ДвиженияПоПартиям.СуммаПрод - ДвиженияПоПартиям.Сумма КОНЕЦ КАК ВаловаяПрибыль, | ВЫБОР | КОГДА ЕСТЬNULL(ДвиженияПоПартиям.Сумма, 0) = 0 | ТОГДА 0 | ИНАЧЕ | ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА | (Чеки.СуммаВсего - ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод - ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.Сумма * 100 | КОНЕЦ КАК Наценка, | ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА | (Чеки.СуммаВсего - ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод - ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.СуммаПрод * 100 | КОНЕЦ КАК Рентабельность |ИЗ | РегистрНакопления.ДвиженияПоПартиям КАК ДвиженияПоПартиям | ЛЕВОЕ СОЕДИНЕНИЕ Документ.КассовыйЧек.Покупки КАК Чеки | ПО Чеки.Ссылка = ДвиженияПоПартиям.Регистратор | И Чеки.НомерСтроки = ДвиженияПоПартиям.НомерСтроки |ГДЕ | ДвиженияПоПартиям.Период МЕЖДУ &НачалоПериода И &КонецПериода | И ДвиженияПоПартиям.Регистратор ССЫЛКА Документ.КассовыйЧек" + ?(МассивНоменклатуры.Количество() > 0, " И ДвиженияПоПартиям.Номенклатура В ИЕРАРХИИ(&МассивНоменклатуры)", "") + ?(СкладЗаполнен = Истина, " И ДвиженияПоПартиям.Склад В ИЕРАРХИИ(&Склад)", "") + ?(ПартияЗаполнен = Истина, " И ДвиженияПоПартиям.Партия В ИЕРАРХИИ(&Партия)", "") + " |ИТОГИ | СУММА(КоличествоВозврат), | СУММА(ВыручкаВозврат), | СУММА(Количество), | СУММА(Выручка), | СУММА(Себестоимость), | СУММА(ВаловаяПрибыль), | СУММА(Наценка), | СУММА(Рентабельность) |ПО | ОБЩИЕ, | Номенклатура ИЕРАРХИЯ"); Запрос.УстановитьПараметр("КВ", Перечисления.КодыОпераций.ВозвратОтПокупателя); Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода)); Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода)); Запрос.УстановитьПараметр("МассивНоменклатуры", МассивНоменклатуры); Запрос.УстановитьПараметр("Склад", Склад); Запрос.УстановитьПараметр("Партия", Партия); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); ОбработкаПрерыванияПользователя(); Макет = ПолучитьМакет("МакетВариант1"); |
|||
2
ДенисЧ
01.03.15
✎
10:46
|
(Чеки.СуммаВсего - ДвиженияПоПартиям.Сумма)*-1
тут ошибка |
|||
3
Записьдампа
01.03.15
✎
10:49
|
КОНЕЦ разделить на Сумму и умножить на 100 КОНЦОВ
=) |
|||
4
hhhh
01.03.15
✎
10:55
|
два раза КОНЕЦ впендюрил, элементарно же.
|
|||
5
pnamik
01.03.15
✎
11:15
|
в общем, так и не получилось. изначально было в отчете наценка в виде
.... ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА | (Чеки.СуммаВсего - ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод - ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.Сумма * 100 | КОНЕЦ КАК Наценка, по аналогии хотел добавить в текст запроса рентабельность (в макет добавил) ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА | (Чеки.СуммаВсего - ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод - ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.СуммаПрод * 100 | КОНЕЦ КАК Рентабельность выдал ошибку (0). Думаю (2) прав. чем заменить это выражение, не знаю. |
|||
6
ДенисЧ
01.03.15
✎
11:17
|
второй конец убери. А то как-то неприлично получается...
|
|||
7
Wobland
01.03.15
✎
11:17
|
-(Чеки.СуммаВсего - ДвиженияПоПартиям.Сумма). внезапно, правда?
|
|||
8
pnamik
01.03.15
✎
11:29
|
предлагаемые варианты (6) и (7) попробовал. та же синтаксическая ошибка. не понимание - это ужас.
|
|||
9
pnamik
01.03.15
✎
11:31
|
{Форма.Форма(107)}: Ошибка при вызове метода контекста (Выполнить): {(27, 2)}: Синтаксическая ошибка "ВЫБОР"
<<?>>ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА РезультатЗапроса = Запрос.Выполнить(); |
|||
10
Wobland
01.03.15
✎
11:33
|
(9) выборы и концы пересчитал?
|
|||
11
pnamik
01.03.15
✎
11:33
|
варианты
ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА | -(Чеки.СуммаВсего - ДвиженияПоПартиям.Сумма) ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод - ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.СуммаПрод * 100 | КОНЕЦ КАК Рентабельность или ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА | -(Чеки.СуммаВсего - ДвиженияПоПартиям.Сумма) ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод - ДвиженияПоПартиям.Сумма) / ДвиженияПоПартиям.СуммаПрод * 100 | КОНЕЦ КАК Рентабельность или же ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА | -(Чеки.СуммаВсего - ДвиженияПоПартиям.Сумма) ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод - ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.СуммаПрод * 100 | КАК Рентабельность или же еще в разных вариациях |
|||
12
Wobland
01.03.15
✎
11:35
|
я вижу ошибку в поле, которое заканчивается на 26й строке
|
|||
13
pnamik
01.03.15
✎
11:37
|
т.е. в этой строке:
ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА ? |
|||
14
pnamik
01.03.15
✎
11:38
|
(9) имеется ввиду это?
|ИТОГИ | СУММА(КоличествоВозврат), | СУММА(ВыручкаВозврат), | СУММА(Количество), | СУММА(Выручка), | СУММА(Себестоимость), | СУММА(ВаловаяПрибыль), | СУММА(Наценка), | СУММА(Рентабельность) |
|||
15
Записьдампа
01.03.15
✎
11:40
|
Лишний конец уравновешивается выбором! =)
ВЫБОР
|
|||
16
Wobland
01.03.15
✎
11:40
|
(13) сам считай свои строки
|
|||
17
pnamik
01.03.15
✎
11:49
|
(15) умница, спасибо. по крайней мере пока ошибок нет. проверю правильно ли считает. Думаю, все будет правильно. т.к. формула правильная. Нужно было аналогии чуть сверху начинать.
|
|||
18
pnamik
01.03.15
✎
11:57
|
(16), (6), (4), (2) также спасибо за участие в обсуждении
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |