База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как убрать ошибку «Ожидается выражение» при задании текста запроса в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 2 дня назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
13 мая 2026 в 13:36 #37132
вот что написано в модуле , больше ничего нет : Процедура Заполнить(Команда)
Если НЕ ЗначениеЗаполнено(ЭтотОбъект.ОтчетГод) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(«Не указан год отчета»);
Возврат;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ЭтотОбъект.Период) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(«Не указан период»);
Возврат;
КонецЕсли;
ЭтотОбъект.ТабличнаяЧасть.Очистить();
Запрос = Новый Запрос;
Запрос.Текст =
|ВЫБРАТЬ
| ПодтверждениеНДС.Ссылка КАК Документ,
| ПодтверждениеНДС.Дата КАК Дата,
| ПодтверждениеНДС.Ответственный КАК Ответственный,
| ПодтверждениеНДС.Сумма КАК Сумма
|ИЗ
| Документ.ПодтверждениеНулевойСтавкиНДС КАК ПодтверждениеНДС
|ГДЕ
| ГОД(ПодтверждениеНДС.Дата) = &Год
| И ПодтверждениеНДС.Дата МЕЖДУ &ДатаНач И &ДатаКонец
|УПОРЯДОЧИТЬ ПО
| ПодтверждениеНДС.Дата Убыв
;
Запрос.УстановитьПараметр(«Год», ЭтотОбъект.ОтчетГод);
Запрос.УстановитьПараметр(«ДатаНач», НачалоДня(ЭтотОбъект.Период));
Запрос.УстановитьПараметр(«ДатаКонец», КонецДня(ЭтотОбъект.Период));
РезультатЗапроса = Запрос.Выполнить();
ТаблицаДанных = РезультатЗапроса.Выгрузить();
Для Каждого Строка Из ТаблицаДанных Цикл
НоваяСтрока = ЭтотОбъект.ТабличнаяЧасть.Добавить();
НоваяСтрока.Документ = Строка.Документ;
НоваяСтрока.Дата = Строка.Дата;
НоваяСтрока.Ответственный = Строка.Ответственный;
НоваяСтрока.Сумма = Строка.Сумма;
КонецЦикла;
ЭтотОбъект.Записать();
КонецПроцедуры
-
13 мая 2026 в 13:37 #37133
Проблема в том, что в 1С при присвоении многострочной строки с запросом через
Запрос.Текст =нужно, чтобы символ|стоял строго в начале строки, без отступов.В твоём коде, судя по отступам, перед
|есть пробелы или табуляция — это вызывает ошибку «Ожидается выражение».Правильно должно быть так (без отступов перед
|):1С (Код)1234567891011121314Запрос.Текст =|ВЫБРАТЬ| ПодтверждениеНДС.Ссылка КАК Документ,| ПодтверждениеНДС.Дата КАК Дата,| ПодтверждениеНДС.Ответственный КАК Ответственный,| ПодтверждениеНДС.Сумма КАК Сумма|ИЗ| Документ.ПодтверждениеНулевойСтавкиНДС КАК ПодтверждениеНДС|ГДЕ| ГОД(ПодтверждениеНДС.Дата) = &Год| И ПодтверждениеНДС.Дата МЕЖДУ &ДатаНач И &ДатаКонец|УПОРЯДОЧИТЬ ПО| ПодтверждениеНДС.Дата Убыв;То есть символ
|должен быть первым символом в строке, без пробелов слева.—
### Что сделать:
1. Убери все пробелы и табуляции перед символом
|в строках запроса.
2. Проверь, чтобы послеЗапрос.Текст =был перенос строки, а не кавычки.
3. В конце запроса поставь точку с запятой.—
### Пример исправленного кода процедуры:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849Процедура Заполнить(Команда)Если НЕ ЗначениеЗаполнено(ЭтотОбъект.ОтчетГод) ТогдаОбщегоНазначенияКлиент.СообщитьПользователю("Не указан год отчета");Возврат;КонецЕсли;Если НЕ ЗначениеЗаполнено(ЭтотОбъект.Период) ТогдаОбщегоНазначенияКлиент.СообщитьПользователю("Не указан период");Возврат;КонецЕсли;ЭтотОбъект.ТабличнаяЧасть.Очистить();Запрос = Новый Запрос;Запрос.Текст =|ВЫБРАТЬ| ПодтверждениеНДС.Ссылка КАК Документ,| ПодтверждениеНДС.Дата КАК Дата,| ПодтверждениеНДС.Ответственный КАК Ответственный,| ПодтверждениеНДС.Сумма КАК Сумма|ИЗ| Документ.ПодтверждениеНулевойСтавкиНДС КАК ПодтверждениеНДС|ГДЕ| ГОД(ПодтверждениеНДС.Дата) = &Год| И ПодтверждениеНДС.Дата МЕЖДУ &ДатаНач И &ДатаКонец|УПОРЯДОЧИТЬ ПО| ПодтверждениеНДС.Дата Убыв;Запрос.УстановитьПараметр("Год", ЭтотОбъект.ОтчетГод);Запрос.УстановитьПараметр("ДатаНач", НачалоДня(ЭтотОбъект.Период));Запрос.УстановитьПараметр("ДатаКонец", КонецДня(ЭтотОбъект.Период));РезультатЗапроса = Запрос.Выполнить();ТаблицаДанных = РезультатЗапроса.Выгрузить();Для Каждого Строка Из ТаблицаДанных ЦиклНоваяСтрока = ЭтотОбъект.ТабличнаяЧасть.Добавить();НоваяСтрока.Документ = Строка.Документ;НоваяСтрока.Дата = Строка.Дата;НоваяСтрока.Ответственный = Строка.Ответственный;НоваяСтрока.Сумма = Строка.Сумма;КонецЦикла;ЭтотОбъект.Записать();КонецПроцедуры—
Если используешь обычный редактор, попробуй удалить все отступы перед
|и поставить их заново, чтобы точно не было пробелов.—
Если после этого ошибка останется — пришли скриншот или точный текст с отступами, посмотрю.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.