1с синтаксическая ошибка где

Синтаксическая ошибка, не могу понять почему (в // ошибка) ☑ 0

igoza

22.08.13

21:38

Если Не обЗначениеНеЗаполнено(МестоХранения) Тогда

        Запрос.Текст =

        «ВЫБРАТЬ

        |    ОстаткиКомлектующихОстатки.Помещение,

        |    ОстаткиКомлектующихОстатки.МестоХранения,

        |    ОстаткиКомлектующихОстатки.Комплектующая,

        |    ОстаткиКомлектующихОстатки.ШтрихКод,

        |    ОстаткиКомлектующихОстатки.КоличествоОстаток,

        |    ОстаткиКомлектующихОстатки.СуммаОстаток

        |ИЗ

        |    РегистрНакопления.ОстаткиКомлектующих.Остатки КАК ОстаткиКомлектующихОстатки

        |ГДЕ

        |  «+ПерУсловие+»

        |»;

        Если МестоХранения.Метаданные().Имя = «Помещения» Тогда

            ПерУсловие = «ОстаткиКомлектующихОстатки.Помещение = &МестоХранения»;

        КонецЕсли;

        Если МестоХранения.Метаданные().Имя = «РабочиеМеста» Тогда

            ПерУсловие = «ОстаткиКомлектующихОстатки.МестоХранения = &МестоХранения»;

        КонецЕсли;

    КонецЕсли;

    
    Если обЗначениеНеЗаполнено(МестоХранения) Тогда

        Запрос.Текст =

        «ВЫБРАТЬ

        |    ОстаткиКомлектующихОстатки.Помещение,

        |    ОстаткиКомлектующихОстатки.МестоХранения,

        |    ОстаткиКомлектующихОстатки.Комплектующая,

        |    ОстаткиКомлектующихОстатки.ШтрихКод,

        |    ОстаткиКомлектующихОстатки.КоличествоОстаток,

        |    ОстаткиКомлектующихОстатки.СуммаОстаток

        |ИЗ

        |    РегистрНакопления.ОстаткиКомлектующих.Остатки КАК ОстаткиКомлектующихОстатки

        |»;

    КонецЕсли;

    
    Запрос.УстановитьПараметр(«МестоХранения», МестоХранения);    

    Результат = Запрос.Выполнить(); // ругается однако!

1

igoza

22.08.13

21:40

инвалид в 1С, где тут ошибка, а то опять стёб один бдудет)))

2

Поросенок Петр

22.08.13

21:40

Надо было написать не «// ругается однако!», а «// программа не работает :(«.

было бы понятнее.

3

Hans

22.08.13

21:41

какая ошибка ?

4

spectre1978

22.08.13

21:41

а каков текст ошибки?

5

mehfk

22.08.13

21:42

Гед ошибка? Нет ошибки. Все хорошо. Тебе показалось. Закрой конфигуратор и позови кого-нибудь из взрослых.

6

mehfk

22.08.13

21:42

(5) fix: Гед -> Где

7

igoza

22.08.13

21:43

{Отчет.ОстаткиНаМестахХранения.Форма.ФормаОтчета.Форма(49)}: Ошибка при вызове метода контекста (Выполнить)

    Результат = Запрос.Выполнить();

по причине:

по причине:

{(12, 1)}: Синтаксическая ошибка

8

spectre1978

22.08.13

21:44

ну и при чем тут //?

Ошибка-то времени выполнения.

Накосячил в запросе.

Отладь в консоли, потом запускай в коде.

9

mehfk

22.08.13

21:44

(7)

сделай перед запрос.выполнить();

сообщить(Запрос.Текст);

и скопипасть сюда.

10

Поросенок Петр

22.08.13

21:44

1) Идиотское условие Если — Если. «Иначе» отменили?

2) обЗначениеЗаполнено() — кто-то ещё использует?

3) Параметры не в вирт таблице, а в «ГДЕ».

4)… можно продолжить

11

vde69

модератор

22.08.13

21:45

