В процессе разработки на платформе 1С:Предприятие 8 часто возникает необходимость проверить поле запроса на наличие или отсутствие ссылки. Одной из распространенных ошибок при этом является попытка использовать оператор ЗНАЧЕНИЕ по аналогии с присваиванием значений в обычном коде 1С. Давайте разберем, почему возникает ошибка «Операция не разрешена» и как правильно организовать проверку в запросе.
Зачастую разработчики пытаются использовать конструкцию вида Поле = ЗНАЧЕНИЕ(...) в попытке «присвоить» значение или напрямую сравнить данные. Однако язык запросов 1С основан на принципах SQL, где запрос предназначен исключительно для выборки, фильтрации и преобразования данных, но не для их модификации. Когда мы пишем Поле = ЗНАЧЕНИЕ(Документ.ИмяДокумента.ПустаяСсылка) вне контекста логического выражения, система воспринимает это как синтаксическую ошибку.
Основные причины, по которым конструкция ЗНАЧЕНИЕ может вызывать сбои:
ЗНАЧЕНИЕ не соответствует реальному имени в дереве конфигурации.Для того чтобы проверить, является ли значение поля пустой ссылкой, необходимо использовать логическую конструкцию ВЫБОР КОГДА. Это позволяет нам вычислить булево значение (Истина или Ложь) в процессе выполнения запроса.
Рассмотрим пример кода, который позволит нам определить, является ли документ пустым:
ВЫБОР
КОГДА АИС_ЗаявкаНаСлужебнуюПоездку.КомандировкаДок = ЗНАЧЕНИЕ(Документ.КомандировкиОрганизаций.ПустаяСсылка)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЭтоПустаяСсылка
Разберем этот алгоритм по шагам:
ВЫБОР, которая работает как привычный нам оператор Если...Тогда...Иначе...КонецЕсли.КОГДА мы осуществляем сравнение конкретного поля из нашего документа АИС_ЗаявкаНаСлужебнуюПоездку.КомандировкаДок с пустой ссылкой типа Документ.КомандировкиОрганизаций.ЗНАЧЕНИЕ(Документ.КомандировкиОрганизаций.ПустаяСсылка) указывает системе, какой именно «нулевой» объект мы хотим получить для сравнения.ИСТИНА, в противном случае — ЛОЖЬ.Чтобы избежать подобных проблем в будущем, проанализируем несколько рекомендаций:
Помните, что в языке запросов 1С все проверки должны быть обернуты в логические функции или конструкции ВЫБОР. Применяя описанный выше подход, вы сможете эффективно работать с пустыми ссылками и корректно обрабатывать данные в любых задачах автоматизации.