Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 20:39

В чем ошибка в структуре запроса?

Автор kulkrise, 04 ноя 2013, 21:57

0 Пользователей и 1 гость просматривают эту тему.

kulkrise

1С 8.2 БП 2.0 Обычное приложение[/size][/font]

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

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


при открытии обработки и нажатии кнопки Сформировать выдает синтаксическую ошибку. В чем допущена ошибка? Не могу понять, вроде все как бы правильно

MuI_I_Ika

У вас между выбираемыми параметрами нет запятых.

kulkrise

Ага, точно. Спасибо!
Добавлено: 04 ноя 2013, 22:23


{(17, 1)}: Синтаксическая ошибка "ИЗ"
<<?>>ИЗ Документ.РеализацияТоваровУслуг,

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

Добавлено: 04 ноя 2013, 22:28


запятушку после фразы "ИЗ Документ.РеализацияТоваровУслуг,"
я убрала ошибка все равно осталась

MuI_I_Ika

А зачем запятая после срока действия?


Запятые в языке запросов так же как и в человеческом языке разделяют перечисление сходных конструкций.

kulkrise

Спасибо, исправляю.
Добавлено: 04 ноя 2013, 22:45


Так это исправлено, судя по тому, что ни на что не ругается из выборки запроса - уже хорошо, однако теперь ругается на следующее (при этом, когда выборка производилась из справочника контрагентов не запросом, а выборкой данных, в обработке этой строки проблем не наблюдалось):
Если НЕ РезультатЗапроса.ПометкаУдаления Тогда

Пока РезультатЗапроса.Следующий() Цикл
    // Исключение объектов, помеченных на удаление
    Если НЕ РезультатЗапроса.ПометкаУдаления Тогда
        // Тело цикла
    КонецЕсли;
КонецЦикла;

MuI_I_Ika

Я тоже не нашел у вас пометки удаления в запросе.

kulkrise

т.е. ошибка в том, что возможную пометку удаления нужно указать в запросе?

Просто может быть так, что например, док.Реализация или док.Поступление создавался ранее,
затом док.Реализация или док.Поступление или самого Контрагента пометили на удаление
и их подбирать уже не нужно.
Надо подумать как это можно реализовать.

MuI_I_Ika

Для этого в языке запросов существует ключевое слово ГДЕ

Оно позволяет отобрать выбираемые данные по нужным параметрам.

kulkrise

да, я таким образом исключила
|ИЗ Документ.РеализацияТоваровУслуг
|ГДЕ Контрагент.ПометкаУдаления = ЛОЖЬ,
|Документ.РеализацияТоваровУслуг.ПометкаУдаления = ЛОЖЬ

и
    |ИЗ Документ.ПоступлениеТоваровУслуг
|ГДЕ Контрагент.ПометкаУдаления = ЛОЖЬ,
|Документ.ПоступлениеТоваровУслуг.ПометкаУдаления = ЛОЖЬ";

Вроде как работает.


Добавлено: 04 ноя 2013, 23:15


не долго все это работало, ругаеться благим матом

{Форма.Форма.Форма(58)}: Ошибка при вызове метода контекста (Выполнить)
    РезультатЗапроса = МойЗапрос.Выполнить().Выбрать();
по причине:
{(19, 38)}: Синтаксическая ошибка ","
ГДЕ Контрагент.ПометкаУдаления = ЛОЖЬ<<?>>,

Добавлено: 04 ноя 2013, 23:24


Изменила вместо запятой поставила ИЛИ, пока работает
Код: [Выделить]
   |ИЗ Документ.РеализацияТоваровУслуг
   |ГДЕ Контрагент.ПометкаУдаления = ЛОЖЬ ИЛИ Документ.РеализацияТоваровУслуг.ПометкаУдаления = ЛОЖЬ
и
Код: [Выделить]
    |ИЗ Документ.ПоступлениеТоваровУслуг
   |ГДЕ Контрагент.ПометкаУдаления = ЛОЖЬ ИЛИ Документ.ПоступлениеТоваровУслуг.ПометкаУдаления = ЛОЖЬ";

но ругается на следующее:
{Форма.Форма.Форма(64)}: Преобразование значения к типу Число не может быть выполнено
   ОбластьШапки.Параметры.Заголовок                = "Карточка контрагента " + РезультатЗапроса.Наименование + " № " + Число(РезультатЗапроса.Код);
Я понимаю что возможно код который я получаю это некий текст, тогда логично что он ругается, и хотя он все равно формирует форму, но как это исправить?

MuI_I_Ika

ОбластьШапки.Параметры.Заголовок                = "Карточка контрагента " + РезультатЗапроса.Наименование + " № " + Строка(РезультатЗапроса.Код);

Похожие темы (5)

Рейтинг@Mail.ru

Поиск