Если Не обЗначениеНеЗаполнено(МестоХранения) Тогда

        Если МестоХранения.Метаданные().Имя = «Помещения» Тогда

            ПерУсловие = «ОстаткиКомлектующихОстатки.Помещение = &МестоХранения»;

        КонецЕсли;

        Если МестоХранения.Метаданные().Имя = «РабочиеМеста» Тогда

            ПерУсловие = «ОстаткиКомлектующихОстатки.МестоХранения = &МестоХранения»;

        КонецЕсли;

        Запрос.Текст =

        «ВЫБРАТЬ

        |    ОстаткиКомлектующихОстатки.Помещение,

        |    ОстаткиКомлектующихОстатки.МестоХранения,

        |    ОстаткиКомлектующихОстатки.Комплектующая,

        |    ОстаткиКомлектующихОстатки.ШтрихКод,

        |    ОстаткиКомлектующихОстатки.КоличествоОстаток,

        |    ОстаткиКомлектующихОстатки.СуммаОстаток

        |ИЗ

        |    РегистрНакопления.ОстаткиКомлектующих.Остатки КАК ОстаткиКомлектующихОстатки

        |ГДЕ ИСТИНА И

        |  «+ПерУсловие+»

        |»;

    КонецЕсли;

    
    Если обЗначениеНеЗаполнено(МестоХранения) Тогда

        Запрос.Текст =

        «ВЫБРАТЬ

        |    ОстаткиКомлектующихОстатки.Помещение,

        |    ОстаткиКомлектующихОстатки.МестоХранения,

        |    ОстаткиКомлектующихОстатки.Комплектующая,

        |    ОстаткиКомлектующихОстатки.ШтрихКод,

        |    ОстаткиКомлектующихОстатки.КоличествоОстаток,

        |    ОстаткиКомлектующихОстатки.СуммаОстаток

        |ИЗ

        |    РегистрНакопления.ОстаткиКомлектующих.Остатки КАК ОстаткиКомлектующихОстатки

        |»;

    КонецЕсли;

    
    Запрос.УстановитьПараметр(«МестоХранения», МестоХранения);    

    Результат = Запрос.Выполнить(); // ругается однако!

12

mehfk

22.08.13

21:47

(11) Или

ПерУсловие = «»;

в самом начале

13

vde69

модератор

22.08.13

21:47

а вообще если стаж у тебя годик есть и не видишь таких простых вещей, может профессию поменять?

такие вещи простительны новичкам до 1 месяца…

14

vde69

модератор

22.08.13

21:48

(12) и чего?

пустое условие «ГДЕ» выдает ошибку…

15

igoza

22.08.13

21:49

(12) 3 мес стаж с нул9

16

Fragster

модератор

22.08.13

21:49

вот нет бы построителем пользоваться

17

mehfk

22.08.13

21:49

(13) Может он год фуры с коробками разгружал.

18

vde69

модератор

22.08.13

21:50

(15) ну тогда еще простительно :)

короче у тебя запрос с пустым условием кривой

19

mehfk

22.08.13

21:51

(14)

ГДЕ ИСТИНА И

        |  «+ПерУсловие+»

при пустом ПерУсловие тоже выдаст ошибку

20

vde69

модератор

22.08.13

21:53

(19) согласен :) ну я направление дал

21

igoza

22.08.13

21:56

Блин надобыло определение ПерУсловие до запроса сделать, а не после XD

спасибо большое!

Вот текст запроса

ВЫБРАТЬ
	              |	ЦеныНоменклатурыСрезПоследних.Цена,
	              |	ЦеныНоменклатурыСрезПоследних.Валюта,
	              |	ЦеныНоменклатурыСрезПоследних.ВидЦены,
	              |	ЦеныНоменклатурыСрезПоследних.Номенклатура,
	              |	ЦеныНоменклатурыСрезПоследних.Характеристика
	              |ИЗ
	              |	РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
	              |ГДЕ
	              |	ЦеныНоменклатурыСрезПоследних.ВидЦены В(&ТипЦен)
	              |	И ЦеныНоменклатурыСрезПоследних.Номенклатура В(&Номенлатуры)"

Запрос построено на конструкторе запросов.

Текст ошибки

{Форма.ГлавнаяФорма.Форма(206)}: Ошибка при вызове метода контекста (Выполнить)
	ТабЗначРезультат = Запрос.Выполнить().Выгрузить();
по причине:
{(4, 2)}: Синтаксическая ошибка "ИЗ"
<<?>>ИЗ


  • Вопрос задан

  • 2348 просмотров

Ошибка синтаксиса языка запроса.
Вам нужно определится с тем, что вы используете. Если работаете с физической таблицей, то источник = РегистрСведений.ЦеныНоменклатуры. Если хотите виртуальную таблицу срезу последних, то даже не обязательно задавать время среза и условие (которое вы запихнули в секцию ГДЕ), но обязательно указать круглые кавычки!

ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Цена,
| ЦеныНоменклатурыСрезПоследних.Валюта,
| ЦеныНоменклатурыСрезПоследних.ВидЦены,
| ЦеныНоменклатурыСрезПоследних.Номенклатура,
| ЦеныНоменклатурыСрезПоследних.Характеристика
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены В(&ТипЦен) и Номенклатура В(&Номенлатуры)) КАК ЦеныНоменклатурыСрезПоследних»

Пригласить эксперта


  • Показать ещё
    Загружается…

21 сент. 2023, в 07:57

20000 руб./за проект

21 сент. 2023, в 06:22

4000 руб./за проект

21 сент. 2023, в 04:48

2000 руб./за проект

Минуточку внимания

Изменили запрос, но все равно выводит ошибку уже при отладке:

{Документ.СчетНаОплатуПокупателюНовый.МодульОбъекта(116)}: Ошибка при вызове метода контекста (Выполнить)
ЗапросТовары = Запрос.Выполнить().Выгрузить();
по причине:
Разное количество полей в объединяемых запросах

Функция ПечатьСчетаЗаказа(Тип)
Перем ПодразделениеОтветственныхЛиц;

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
Запрос.Текст ="ВЫБРАТЬ
| ЗаказПокупателя.Номер,
| ЗаказПокупателя.Дата,
| ЗаказПокупателя.ДоговорКонтрагента,
| ЗаказПокупателя.Организация,
| ЗаказПокупателя.Контрагент КАК Покупатель,
| ЗаказПокупателя.Организация КАК Руководители,
| ЗаказПокупателя.Организация КАК Поставщик,
| ЗаказПокупателя.ОрганизацияПолучатель КАК Получатель,
| ЗаказПокупателя.СуммаДокумента,
| ЗаказПокупателя.ВалютаДокумента,
| ЗаказПокупателя.УчитыватьНДС,
| ЗаказПокупателя.СуммаВключаетНДС
|ИЗ
| Документ.СчетНаОплатуПокупателюНовый КАК ЗаказПокупателя
|ГДЕ
| ЗаказПокупателя.Ссылка = &ТекущийДокумент";

Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);

ЧастьЗапросаДляВыбораСодержанияУслуг = ФормированиеПечатныхФорм.ПолучитьЧастьЗапросаДляВыбораСодержанияУслуг("ЗаказПокупателя");

Запрос.Текст =
"ВЫБРАТЬ
| 1 КАК ID,
| ВложенныйЗапрос.Номенклатура.Код КАК Код,
| ВложенныйЗапрос.Номенклатура.Артикул КАК Артикул,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.ЕдиницаИзмерения,
| ВложенныйЗапрос.Цена,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.СуммаНДС,
| ВложенныйЗапрос.СрокПоставки,
| ВложенныйЗапрос.НомерСтроки,
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар
|ИЗ
| (ВЫБРАТЬ
| ЗаказПокупателя.Номенклатура КАК Номенклатура,
| ЗаказПокупателя.Цена КАК Цена,
| СУММА(ЗаказПокупателя.Количество) КАК Количество,
| СУММА(ЗаказПокупателя.Сумма) КАК Сумма,
| СУММА(ЗаказПокупателя.СуммаНДС) КАК СуммаНДС,
| ЗаказПокупателя.СрокПоставки КАК СрокПоставки,
| СУММА(ЗаказПокупателя.НомерСтроки) КАК НомерСтроки,
| ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения
| ИЗ
| Документ.СчетНаОплатуПокупателюНовый.Товары КАК ЗаказПокупателя
| ГДЕ
| ЗаказПокупателя.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| ЗаказПокупателя.Номенклатура,
| ЗаказПокупателя.Цена,
| ЗаказПокупателя.СрокПоставки) КАК ВложенныйЗапрос
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| " + ЧастьЗапросаДляВыбораСодержанияУслуг + ",
| " + ЧастьЗапросаДляВыбораСодержанияУслуг + ",
| ЗаказПокупателя.Номенклатура.Код КАК Код,
| ЗаказПокупателя.Номенклатура.Артикул КАК Артикул,
| ЗаказПокупателя.Количество,
| ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование,
| ЗаказПокупателя.Цена,
| ЗаказПокупателя.Сумма,
| ЗаказПокупателя.СуммаНДС,
| ЗаказПокупателя.НомерСтроки,
| 2
|ИЗ
| Документ.СчетНаОплатуПокупателюНовый.Услуги КАК ЗаказПокупателя
|
|ГДЕ
| ЗаказПокупателя.Ссылка = &ТекущийДокумент
|
|УПОРЯДОЧИТЬ ПО
| ID,
| НомерСтроки";

ЗапросТовары = Запрос.Выполнить().Выгрузить();

Макет = ПолучитьМакет("СчетЗаказ");

// Выводим шапку накладной

СведенияОПолучателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);
Если Тип = "Счет" Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокСчета");
ОбластьМакета.Параметры.Заполнить(Шапка);
ОбластьМакета.Параметры.ИННПолучателя = СведенияОПолучателе.ИНН;
ОбластьМакета.Параметры.КПППолучателя = СведенияОПолучателе.КПП;
Если ТипЗнч(СтруктурнаяЕдиница) = Тип("СправочникСсылка.БанковскиеСчета") Тогда
Банк = ?(НЕ ЗначениеЗаполнено(СтруктурнаяЕдиница.БанкДляРасчетов), СтруктурнаяЕдиница.Банк, СтруктурнаяЕдиница.БанкДляРасчетов);
БИК = Банк.Код;
КоррСчет = Банк.КоррСчет;
ГородБанка = Банк.Город;
НомерСчета = ВернутьРасчетныйСчет(СтруктурнаяЕдиница);

ОбластьМакета.Параметры.БИКБанкаПолучателя = БИК;
ОбластьМакета.Параметры.БанкПолучателя = Банк;
ОбластьМакета.Параметры.БанкПолучателяПредставление = СокрЛП(Банк) + " " + ГородБанка;
ОбластьМакета.Параметры.СчетБанкаПолучателя = КоррСчет;
ОбластьМакета.Параметры.СчетБанкаПолучателяПредставление = КоррСчет;
ОбластьМакета.Параметры.СчетПолучателяПредставление = НомерСчета;
ОбластьМакета.Параметры.СчетПолучателя = НомерСчета;
КонецЕсли;

Если ПустаяСтрока(СтруктурнаяЕдиница.ТекстКорреспондента) Тогда
ТекстКорреспондента = СведенияОПолучателе.НаименованиеДляПечатныхФорм;
Если ЗначениеЗаполнено(СтруктурнаяЕдиница.БанкДляРасчетов) Тогда
ТекстКорреспондента = ТекстКорреспондента + " р/с " + СтруктурнаяЕдиница.НомерСчета
+ " в " + СтруктурнаяЕдиница.Банк + " " + СтруктурнаяЕдиница.Банк.Город;
КонецЕсли;
Иначе
ТекстКорреспондента = СтруктурнаяЕдиница.ТекстКорреспондента;
КонецЕсли;
ОбластьМакета.Параметры.ПредставлениеПолучателя = ТекстКорреспондента;

ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;

ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Счет на оплату");

ТабДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
ОбластьМакета.Параметры.Заполнить(Шапка);
СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата);
ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(
СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,");
ТабДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
ОбластьМакета.Параметры.Заполнить(Шапка);
СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Покупатель, Шапка.Дата);
ОбластьМакета.Параметры.ПредставлениеПокупателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(
СведенияОПокупателе, "НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,");
ТабДокумент.Вывести(ОбластьМакета);

ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ВыводитьКоды = Истина;
Колонка = "Артикул";
ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ВыводитьКоды = Истина;
Колонка = "Код";
Иначе
ВыводитьКоды = Ложь;
КонецЕсли;

ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");

ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ОбластьКодов.Параметры.ИмяКолонкиКодов = Колонка;
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);
ТабДокумент.Присоединить(ОбластьСуммы);

ОбластьКолонкаТовар = Макет.Область("Товар");

Если Не ВыводитьКоды Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
Макет.Область("КолонкаКодов").ШиринаКолонки;
КонецЕсли;

ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("Строка|Сумма");

Сумма = 0;
СуммаНДС = 0;
ВсегоСкидок = 0;
ВсегоБезСкидок = 0;

Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл

ОбластьНомера.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
ТабДокумент.Вывести(ОбластьНомера);

Если ВыводитьКоды Тогда
Если Колонка = "Артикул" Тогда
ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Артикул;
Иначе
ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Код;
КонецЕсли;
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;

ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);
ОбластьДанных.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар);
ТабДокумент.Присоединить(ОбластьДанных);

ОбластьСуммы.Параметры.Заполнить(ВыборкаСтрокТовары);
ТабДокумент.Присоединить(ОбластьСуммы);
Сумма = Сумма + ВыборкаСтрокТовары.Сумма;
СуммаНДС = СуммаНДС + ВыборкаСтрокТовары.СуммаНДС;

КонецЦикла;

// Вывести Итого
ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("Итого|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("Итого|Сумма");

ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);
ОбластьСуммы.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
ТабДокумент.Присоединить(ОбластьСуммы);

// Вывести ИтогоНДС
ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ИтогоНДС|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");

ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
Если СуммаНДС <> 0 Тогда
ОбластьДанных.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");
ОбластьСуммы.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС);
Иначе
ОбластьДанных.Параметры.НДС = "Без налога (НДС)";
ОбластьСуммы.Параметры.ВсегоНДС = "-";
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);

ТабДокумент.Присоединить(ОбластьСуммы);

// Вывести ИтогоКОплате
ОбластьНомера = Макет.ПолучитьОбласть("ИтогоКОплате|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ИтогоКОплате|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("ИтогоКОплате|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("ИтогоКОплате|Сумма");
ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);
СуммаКОплате = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьСуммы.Параметры.ИтогоКОплате = ОбщегоНазначения.ФорматСумм(СуммаКОплате);
ТабДокумент.Присоединить(ОбластьСуммы);

// Вывести Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего наименований " + ЗапросТовары.Количество()
+ ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
ТабДокумент.Вывести(ОбластьМакета);

// Вывести подписи
Если Тип = "Счет" Тогда

Если Шапка.Получатель.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчета");

