Версия для печати темы (https://pro1c.org.ua/index.php?s=e43cd03bc560f2d774e0c2d2780d37c1&showtopic=52378)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ При переносе текста запроса в другой отчет выдает ошибку

Автор: Мичман Харитонов 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) это координаты ошибки разбора внутри текста запроса. Сходу могу предложить убрать перенос строки
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ

Ничего там не надо убирать. Там все гораздо проще. Перед выполнение запроса автор забыл вставить строчку:
Запрос.Текст = ТекстЗапроса;

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua