Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: При переносе текста запроса в другой отчет выдает ошибку
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Мичман Харитонов
Доброго дня!
Конфигурация самописная, версия платформы 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
(1.1) это координаты ошибки разбора внутри текста запроса. Сходу могу предложить убрать перенос строки
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
Мичман Харитонов
Убрал.
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    ТоварыОтгруженные.Фирма,
    |    ТоварыОтгруженные.Контрагент,
    |    ТоварыОтгруженные.Договор,
........

То же самое
sava1
Цитата(Мичман Харитонов @ 05.06.19, 15:13) необходимо зарегистрироваться для просмотра ссылки
ТекстЗапроса =


менять на Запрос.ТексЗапроса =
Petre
sava1 @ Today, 14:46 необходимо зарегистрироваться для просмотра ссылки ,
Лучше на "Запрос.Текст ="
Мичман Харитонов
Получилось!
Да... похоже. я пошел в 1С-ники только из-за того, что когда-то мне не хватило лопаты

Огромное спасибо.
sava1
Цитата(Petre @ 05.06.19, 15:56) необходимо зарегистрироваться для просмотра ссылки
Лучше на "Запрос.Текст ="


Да, походу лучше.....
Vladal
Цитата(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
Цитата(pablo @ 05.06.19, 15:28) необходимо зарегистрироваться для просмотра ссылки
(1.1) это координаты ошибки разбора внутри текста запроса. Сходу могу предложить убрать перенос строки
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ

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