Руководители = ОбщегоНазначения.ОтветственныеЛица(Шапка.Руководители, Шапка.Дата, ПодразделениеОтветственныхЛиц);
Руководитель = Руководители.РуководительПредставление;
Бухгалтер = Руководители.ГлавныйБухгалтерПредставление;

ОбластьМакета.Параметры.ФИОРуководителя = Руководитель;
ОбластьМакета.Параметры.ФИОБухгалтера = Бухгалтер;

Иначе
ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчетаПредприниматель");

ФЛ = Шапка.Получатель.ИндивидуальныйПредприниматель;
ДанныеФЛ = РегистрыСведений.ФИОФизЛиц.СрезПоследних(Дата, Новый Структура("ФизЛицо",ФЛ));
Если ДанныеФЛ.Количество() > 0 Тогда
Предприниматель = СокрЛП(ДанныеФЛ[0].Фамилия) + " " + Лев(СокрЛП(ДанныеФЛ[0].Имя),1) + ". " + Лев(СокрЛП(ДанныеФЛ[0].Отчество),1) + ".";
Иначе
Предприниматель = "";
КонецЕсли;

ОбластьМакета.Параметры.ФИОПредпринимателя = Предприниматель;

КонецЕсли;

Иначе
ОбластьМакета = Макет.ПолучитьОбласть("ПодвалЗаказа");
КонецЕсли;
ОбластьМакета.Параметры.Заполнить(Шапка);
ТабДокумент.Вывести(ОбластьМакета);

Возврат ТабДокумент;

КонецФункции // ПечатьСчетаЗаказа()

Синтаксическая ошибка в запросе

Я

  

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»);

  

pnamik

1 — 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 КОНЦОВ

=)

  

hhhh

4 — 01.03.15 — 10:55

два раза КОНЕЦ впендюрил, элементарно же.

  

pnamik

5 — 01.03.15 — 11:15

в общем, так и не получилось. изначально было в отчете наценка в виде

….

ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА

                              | (Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод — ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.Сумма * 100

                              |    КОНЕЦ КАК Наценка,

по аналогии хотел добавить в текст запроса рентабельность (в макет добавил)

ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ  ТОГДА

                              | (Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма)*-1 ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод — ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.СуммаПрод * 100

                              |    КОНЕЦ КАК Рентабельность

выдал ошибку (0).

Думаю (2) прав. чем заменить это выражение, не знаю.

  

ДенисЧ

6 — 01.03.15 — 11:17

второй конец убери. А то как-то неприлично получается…

  

Wobland

7 — 01.03.15 — 11:17

-(Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма). внезапно, правда?

  

pnamik

8 — 01.03.15 — 11:29

предлагаемые варианты (6) и (7) попробовал. та же синтаксическая ошибка. не понимание — это ужас.

  

pnamik

9 — 01.03.15 — 11:31

{Форма.Форма(107)}: Ошибка при вызове метода контекста (Выполнить): {(27, 2)}: Синтаксическая ошибка «ВЫБОР»

<<?>>ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ ТОГДА

        РезультатЗапроса = Запрос.Выполнить();

  

Wobland

10 — 01.03.15 — 11:33

(9) выборы и концы пересчитал?

  

pnamik

11 — 01.03.15 — 11:33

варианты

ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ  ТОГДА

                              | -(Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма) ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод — ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.СуммаПрод * 100

                              |    КОНЕЦ КАК Рентабельность

или

ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ  ТОГДА

                              | -(Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма) ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод — ДвиженияПоПартиям.Сумма) / ДвиженияПоПартиям.СуммаПрод * 100

                              |    КОНЕЦ КАК Рентабельность

или же

ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ  ТОГДА

                              | -(Чеки.СуммаВсего — ДвиженияПоПартиям.Сумма) ИНАЧЕ (ДвиженияПоПартиям.СуммаПрод — ДвиженияПоПартиям.Сумма) КОНЕЦ / ДвиженияПоПартиям.СуммаПрод * 100

                              |    КАК Рентабельность

или же еще в разных вариациях

  

Wobland

12 — 01.03.15 — 11:35

я вижу ошибку в поле, которое заканчивается на 26й строке

  

pnamik

13 — 01.03.15 — 11:37

т.е. в этой строке:

ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ  ТОГДА ?

  

pnamik

14 — 01.03.15 — 11:38

(9) имеется ввиду это?

|ИТОГИ

                              |    СУММА(КоличествоВозврат),

                              |    СУММА(ВыручкаВозврат),

                              |    СУММА(Количество),

                              |    СУММА(Выручка),

                              |    СУММА(Себестоимость),

                              |    СУММА(ВаловаяПрибыль),

                              |    СУММА(Наценка),

                              |    СУММА(Рентабельность)

  

Записьдампа

15 — 01.03.15 — 11:40

Лишний конец уравновешивается выбором! =)

