При работе с консолью запросов разработчики 1С часто сталкиваются с ситуацией, когда при нажатии на кнопку «Конструктор запроса» платформа выдает синтаксическую ошибку и отказывается открывать диалоговое окно визуального редактора. Рассмотрим, почему возникает эта проблема и как ее быстро устранить.
Проблема заключается в том, как обработки консолей запросов передают текущий текст из формы во встроенный объект платформы КонструкторЗапросов. В некоторых версиях консолей (в том числе полученных с диска ИТС или из состава БСП) перед вызовом конструктора отсутствует проверка на заполненность текстового поля или наличие в нем невидимых символов.
Если поле запроса визуально пустое, но содержит пробелы, переносы строк или если механизм консоли передает некорректную строку, синтаксический анализатор платформы пытается разобрать этот текст. Не найдя ключевого слова языка запросов, платформа выдает ошибку.
Для быстрого решения проблемы выполним следующие шаги:
ВЫБРАТЬ 1.Разберем подробнее, из-за чего объект КонструкторЗапросов может сбоить при вызове из внешних обработок:
Если вы используете собственную консоль запросов или дорабатываете внешнюю обработку, проанализируем, как правильно написать код вызова конструктора, чтобы исключить возникновение данной ошибки.
Перед передачей текста запроса в объект КонструкторЗапросов необходимо выполнить очистку от крайних пробелов с помощью функции СократЛП и проверить строку через функцию ПустаяСтрока.
Рассмотрим пример правильного вызова конструктора в коде формы:
ТекстЗапросаОчищенный = СократЛП(ТекстЗапроса);
Если ПустаяСтрока(ТекстЗапросаОчищенный) Тогда
// Если строка пустая, передаем строго пустую строку без пробелов
Конструктор = Новый КонструкторЗапросов("");
Иначе
Конструктор = Новый КонструкторЗапросов(ТекстЗапроса);
КонецЕсли;
Если Конструктор.ОткрытьМодально() Тогда
ТекстЗапроса = Конструктор.Текст;
КонецЕсли;
Если предложенный обходной вариант не помогает или ошибка появляется постоянно, рассмотрим дополнительные действия:
%LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8).