Автор: Мичман Харитонов 05.06.19, 14:13
Доброго дня!
Конфигурация самописная, версия платформы 8.3.7.1860.
Из старого работающего отчета был взят текст запроса и перенесен в новый отчет.
текст запросаЗапрос = Новый Запрос;
Запрос.УстановитьПараметр("Пересчитать",Пересчитать);
Запрос.УстановитьПараметр("ДатаНачала",ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания",ДатаОкончания);
Запрос.УстановитьПараметр("ВалютаОтчета",ВалютаОтчета);
//Отборы Менеджер, Фирма, Номенклатура
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТоварыОтгруженные.Фирма,
| ТоварыОтгруженные.Контрагент,
| ТоварыОтгруженные.Договор,
| ТоварыОтгруженные.ДокументПродажи,
| ТоварыОтгруженные.ДокументПоставки,
| ТоварыОтгруженные.ДокументПоставки.Станок КАК Оборудование,
| ТоварыОтгруженные.ВалютаРасчетов КАК Валюта,
| ТоварыОтгруженные.Номенклатура,
| ЕдиницыИзмерения.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТоварыОтгруженные.КоличествоПриход КАК Количество,
| ТоварыОтгруженные.СуммаПриход КАК СуммаПриход,
| ВЫБОР
| КОГДА &Пересчитать
| ТОГДА ТоварыОтгруженные.СуммаПриход * КурсыВалютСрезПоследних.Кратность / КурсыВалютСрезПоследних.Курс
| ИНАЧЕ ТоварыОтгруженные.СуммаПриход
| КОНЕЦ КАК Сумма,
| ВЫБОР
| КОГДА &Пересчитать
| ТОГДА ТоварыОтгруженные.СебестоимостьПриход * КурсыВалютСрезПоследних.Кратность / КурсыВалютСрезПоследних.Курс
| ИНАЧЕ ТоварыОтгруженные.СебестоимостьПриход
| КОНЕЦ КАК Себестоимость,
| ВЫБОР
| КОГДА ТоварыОтгруженные.КоличествоПриход = 0
| ТОГДА 0
| ИНАЧЕ ВЫБОР
| КОГДА &Пересчитать
| ТОГДА ТоварыОтгруженные.СуммаПриход / ТоварыОтгруженные.КоличествоПриход * КурсыВалютСрезПоследних.Кратность / КурсыВалютСрезПоследних.Курс
| ИНАЧЕ ТоварыОтгруженные.СуммаПриход / ТоварыОтгруженные.КоличествоПриход
| КОНЕЦ
| КОНЕЦ КАК Цена,
| ТоварыОтгруженные.ДокументПродажи.Менеджер КАК Менеджер,
| ТоварыОтгруженные.Номенклатура.УчЕдиница,
| ТоварыОтгруженные.КоличествоПриход * ТоварыОтгруженные.Номенклатура.УчКоэффициент КАК УчКоличество,
| ТоварыОтгруженные.Номенклатура.УчКоэффициент,
| ВЫБОР
| КОГДА ТоварыОтгруженные.КоличествоПриход * ТоварыОтгруженные.Номенклатура.УчКоэффициент = 0
| ТОГДА 0
| ИНАЧЕ ТоварыОтгруженные.СуммаПриход / (ТоварыОтгруженные.КоличествоПриход * ТоварыОтгруженные.Номенклатура.УчКоэффициент)
| КОНЕЦ КАК УчЦена,
| ВЫБОР
| КОГДА &Пересчитать
| ТОГДА (ТоварыОтгруженные.СуммаПриход - ТоварыОтгруженные.СебестоимостьПриход) * КурсыВалютСрезПоследних.Кратность / КурсыВалютСрезПоследних.Курс
| ИНАЧЕ ТоварыОтгруженные.СуммаПриход - ТоварыОтгруженные.СебестоимостьПриход
| КОНЕЦ КАК Наценка,
| ТоварыОтгруженные.Регистратор,
| ЕдиницыИзмерения.Вес * ТоварыОтгруженные.КоличествоПриход КАК Тонн,
| 0 КАК Рентабельность,
| ТоварыОтгруженные.Период,
| НАЧАЛОПЕРИОДА(ТоварыОтгруженные.Период, ДЕНЬ) КАК ПериодДень,
| НАЧАЛОПЕРИОДА(ТоварыОтгруженные.Период, НЕДЕЛЯ) КАК ПериодНеделя,
| НАЧАЛОПЕРИОДА(ТоварыОтгруженные.Период, ДЕКАДА) КАК ПериодДекада,
| НАЧАЛОПЕРИОДА(ТоварыОтгруженные.Период, МЕСЯЦ) КАК ПериодМесяц,
| НАЧАЛОПЕРИОДА(ТоварыОтгруженные.Период, КВАРТАЛ) КАК ПериодКвартал,
| НАЧАЛОПЕРИОДА(ТоварыОтгруженные.Период, ПОЛУГОДИЕ) КАК ПериодПолугодие,
| НАЧАЛОПЕРИОДА(ТоварыОтгруженные.Период, ГОД) КАК ПериодГод,
| ТоварыОтгруженные.СуммаРасчетовПриход КАК СуммаВВалютеРасчетов,
| ТоварыОтгруженные.Характеристика,
| ТоварыОтгруженные.СуммаРасчетовРасход КАК СуммаОплВал,
| ВЫБОР
| КОГДА &Пересчитать
| ТОГДА ТоварыОтгруженные.СуммаРасход * КурсыВалютСрезПоследних.Кратность / КурсыВалютСрезПоследних.Курс
| ИНАЧЕ ТоварыОтгруженные.СуммаРасход
| КОНЕЦ КАК СуммаОпл,
| ВЫБОР
| КОГДА &Пересчитать
| ТОГДА ТоварыОтгруженные.СебестоимостьРасход * КурсыВалютСрезПоследних.Кратность / КурсыВалютСрезПоследних.Курс
| ИНАЧЕ ТоварыОтгруженные.СебестоимостьРасход
| КОНЕЦ КАК СебестоимостьОпл,
| ВЫБОР
| КОГДА &Пересчитать
| ТОГДА (ТоварыОтгруженные.СуммаРасход - ТоварыОтгруженные.СебестоимостьРасход) * КурсыВалютСрезПоследних.Кратность / КурсыВалютСрезПоследних.Курс
| ИНАЧЕ ТоварыОтгруженные.СуммаРасход - ТоварыОтгруженные.СебестоимостьРасход
| КОНЕЦ КАК НаценкаОпл,
| 0 КАК РентабельностьОпл,
| ВЫБОР
| КОГДА &Пересчитать
| ТОГДА (ТоварыОтгруженные.СебестоимостьПриход - ТоварыОтгруженные.СуммаТ1Приход - ТоварыОтгруженные.СуммаТ2Приход) * КурсыВалютСрезПоследних.Кратность / КурсыВалютСрезПоследних.Курс
| ИНАЧЕ ТоварыОтгруженные.СебестоимостьПриход - ТоварыОтгруженные.СуммаТ1Приход - ТоварыОтгруженные.СуммаТ2Приход
| КОНЕЦ КАК СебестоимостьТоваров,
| ВЫБОР
| КОГДА &Пересчитать
| ТОГДА ТоварыОтгруженные.НаценкаПродукцииПриход * КурсыВалютСрезПоследних.Кратность / КурсыВалютСрезПоследних.Курс
| ИНАЧЕ ТоварыОтгруженные.НаценкаПродукцииПриход
| КОНЕЦ КАК НаценкаПродукции,
| ВЫБОР
| КОГДА &Пересчитать
| ТОГДА (ТоварыОтгруженные.СебестоимостьРасход - ТоварыОтгруженные.СуммаТ1Расход - ТоварыОтгруженные.СуммаТ2Расход) * КурсыВалютСрезПоследних.Кратность / КурсыВалютСрезПоследних.Курс
| ИНАЧЕ ТоварыОтгруженные.СебестоимостьРасход - ТоварыОтгруженные.СуммаТ1Расход - ТоварыОтгруженные.СуммаТ2Расход
| КОНЕЦ КАК СебестоимостьТоваровОпл,
| ТоварыОтгруженные.СуммаТ1Приход КАК СуммаТ1Приход,
| ВЫБОР
| КОГДА &Пересчитать
| ТОГДА ТоварыОтгруженные.СуммаТ1Приход * КурсыВалютСрезПоследних.Кратность / КурсыВалютСрезПоследних.Курс
| ИНАЧЕ ТоварыОтгруженные.СуммаТ1Приход
| КОНЕЦ КАК СуммаТранспорта,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТоварыОтгруженные.СуммаПриход, 0) = 0
| ТОГДА 0
| ИНАЧЕ ТоварыОтгруженные.СуммаТ1Приход / ТоварыОтгруженные.СуммаПриход * 100
| КОНЕЦ КАК ПроцентТранспорта,
| ВалютаБалансаСрезПоследних.Валюта КАК ВалютаБаланса
|ИЗ
| РегистрНакопления.ТоварыОтгруженные.Обороты(НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ), КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ), Регистратор, ) КАК ТоварыОтгруженные
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ЕдиницыИзмерения КАК ЕдиницыИзмерения
| ПО ТоварыОтгруженные.Номенклатура = ЕдиницыИзмерения.Ссылка
| И ТоварыОтгруженные.Номенклатура.БазЕдиница.Ссылка = ЕдиницыИзмерения.ЕдиницаИзмерения.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВалютаБаланса.СрезПоследних(КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ), ) КАК ВалютаБалансаСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ), ВалютаБаланса = &ВалютаОтчета) КАК КурсыВалютСрезПоследних
| ПО ВалютаБалансаСрезПоследних.Валюта = КурсыВалютСрезПоследних.Валюта
| ПО ТоварыОтгруженные.Фирма = ВалютаБалансаСрезПоследних.Фирма
|ИТОГИ
| СУММА(Количество),
| СУММА(Сумма),
| СУММА(Себестоимость),
| СУММА(УчКоличество),
| СУММА(Наценка),
| СУММА(Тонн),
| ВЫБОР
| КОГДА СУММА(Себестоимость) > 0
| ТОГДА СУММА(Наценка) / СУММА(Себестоимость) * 100
| ИНАЧЕ 0
| КОНЕЦ КАК Рентабельность,
| СУММА(СуммаВВалютеРасчетов),
| СУММА(СуммаОплВал),
| СУММА(СуммаОпл),
| СУММА(СебестоимостьОпл),
| СУММА(НаценкаОпл),
| ВЫБОР
| КОГДА СУММА(СебестоимостьОпл) > 0
| ТОГДА СУММА(НаценкаОпл) / СУММА(СебестоимостьОпл) * 100
| ИНАЧЕ 0
| КОНЕЦ КАК РентабельностьОпл,
| СУММА(СебестоимостьТоваров),
| СУММА(НаценкаПродукции),
| СУММА(СебестоимостьТоваровОпл),
| СУММА(СуммаТранспорта),
| ВЫБОР
| КОГДА СУММА(ЕСТЬNULL(ТоварыОтгруженные.СуммаПриход, 0)) = 0
| ТОГДА 0
| ИНАЧЕ СУММА(ТоварыОтгруженные.СуммаТ1Приход) / СУММА(ТоварыОтгруженные.СуммаПриход) * 100
| КОНЕЦ КАК ПроцентТранспорта
|ПО
| ОБЩИЕ
|{ИТОГИ ПО
| Фирма.*,
| Контрагент.*,
| Договор.*,
| ДокументПродажи.*,
| Валюта.*,
| Номенклатура.*,
| Регистратор.*,
| Менеджер.*,
| Оборудование.*,
| ПериодДень,
| ПериодНеделя,
| ПериодДекада,
| ПериодМесяц,
| ПериодКвартал,
| ПериодПолугодие,
| ПериодГод,
| Характеристика.*}";
Результат = Запрос.Выполнить().Выгрузить();
Результат.ВыбратьСтроку();
При запуске выбрасывает ошибку "{(1, 1)}: Ожидается выражение "ВЫБРАТЬ""
Старый отчет использовал ПостроительОтчета, сейчас возникла необходимость выгрузить данные в таблицу значений и дополнить.
Все параметры в тексте запроса поиском по "&" выловил... не пойму, где ошибка.
Автор: pablo 05.06.19, 14:28
(1.1) это координаты ошибки разбора внутри текста запроса. Сходу могу предложить убрать перенос строки
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
Автор: Мичман Харитонов 05.06.19, 14:31
Убрал.
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТоварыОтгруженные.Фирма,
| ТоварыОтгруженные.Контрагент,
| ТоварыОтгруженные.Договор,
........
То же самое
Автор: sava1 05.06.19, 14:46
Цитата(Мичман Харитонов @ 05.06.19, 15:13)
ТекстЗапроса =
менять на Запрос.ТексЗапроса =
Автор: Petre 05.06.19, 14:56
sava1 @ Today, 14:46
,
Лучше на "Запрос.Текст ="
Автор: Мичман Харитонов 05.06.19, 15:03
Получилось!
Да... похоже. я пошел в 1С-ники только из-за того, что когда-то мне не хватило лопаты
Огромное спасибо.
Автор: sava1 05.06.19, 16:07
Цитата(Petre @ 05.06.19, 15:56)
Лучше на "Запрос.Текст ="
Да, походу лучше.....
Автор: Vladal 10.06.19, 16:30
Цитата(pablo @ 05.06.19, 15:28)
Сходу могу предложить убрать перенос строки
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
нет
не влияет
Цитата
Цитата(sava1 @ 05.06.19, 15:46)
менять на Запрос.ТексЗапроса =
Цитата(Petre @ 05.06.19, 15:56)
Лучше на "Запрос.Текст ="
Цитата(Мичман Харитонов @ 05.06.19, 16:03)
Получилось!
Да... похоже. я пошел в 1С-ники только из-за того, что когда-то мне не хватило лопаты
Огромное спасибо.
Цитата(sava1 @ 05.06.19, 17:07)
Лучше на "Запрос.Текст ="
Да, походу лучше.....
Создали объект Запрос.
Переменной ТекстЗапроса присвоили текст запроса.
Выполнили запрос - а он с пустым текстом не выполняется.
Где ошибка?
В передаче свойству запроса Текст значения переменой ТекстЗапроса.
В общем, отсутствовала строка
Запрос.Текст = ТекстЗапроса;Делов-то...
Напомнило басню Крылова "Квартет" )))
Автор: Spacer 08.07.21, 11:13
Цитата(pablo @ 05.06.19, 15:28)
(1.1) это координаты ошибки разбора внутри текста запроса. Сходу могу предложить убрать перенос строки
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
Ничего там не надо убирать. Там все гораздо проще. Перед выполнение запроса автор забыл вставить строчку:
Запрос.Текст = ТекстЗапроса;