ВЫБОР
    КОГДА ЕСТЬNULL(ДвиженияПоПартиям.Сумма, 0) = 0
    ТОГДА
        0
    ИНАЧЕ 
        ВЫБОР
            КОГДА ДвиженияПоПартиям.КодОперации = &КВ
            ТОГДА
                Чеки.СуммаВсего - ДвиженияПоПартиям.Сумма)*-1 
            ИНАЧЕ 
                (ДвиженияПоПартиям.СуммаПрод - ДвиженияПоПартиям.Сумма) 
        КОНЕЦ / ДвиженияПоПартиям.Сумма * 100

КОНЕЦ КАК Наценка,


ВЫБОР
    КОГДА ЕСТЬNULL(ДвиженияПоПартиям.СуммаПрод, 0) = 0
    ТОГДА
        0
    ИНАЧЕ
        ВЫБОР КОГДА ДвиженияПоПартиям.КодОперации = &КВ
            ТОГДА
                (Чеки.СуммаВсего - ДвиженияПоПартиям.Сумма)*-1 
            ИНАЧЕ 
                (ДвиженияПоПартиям.СуммаПрод - ДвиженияПоПартиям.Сумма) 
        КОНЕЦ / ДвиженияПоПартиям.СуммаПрод * 100

КОНЕЦ КАК Рентабельность

  

Wobland

16 — 01.03.15 — 11:40

(13) сам считай свои строки

  

pnamik

17 — 01.03.15 — 11:49

(15) умница, спасибо. по крайней мере пока ошибок нет. проверю правильно ли считает. Думаю, все будет правильно. т.к. формула правильная. Нужно было аналогии чуть сверху начинать.

  

pnamik

18 — 01.03.15 — 11:57

(16), (6), (4), (2) также спасибо за участие в обсуждении

Изменили запрос, но все равно выводит ошибку уже при отладке:

{Документ.СчетНаОплатуПокупателюНовый.МодульОбъекта(116)}: Ошибка при вызове метода контекста (Выполнить)
ЗапросТовары = Запрос.Выполнить().Выгрузить();
по причине:
Разное количество полей в объединяемых запросах

Функция ПечатьСчетаЗаказа(Тип)
Перем ПодразделениеОтветственныхЛиц;

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
Запрос.Текст ="ВЫБРАТЬ
| ЗаказПокупателя.Номер,
| ЗаказПокупателя.Дата,
| ЗаказПокупателя.ДоговорКонтрагента,
| ЗаказПокупателя.Организация,
| ЗаказПокупателя.Контрагент КАК Покупатель,
| ЗаказПокупателя.Организация КАК Руководители,
| ЗаказПокупателя.Организация КАК Поставщик,
| ЗаказПокупателя.ОрганизацияПолучатель КАК Получатель,
| ЗаказПокупателя.СуммаДокумента,
| ЗаказПокупателя.ВалютаДокумента,
| ЗаказПокупателя.УчитыватьНДС,
| ЗаказПокупателя.СуммаВключаетНДС
|ИЗ
| Документ.СчетНаОплатуПокупателюНовый КАК ЗаказПокупателя
|ГДЕ
| ЗаказПокупателя.Ссылка = &ТекущийДокумент";

Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);

ЧастьЗапросаДляВыбораСодержанияУслуг = ФормированиеПечатныхФорм.ПолучитьЧастьЗапросаДляВыбораСодержанияУслуг("ЗаказПокупателя");

Запрос.Текст =
"ВЫБРАТЬ
| 1 КАК ID,
| ВложенныйЗапрос.Номенклатура.Код КАК Код,
| ВложенныйЗапрос.Номенклатура.Артикул КАК Артикул,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.ЕдиницаИзмерения,
| ВложенныйЗапрос.Цена,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.СуммаНДС,
| ВложенныйЗапрос.СрокПоставки,
| ВложенныйЗапрос.НомерСтроки,
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар
|ИЗ
| (ВЫБРАТЬ
| ЗаказПокупателя.Номенклатура КАК Номенклатура,
| ЗаказПокупателя.Цена КАК Цена,
| СУММА(ЗаказПокупателя.Количество) КАК Количество,
| СУММА(ЗаказПокупателя.Сумма) КАК Сумма,
| СУММА(ЗаказПокупателя.СуммаНДС) КАК СуммаНДС,
| ЗаказПокупателя.СрокПоставки КАК СрокПоставки,
| СУММА(ЗаказПокупателя.НомерСтроки) КАК НомерСтроки,
| ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения
| ИЗ
| Документ.СчетНаОплатуПокупателюНовый.Товары КАК ЗаказПокупателя
| ГДЕ
| ЗаказПокупателя.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| ЗаказПокупателя.Номенклатура,
| ЗаказПокупателя.Цена,
| ЗаказПокупателя.СрокПоставки) КАК ВложенныйЗапрос
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| " + ЧастьЗапросаДляВыбораСодержанияУслуг + ",
| " + ЧастьЗапросаДляВыбораСодержанияУслуг + ",
| ЗаказПокупателя.Номенклатура.Код КАК Код,
| ЗаказПокупателя.Номенклатура.Артикул КАК Артикул,
| ЗаказПокупателя.Количество,
| ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование,
| ЗаказПокупателя.Цена,
| ЗаказПокупателя.Сумма,
| ЗаказПокупателя.СуммаНДС,
| ЗаказПокупателя.НомерСтроки,
| 2
|ИЗ
| Документ.СчетНаОплатуПокупателюНовый.Услуги КАК ЗаказПокупателя
|
|ГДЕ
| ЗаказПокупателя.Ссылка = &ТекущийДокумент
|
|УПОРЯДОЧИТЬ ПО
| ID,
| НомерСтроки";

