igoza
22.08.13
✎
21:38
Если Не обЗначениеНеЗаполнено(МестоХранения) Тогда
Запрос.Текст =
«ВЫБРАТЬ
| ОстаткиКомлектующихОстатки.Помещение,
| ОстаткиКомлектующихОстатки.МестоХранения,
| ОстаткиКомлектующихОстатки.Комплектующая,
| ОстаткиКомлектующихОстатки.ШтрихКод,
| ОстаткиКомлектующихОстатки.КоличествоОстаток,
| ОстаткиКомлектующихОстатки.СуммаОстаток
|ИЗ
| РегистрНакопления.ОстаткиКомлектующих.Остатки КАК ОстаткиКомлектующихОстатки
|ГДЕ
| «+ПерУсловие+»
|»;
Если МестоХранения.Метаданные().Имя = «Помещения» Тогда
ПерУсловие = «ОстаткиКомлектующихОстатки.Помещение = &МестоХранения»;
КонецЕсли;
Если МестоХранения.Метаданные().Имя = «РабочиеМеста» Тогда
ПерУсловие = «ОстаткиКомлектующихОстатки.МестоХранения = &МестоХранения»;
КонецЕсли;
КонецЕсли;
Если обЗначениеНеЗаполнено(МестоХранения) Тогда
Запрос.Текст =
«ВЫБРАТЬ
| ОстаткиКомлектующихОстатки.Помещение,
| ОстаткиКомлектующихОстатки.МестоХранения,
| ОстаткиКомлектующихОстатки.Комплектующая,
| ОстаткиКомлектующихОстатки.ШтрихКод,
| ОстаткиКомлектующихОстатки.КоличествоОстаток,
| ОстаткиКомлектующихОстатки.СуммаОстаток
|ИЗ
| РегистрНакопления.ОстаткиКомлектующих.Остатки КАК ОстаткиКомлектующихОстатки
|»;
КонецЕсли;
Запрос.УстановитьПараметр(«МестоХранения», МестоХранения);
Результат = Запрос.Выполнить(); // ругается однако!
igoza
22.08.13
✎
21:40
инвалид в 1С, где тут ошибка, а то опять стёб один бдудет)))
Поросенок Петр
22.08.13
✎
21:40
Надо было написать не «// ругается однако!», а «// программа не работает :(«.
было бы понятнее.
Hans
22.08.13
✎
21:41
какая ошибка ?
spectre1978
22.08.13
✎
21:41
а каков текст ошибки?
mehfk
22.08.13
✎
21:42
Гед ошибка? Нет ошибки. Все хорошо. Тебе показалось. Закрой конфигуратор и позови кого-нибудь из взрослых.
mehfk
22.08.13
✎
21:42
(5) fix: Гед -> Где
igoza
22.08.13
✎
21:43
{Отчет.ОстаткиНаМестахХранения.Форма.ФормаОтчета.Форма(49)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
по причине:
{(12, 1)}: Синтаксическая ошибка
spectre1978
22.08.13
✎
21:44
ну и при чем тут //?
Ошибка-то времени выполнения.
Накосячил в запросе.
Отладь в консоли, потом запускай в коде.
mehfk
22.08.13
✎
21:44
(7)
сделай перед запрос.выполнить();
сообщить(Запрос.Текст);
и скопипасть сюда.
Поросенок Петр
22.08.13
✎
21:44
1) Идиотское условие Если — Если. «Иначе» отменили?
2) обЗначениеЗаполнено() — кто-то ещё использует?
3) Параметры не в вирт таблице, а в «ГДЕ».
4)… можно продолжить
vde69
модератор
22.08.13
✎
21:45
Если Не обЗначениеНеЗаполнено(МестоХранения) Тогда
Если МестоХранения.Метаданные().Имя = «Помещения» Тогда
ПерУсловие = «ОстаткиКомлектующихОстатки.Помещение = &МестоХранения»;
КонецЕсли;
Если МестоХранения.Метаданные().Имя = «РабочиеМеста» Тогда
ПерУсловие = «ОстаткиКомлектующихОстатки.МестоХранения = &МестоХранения»;
КонецЕсли;
Запрос.Текст =
«ВЫБРАТЬ
| ОстаткиКомлектующихОстатки.Помещение,
| ОстаткиКомлектующихОстатки.МестоХранения,
| ОстаткиКомлектующихОстатки.Комплектующая,
| ОстаткиКомлектующихОстатки.ШтрихКод,
| ОстаткиКомлектующихОстатки.КоличествоОстаток,
| ОстаткиКомлектующихОстатки.СуммаОстаток
|ИЗ
| РегистрНакопления.ОстаткиКомлектующих.Остатки КАК ОстаткиКомлектующихОстатки
|ГДЕ ИСТИНА И
| «+ПерУсловие+»
|»;
КонецЕсли;
Если обЗначениеНеЗаполнено(МестоХранения) Тогда
Запрос.Текст =
«ВЫБРАТЬ
| ОстаткиКомлектующихОстатки.Помещение,
| ОстаткиКомлектующихОстатки.МестоХранения,
| ОстаткиКомлектующихОстатки.Комплектующая,
| ОстаткиКомлектующихОстатки.ШтрихКод,
| ОстаткиКомлектующихОстатки.КоличествоОстаток,
| ОстаткиКомлектующихОстатки.СуммаОстаток
|ИЗ
| РегистрНакопления.ОстаткиКомлектующих.Остатки КАК ОстаткиКомлектующихОстатки
|»;
КонецЕсли;
Запрос.УстановитьПараметр(«МестоХранения», МестоХранения);
Результат = Запрос.Выполнить(); // ругается однако!
mehfk
22.08.13
✎
21:47
(11) Или
ПерУсловие = «»;
в самом начале
vde69
модератор
22.08.13
✎
21:47
а вообще если стаж у тебя годик есть и не видишь таких простых вещей, может профессию поменять?
такие вещи простительны новичкам до 1 месяца…
vde69
модератор
22.08.13
✎
21:48
(12) и чего?
пустое условие «ГДЕ» выдает ошибку…
igoza
22.08.13
✎
21:49
(12) 3 мес стаж с нул9
Fragster
модератор
22.08.13
✎
21:49
вот нет бы построителем пользоваться
mehfk
22.08.13
✎
21:49
(13) Может он год фуры с коробками разгружал.
vde69
модератор
22.08.13
✎
21:50
(15) ну тогда еще простительно
короче у тебя запрос с пустым условием кривой
mehfk
22.08.13
✎
21:51
(14)
ГДЕ ИСТИНА И
| «+ПерУсловие+»
при пустом ПерУсловие тоже выдаст ошибку
vde69
модератор
22.08.13
✎
21:53
(19) согласен ну я направление дал
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) — это номер строки в запросе. При большом тексте такая информация поможет быстрее локализовать ошибку.
Поведение системы
Выполнение запроса прерывается, но система продолжает работать
Реклама может убедить человека купить некачественный товар, но только один раз.