- В этой теме 1 ответ, 2 участника, последнее обновление 10 минут назад сделано .
Просмотр 1 ветки ответов
Просмотр 1 ветки ответов
- Для ответа в этой теме необходимо авторизоваться.
Программирование и администрирование в 1С
База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как устранить ошибку в запросе 1С с подзапросом на максимальный период?
синтаксич ошибка выбрать ЗапасыИПотребности.Период = (ВЫБРАТЬ МАКСИМУМ(Период) ИЗ РегистрНакопления.ЗапасыИПотребности КАК ЗапасыИПотребности2)
Ошибка синтаксиса в 1С-запросе возникает из-за того, что в условии нельзя напрямую использовать подзапрос в виде скобок с выборкой. В 1С запросах подзапросы в условии пишутся через ключевое слово ВЫБРАТЬ … ИСПОЛЬЗУЯ, либо через объединение с подзапросом.
Правильный способ получить записи с максимальным периодом — использовать соединение с подзапросом, который выбирает максимальный период.
Вот пример, как это сделать:
|ВЫБРАТЬ
| ЗапасыИПотребности.Номенклатура КАК Номенклатура,
| ЗапасыИПотребности.Характеристика КАК Характеристика,
| ЗапасыИПотребности.Склад КАК Склад,
| ЗапасыИПотребности.ВНаличии КАК ВНаличии,
| ЗапасыИПотребности.Заказано КАК Заказано,
| (ЗапасыИПотребности.ВНаличии — ЗапасыИПотребности.Заказано) КАК Доступность
|ИЗ
| РегистрНакопления.ЗапасыИПотребности КАК ЗапасыИПотребности
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| МАКСИМУМ(Период) КАК МаксПериод
| ИЗ
| РегистрНакопления.ЗапасыИПотребности) КАК МаксПериодТаб
| ПО ЗапасыИПотребности.Период = МаксПериодТаб.МаксПериод
|ГДЕ
| ЗапасыИПотребности.ВНаличии <> 0
| ИЛИ ЗапасыИПотребности.Заказано <> 0
—
Так запрос выберет записи только за максимальный период (текущий момент).
—
Если нужно, можно параметризовать дату, но для среза последних так обычно делают.
—
Если хотите, могу помочь с готовым кодом для отчета.