ЗапросТовары = Запрос.Выполнить().Выгрузить();

Макет = ПолучитьМакет("СчетЗаказ");

// Выводим шапку накладной

СведенияОПолучателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);
Если Тип = "Счет" Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокСчета");
ОбластьМакета.Параметры.Заполнить(Шапка);
ОбластьМакета.Параметры.ИННПолучателя = СведенияОПолучателе.ИНН;
ОбластьМакета.Параметры.КПППолучателя = СведенияОПолучателе.КПП;
Если ТипЗнч(СтруктурнаяЕдиница) = Тип("СправочникСсылка.БанковскиеСчета") Тогда
Банк = ?(НЕ ЗначениеЗаполнено(СтруктурнаяЕдиница.БанкДляРасчетов), СтруктурнаяЕдиница.Банк, СтруктурнаяЕдиница.БанкДляРасчетов);
БИК = Банк.Код;
КоррСчет = Банк.КоррСчет;
ГородБанка = Банк.Город;
НомерСчета = ВернутьРасчетныйСчет(СтруктурнаяЕдиница);

ОбластьМакета.Параметры.БИКБанкаПолучателя = БИК;
ОбластьМакета.Параметры.БанкПолучателя = Банк;
ОбластьМакета.Параметры.БанкПолучателяПредставление = СокрЛП(Банк) + " " + ГородБанка;
ОбластьМакета.Параметры.СчетБанкаПолучателя = КоррСчет;
ОбластьМакета.Параметры.СчетБанкаПолучателяПредставление = КоррСчет;
ОбластьМакета.Параметры.СчетПолучателяПредставление = НомерСчета;
ОбластьМакета.Параметры.СчетПолучателя = НомерСчета;
КонецЕсли;

Если ПустаяСтрока(СтруктурнаяЕдиница.ТекстКорреспондента) Тогда
ТекстКорреспондента = СведенияОПолучателе.НаименованиеДляПечатныхФорм;
Если ЗначениеЗаполнено(СтруктурнаяЕдиница.БанкДляРасчетов) Тогда
ТекстКорреспондента = ТекстКорреспондента + " р/с " + СтруктурнаяЕдиница.НомерСчета
+ " в " + СтруктурнаяЕдиница.Банк + " " + СтруктурнаяЕдиница.Банк.Город;
КонецЕсли;
Иначе
ТекстКорреспондента = СтруктурнаяЕдиница.ТекстКорреспондента;
КонецЕсли;
ОбластьМакета.Параметры.ПредставлениеПолучателя = ТекстКорреспондента;

ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;

ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Счет на оплату");

ТабДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
ОбластьМакета.Параметры.Заполнить(Шапка);
СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата);
ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(
СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,");
ТабДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
ОбластьМакета.Параметры.Заполнить(Шапка);
СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Покупатель, Шапка.Дата);
ОбластьМакета.Параметры.ПредставлениеПокупателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(
СведенияОПокупателе, "НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,");
ТабДокумент.Вывести(ОбластьМакета);

ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ВыводитьКоды = Истина;
Колонка = "Артикул";
ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ВыводитьКоды = Истина;
Колонка = "Код";
Иначе
ВыводитьКоды = Ложь;
КонецЕсли;

ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");

ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ОбластьКодов.Параметры.ИмяКолонкиКодов = Колонка;
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);
ТабДокумент.Присоединить(ОбластьСуммы);

ОбластьКолонкаТовар = Макет.Область("Товар");

Если Не ВыводитьКоды Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
Макет.Область("КолонкаКодов").ШиринаКолонки;
КонецЕсли;

ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("Строка|Сумма");

Сумма = 0;
СуммаНДС = 0;
ВсегоСкидок = 0;
ВсегоБезСкидок = 0;

Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл

ОбластьНомера.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
ТабДокумент.Вывести(ОбластьНомера);

Если ВыводитьКоды Тогда
Если Колонка = "Артикул" Тогда
ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Артикул;
Иначе
ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Код;
КонецЕсли;
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;

ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);
ОбластьДанных.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар);
ТабДокумент.Присоединить(ОбластьДанных);

