База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибочный запрос в 1С? › Ответ в теме: Как исправить ошибочный запрос в 1С?
Вот исправленный и структурированный вариант вашего запроса с корректным синтаксисом 1С:
|ТекстЗапроса =
|»
|ВЫБРАТЬ
| РеестрДокументов.Ссылка КАК Ссылка,
| РеестрДокументов.НомерДокументаИБ КАК Номер,
| РеестрДокументов.ДатаДокументаИБ КАК Дата,
| РеестрДокументов.Статус КАК Статус,
| РеестрДокументов.Проведен КАК Проведен,
| РеестрДокументов.ПометкаУдаления КАК ПометкаУдаления,
| РеестрДокументов.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| РеестрДокументов.Партнер КАК Партнер,
| ВЫРАЗИТЬ(РеестрДокументов.Контрагент.Ключ КАК Справочник.Контрагенты) КАК Контрагент,
| РеестрДокументов.Контрагент КАК КонтрагентКлюч,
| РеестрДокументов.Договор КАК Договор,
| РеестрДокументов.Организация КАК Организация,
| РеестрДокументов.Подразделение КАК Подразделение,
| РеестрДокументов.МестоХранения КАК МестоХранения,
| ВЫРАЗИТЬ(РеестрДокументов.МестоХранения.Ключ КАК Справочник.Склады) КАК Склад,
| РеестрДокументов.Валюта КАК Валюта,
| РеестрДокументов.Сумма КАК СуммаДокумента,
| РеестрДокументов.Ответственный КАК Менеджер,
| РеестрДокументов.Автор КАК Автор,
| РеестрДокументов.Комментарий КАК Комментарий,
| РеестрДокументов.НомерПервичногоДокумента КАК НомерВходящегоДокумента,
| РеестрДокументов.ДатаПервичногоДокумента КАК ДатаВходящегоДокумента,
| РеестрДокументов.Дополнительно КАК Дополнительно,
| СостоянияРаспоряжений.Состояние КАК СостояниеWMS,
| СостоянияЭД.СостояниеЭДО КАК СостояниеВерсииЭД,
| СостоянияЭД.ПредставлениеСостояния КАК ПредставлениеСостояния,
| ВЫБОР
| КОГДА ДокументыСОшибкамиПроверкиКонтрагентов.Документ ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьОшибкиПроверкиКонтрагентов,
| ВЫБОР
| КОГДА РеестрДокументов.Проведен
| ТОГДА 0
| КОГДА РеестрДокументов.ПометкаУдаления
| ТОГДА 1
| ИНАЧЕ 2
| КОНЕЦ КАК НестандартнаяКартинка,
| РеестрДокументов.ДополнительнаяЗапись КАК ДополнительнаяЗапись,
| РеестрДокументов.ТипСсылки КАК ТипСсылки,
| &СтатусПроверки КАК СтатусПроверки,
| &ИндикаторПроверки КАК ИндикаторПроверки,
| ТИПЗНАЧЕНИЯ(РеестрДокументов.Ссылка) КАК ТипЗначения,
| NULL КАК СостояниеОригиналаПервичногоДокумента,
| ИСТИНА КАК ОбщееСостояние,
| 0 КАК СостояниеОригиналПолучен,
| РеестрДокументов.СторноИсправление КАК СторноИсправление,
| РеестрДокументов.ИдентификаторЗаписи КАК ИдентификаторЗаписи,
| ВЫБОР
| КОГДА НЕ РеестрДокументов.СторноИсправление
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ РеестрДокументов.СторнируемыйДокумент
| КОНЕЦ КАК СторнируемыйИсправляемыйДокумент,
| ВЫРАЗИТЬ(» КАК Строка(50)) КАК СостояниеГИСМТ
|ИЗ
| РегистрСведений.РеестрДокументов КАК РеестрДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
| ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД
| ПО СостоянияЭД.СсылкаНаОбъект = РеестрДокументов.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыСОшибкамиПроверкиКонтрагентов КАК ДокументыСОшибкамиПроверкиКонтрагентов
| ПО РеестрДокументов.Ссылка = ДокументыСОшибкамиПроверкиКонтрагентов.Документ
| И (&ИспользованиеПроверкиВозможно)
|ГДЕ
| (РеестрДокументов.ДатаДокументаИБ >= &НачалоПериода
| ИЛИ &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1))
| И (РеестрДокументов.ДатаДокументаИБ <= &КонецПериода
| ИЛИ &КонецПериода = ДАТАВРЕМЯ(1, 1, 1))
|»;
Возврат ТекстЗапроса;
—
Объяснение:
— Убрал лишние запятые после соединений (в 1С-запросах запятая после JOIN не нужна).
— Выровнял отступы и добавил символы | в начале каждой строки.
— Вложенные соединения и условия перенесены в правильный синтаксис.
— Убрал комментарии в стиле //, так как в 1С-запросах лучше использовать /* … */ или не использовать вовсе.
— В выражениях ВЫРАЗИТЬ и ВЫБОР синтаксис сохранён корректным.
Если нужно, могу помочь с адаптацией под конкретную конфигурацию.