ОбластьСуммы.Параметры.Заполнить(ВыборкаСтрокТовары);
ТабДокумент.Присоединить(ОбластьСуммы);
Сумма = Сумма + ВыборкаСтрокТовары.Сумма;
СуммаНДС = СуммаНДС + ВыборкаСтрокТовары.СуммаНДС;

КонецЦикла;

// Вывести Итого
ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("Итого|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("Итого|Сумма");

ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);
ОбластьСуммы.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
ТабДокумент.Присоединить(ОбластьСуммы);

// Вывести ИтогоНДС
ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ИтогоНДС|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");

ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
Если СуммаНДС <> 0 Тогда
ОбластьДанных.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");
ОбластьСуммы.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС);
Иначе
ОбластьДанных.Параметры.НДС = "Без налога (НДС)";
ОбластьСуммы.Параметры.ВсегоНДС = "-";
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);

ТабДокумент.Присоединить(ОбластьСуммы);

// Вывести ИтогоКОплате
ОбластьНомера = Макет.ПолучитьОбласть("ИтогоКОплате|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ИтогоКОплате|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("ИтогоКОплате|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("ИтогоКОплате|Сумма");
ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);
СуммаКОплате = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьСуммы.Параметры.ИтогоКОплате = ОбщегоНазначения.ФорматСумм(СуммаКОплате);
ТабДокумент.Присоединить(ОбластьСуммы);

// Вывести Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего наименований " + ЗапросТовары.Количество()
+ ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
ТабДокумент.Вывести(ОбластьМакета);

// Вывести подписи
Если Тип = "Счет" Тогда

Если Шапка.Получатель.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчета");

Руководители = ОбщегоНазначения.ОтветственныеЛица(Шапка.Руководители, Шапка.Дата, ПодразделениеОтветственныхЛиц);
Руководитель = Руководители.РуководительПредставление;
Бухгалтер = Руководители.ГлавныйБухгалтерПредставление;

ОбластьМакета.Параметры.ФИОРуководителя = Руководитель;
ОбластьМакета.Параметры.ФИОБухгалтера = Бухгалтер;

Иначе
ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчетаПредприниматель");

ФЛ = Шапка.Получатель.ИндивидуальныйПредприниматель;
ДанныеФЛ = РегистрыСведений.ФИОФизЛиц.СрезПоследних(Дата, Новый Структура("ФизЛицо",ФЛ));
Если ДанныеФЛ.Количество() > 0 Тогда
Предприниматель = СокрЛП(ДанныеФЛ[0].Фамилия) + " " + Лев(СокрЛП(ДанныеФЛ[0].Имя),1) + ". " + Лев(СокрЛП(ДанныеФЛ[0].Отчество),1) + ".";
Иначе
Предприниматель = "";
КонецЕсли;

ОбластьМакета.Параметры.ФИОПредпринимателя = Предприниматель;

КонецЕсли;

Иначе
ОбластьМакета = Макет.ПолучитьОбласть("ПодвалЗаказа");
КонецЕсли;
ОбластьМакета.Параметры.Заполнить(Шапка);
ТабДокумент.Вывести(ОбластьМакета);

Возврат ТабДокумент;

КонецФункции // ПечатьСчетаЗаказа()

Синтаксическая ошибка ВЫБРАТЬ при выполнении запроса

Синтаксическая ошибка «ВЫБРАТЬ»<?> ВЫБРАТЬ возникает в 1С, когда в тексте запроса идут его блоки в подряд без разделения между собой.

Синтаксическая ошибка ВЫБРАТЬ

Рис.1 Скриншот ошибки «Выбрать»

Например, в случаях:

  • объединения запросов, когда подзапросы должны отделяться служебными словами «ОБЪЕДИНИТЬ» или «ОБЪЕДИНИТЬ ВСЕ«
  • два запроса идущие в подряд для последующей выборки методом ВыбратьПакет(): требуется их разделение » ; «
  • последующая выборка из временной таблицы: также необходимо разделение » ; «
  • неверный синтаксис во вложенном запросе в конструкции ГДЕ Значение В (Выбрать ссылка из Справочники.ПримерСправочника): доступно только сравнение » В ()«, а не «=«, «>» и прочее

Замечу, что такая ошибка возникает при ручной правке текста, поскольку при формировании  конструктором запроса, он вставляет разделители самостоятельно:

Разделение подзапросов

Цифры в начале ошибки (на рисунке — 386,1) —  это номер строки в запросе. При большом тексте  такая информация поможет быстрее локализовать ошибку.

Поведение системы

Выполнение запроса прерывается, но система продолжает работать

Реклама может убедить человека купить некачественный товар, но только один раз.

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • 1с публикация http сервиса ошибка http 404
  • 1с профессионал сколько ошибок
  • 1с прочитать ошибка доступа к файлу
  • 1с произошла ошибка объединения конфигураций
  • 1с проверка заполнения выдавать ошибку отключить программно

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии