Содержание
- Отличие Структуры от Соответствия 1С
- Основное использование объекта типа «Структура»:
- Основное использование объекта типа «Соответствие»:
- Правила отображения отметки незаполненного
- О чем собственно речь
- Как это реализовать
- Практический пример
- Подведем итог
- Проверка на NULL
- Пустая дата
- Пустая ссылка в запросе 1С
- Пустая строка
- Новые записи:
Отличие Структуры от Соответствия 1С
Соответствие и структура очень близкие по сути коллекции.
Соответствие – это коллекция пар ключ и значение.
Структура – это коллекция пар ключ и значение.
Как видите, из определений объектов не отличишь структуру от соответствия, а разница между ними есть и находится в свойстве Ключ. Ключ в структуре может быть только строкой, а в соответствии может быть любым типом.
Что понимается под словом «Ключ»? Ключ – это ключевое поле которое не может иметь двух одинаковых значений — является уникальным в пределах коллекции. Т.е. если мы попытаемя в структуру имеющую ключ «Номенклатура» и значение «Диван» поместить такой же ключ, но с значением «Кресло», то программа просто заменит старое значение «Диван» на новое «Кресло», а не добавит ещё один ключ «Номенклатура» со значением «Кресло».
Основное использование объекта типа «Структура»:
Этот объект часто используется в качестве способа передачи параметров в процедуры и функции.
ВыбраннаяНоменклатура = Новый Структура;
ВыбраннаяНоменклатура.Вставить(«Шифр», Номенклатура.Шифр);
ВыбраннаяНоменклатура.Вставить(«НоменклатурнаяГруппа», Номенклатура.НоменклатуaрнаяГруппа);
ДобавитьНоменклатуруВТЧТовары(ВыбраннаяНоменклатура);
Основное использование объекта типа «Соответствие»:
Имя типа объекта оправдывает свое название, соответственно можно связывать два разных объекта системы, что позволяет избежать ипользования ТЗ с двумя колонками.
СоответствиеНоменклатур = Новый Соответствие;
СоответствиеНоменклатур.Вставить(НашаНоменклатура, НоменклатураКонтрагента);
У этих объектов одинаковые методы для добавления и удаления элементов, но разные для получения.
У структуры имеется метод «Свойство» который проверяет есть ли такой ключ в коллекции и возвращает в переменную полученное значение. Если ключа нет, то возвращается Неопределено. При этом метод является функцией и возвращает Булево(Истина или Ложь)
НоменклатурнаяГруппа = Неопределено;
КлючСуществует = ВыбраннаяНоменклатура.Свойство(«НоменклатурнаяГруппа», НоменклатурнаяГруппа);
В Соответствии для этого есть метод «Получить» в параметрах которого передается ключ парное значение которого мы ищем. Т.е. нет отдельной функции для проверки, но если ключ не найден, то возвращается Неопределено, что и можно использовать для этой же цели(текст изменен, благодаря замечаниям в комментариях).
В 1С проверка на пустое значение осуществляется специальной функцией. Что бы проверить заполнен ли имеющийся у вас реквизит или переменная следует использовать функцию из глобального контекста ЗначениеЗаполнено(<Значение>).
В 1С 8 значение считается заполненным (не пустым) если оно отличается от значения по умолчанию для данного типа. Например для ссылочного типа значение по умолчанию — это Пустая ссылка (данного справочника, документа и т.п.). Также пустыми являются переменные и реквизиты содержащие значения Null и Неопределено.
1с проверка на пустое значение. Примеры
Пример 1:
Переменная = Справочники.Номенклатура.ПустаяСсылка(); Проверка = ЗначениеЗаполнено(Переменная);
В данном случае переменная Проверка будет содержать значение Ложь. Также функцию ЗначениеЗаполнено(<Значение>). можно использовать напрямую в условиях.
Пример 1.1
Если ЗначениеЗаполнено(Переменная) Тогда Сообщить(«Значение в переменной не является пустым!»); КонецЕсли;
Пример2:
Переменная = Документы.АвансовыйОтчет.НайтиПоНомеру(«000000001»); Проверка = ЗначениеЗаполнено(Переменная);
В данном примере, если документ Авансовый отчет с номером 000000001 существует, то в переменной Проверка будет содержаться значение Истина, иначе Ложь.
Использовать функцию ЗначениеЗаполнено нельзя для переменных мутабельных типов, таких как Таблица значений, Дерево значений и т.п. Функция работает для всех конфигураций.
Как же проверить, что в 1с таблица значений пустая? Для этого используется метод Количество(), с его помощью можно проверить сколько строк содержится в таблице значений.
Пример 3. Пусть МояТаблица — таблица значений определенная выше в коде.
Если МояТаблица.Количество() = 0 Тогда Возврат; КонецЕсли;
Этим же методом можно определить заполненность дерева значений и выборки результата запроса.
Пример 4. Пусть МоеДерево — дерево значений определенное выше в коде.
Если МоеДерево.Строки.Количество() = 0 Тогда Возврат; КонецЕсли;
Как видите, в дереве значений мы проверяем наличие строк первого уровня, если их нет, то дерево пустое.
Пример 5. Пусть Запрос — запрос к базе данных 1С 8, определенный выше.
Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Количество() = 0 Тогда Возврат Ложь; Иначе Выборка.Следующий(); …
На этом описание основных приемов, при помощи которых осуществляется в 1с проверка на пустое значение, закончено. Если вы хотите узнать, как сделать проверку на пустое значение в запросе, прочитайте следующие статьи: Проверка на null в запросе и Проверка на Неопределено в запросе
Печать (Ctrl+P)
Проверка заполнения реквизитов
В информационной системе данные могут вноситься множеством различных способов, и часто они могут быть некорректны. Поэтому при разработке решения бывает необходимо прилагать много усилий на реализацию проверки правильности вводимых данных и уведомления пользователя о некорректности введенной информации.
Механизм проверки заполнения позволяет существенно упростить процесс разработки конфигураций.
Проверка заполнения
Платформа поддерживает автоматическую проверку указанных реквизитов прикладных объектов и форм, а также позволяет выполнить процесс проверки в модуле. Для управления проверкой заполнения реквизита служит свойство Проверка заполнения. Если свойство установлено в значение Не проверять – платформа не проверяет заполнение реквизита. Значение Выдавать ошибку указывает на необходимость выполнять проверку.
Платформа выполняет автоматическую проверку заполнения:
● констант;
● справочников, документов, отчетов, обработок, планов видов характеристик, планов счетов, планов видов расчета, бизнес-процессов, задач:
● реквизитов и стандартных реквизитов,
● табличных частей,
● реквизитов и стандартных реквизитов табличных частей;
● наборов записей регистров бухгалтерии, регистра сведений, регистра накопления, регистра расчета, перерасчетов, последовательностей:
● измерений,
● ресурсов,
● реквизитов и стандартных реквизитов;
● реквизитов форм;
● реквизитов форм отчетов;
● реквизитов форм обработок.
ПРИМЕЧАНИЕ. Проверка заполнения реквизитов выполняется аналогично функции ЗначениеЗаполнено(). Проверка заполнения табличных частей подразумевает, что табличная часть считается заполненной, когда в ней присутствует хотя бы одна строка.
Проверка заполнения может быть вызвана двумя способами:
● вызовом метода ПроверитьЗаполнения() (у объекта или формы);
● автоматически.
ВНИМАНИЕ! Если свойство конфигурации Режим совместимости установлено в значение Версия 8.1, то автоматическая проверка заполнения не работает.
Установки по умолчанию
Свойство реквизита Проверка заполнения по умолчанию устанавливается в значение Выдавать ошибку для следующих стандартных реквизитов:
● ПланОбмена – Наименование;
● Справочник – Владелец, Наименование;
● Документ – Дата;
● ПланВидовХарактеристик – Наименование;
● ПланСчетов – Код, Наименование;
● ПланСчетов.ВидыСубконто – ВидСубконто;
● ПланВидовРасчета – Наименование;
● ПланВидовРасчета.ВедущиеВидыРасчета – ВидРасчета;
● ПланВидовРасчета.БазовыеВидыРасчета – ВидРасчета;
● ПланВидовРасчета.ВытесняющиеВидыРасчета – ВидРасчета;
● РегистрСведений – Период;
● РегистрНакопления – Период;
● РегистрБухгалтерии – Период;
● РегистрРасчета – ПериодРегистрации, ВидРасчета, ПериодДействияНачало, ПериодДействияКонец;
● БизнесПроцесс – Дата;
● Задача – Наименование.
Порядок работы
Автоматическая проверка заполнения вызывается расширением формы перед интерактивной записью всех объектов, кроме документов, бизнес-
процессов, отчетов и обработок. Для этих объектов определено следующее поведение:
● для документов:
● проверка заполнения вызывается расширением формы перед проведением, если свойство Проведение установлено в значение Разрешить;
● проверка заполнения вызывается расширением формы перед записью, если свойство Проведение установлено в значение Запретить;
● для бизнес-процессов проверка заполнения вызывается расширением формы перед стартом;
● для отчетов проверка заполнения вызывается расширением формы при нажатии кнопки Сформировать;
● для обработок проверка заполнения вызывается расширением формы в случаях, если нажаты кнопки, связанные со стандартными командами формы OK, Да, Повторить, Пропустить.
Если реквизит является основным реквизитом формы следующих типов: СправочникОбъект, ДокументОбъект, ОтчетОбъект,
ПланВидовХарактеристикОбъект, ПланСчетовОбъект, ПланВидовРасчетовОбъект, БизнесПроцессОбъект, ЗадачаОбъект, то для значения такого реквизита
также будет вызвана проверка заполнения.
Для вызова проверки заполнения системой необходимо, чтобы у формы (с которой происходит работа) было установлено свойство Проверять заполнение автоматически. В этом случае вначале будет вызван обработчик ОбработкаПроверкиЗаполненияНаСервере() формы, а затем обработчик ОбработкаПроверкиЗаполнения() модуля объекта.
ВНИМАНИЕ! Если у формы свойство Проверять заполнение автоматически установлено в значение Истина при выполнении стандартных команд Записать (Провести для документов и т. д.), а также стандартных команд формы OK, Да, Повторить, Пропустить, будет вызван метод ПроверитьЗаполнение(). В противном случае проверка заполнения не вызывается ни для формы, ни для объекта.
Процесс проверки заполнения происходит следующим образом:
● Формируется список имен реквизитов формы, для которых возможна проверка заполнения и для которых свойство ПроверкаЗаполнения установлено в значение ВыдаватьОшибку. В этот список не будут включены имена реквизитов, тип которых не поддерживает проверку заполнения (например, СправочникОбъект), но будет включено имя основного реквизита формы.
В автоматически формируемый список реквизитов не будут включены реквизиты формы, отключенные с помощью функциональных опций.
● Вызывается обработчик события формы ОбработкаПроверкиЗаполненияНаСервере, в котором разработчик может описать свой алгоритм проверки заполнения или изменить состав проверяемых реквизитов. В обработчик будет передан сформированный список имен реквизитов. Если в обработчике необходимо добавить к списку какие-либо реквизиты, это можно сделать только для реквизитов вышеперечисленных типов (для
которых возможна проверка заполнения в форме) и основного реквизита. Добавление в список имен реквизитов объектного типа (например, СправочникОбъект) вызовет исключение при дальнейшей автоматической проверке. Добавление в список имени несуществующего реквизита вызовет исключение при дальнейшей автоматической проверке.
● После завершения работы обработчика события механизм проверки заполнения получает обратно список имен, проверяемых реквизитом (который, возможно, был изменен в обработчике). Система анализирует список реквизитов и проверяет заполненность каждого реквизита. Если реквизиттявляется основным реквизитом объектного типа (например, Объект типа СправочникОбъект), будет вызвана проверка заполнения самого объекта.
Если реквизит является реквизитом объектного типа, но не основным, будет вызвано исключение.
Разработчик имеет возможность влиять на процесс проверки путем определения в модуле объекта, набора записей и в модуле формы обработчика события ОбработкаПроверкиЗаполнения.
Определив обработчик события, разработчик получает полный контроль над проверкой заполнения. В параметре ПроверяемыеРеквизиты обработчик получает массив реквизитов, для которых в режиме Конфигуратор указано, что они должны проверяться. Разработчик может произвольно модифицировать этот массив:
● удалять те реквизиты, проверку заполнения которых он реализует сам или считает, что их не нужно проверять в данный момент;
● добавлять необходимые реквизиты, для которых должна выполниться проверка заполнения.
В случае если разработчика не устраивает стандартная процедура проверки, он может написать алгоритм проверки сам и, используя объект СообщениеПользователю, сообщить об имеющихся проблемах пользователю.
Если в процессе проверки разработчик вывел пользователю сообщения об ошибках, необходимо установить параметр Отказ в значение Истина, чтобы уведомить платформу о том, что текущее действие не может быть завершено.
Параметр события ПроверяемыеРеквизиты содержит имена атрибутов в следующем формате:
● для реквизитов и констант – ИмяРеквизита, например, Поставщик;
● для табличных частей – ИмяТабличнойЧасти, например, Товары;
● для реквизитов табличных частей – ИмяТабличнойЧасти.ИмяРеквизита, например, Товары.Номенклатура;
● для реквизитов форм – ИмяРеквизита, например, ДокументОбъект.
Для реквизитов, входящих в состав функциональных опций без параметров, значение опции учитывается при проверке заполнения. Если функциональная опция включена, то реквизит будет включен в список проверяемых реквизитов; если опция выключена, реквизит не будет включен в список проверяемых реквизитов. Это значит, что отключенное поле не будет передано через параметры ПроверяемыеРеквизиты в
ОбработкаПроверкиЗаполнения.
Реквизиты, входящие в состав функциональной опции с параметрами , всегда включаются в список проверяемых реквизитов (параметр ПроверяемыеРеквизиты). Удаление реквизита из списка проверяемых реквизитов в таких случаях необходимо выполнять в обработчике ОбработкаПроверкиЗаполнения. Для этого следует получить значение функциональной опции, указав в качестве параметров необходимые данные
объекта.
Правила отображения отметки незаполненного
На отображение отметки незаполненного влияют следующие свойства элементов конфигурации:
● свойство Проверка заполнения реквизита или стандартного реквизита объекта метаданных;
● свойство Проверка заполнения реквизита формы;
● свойство Автоотметка незаполненного элемента формы;
● свойство ОтметкаНезаполненного элемента формы (доступно только для программного изменения).
Свойство элемента формы Автоотметка незаполненного может быть установлено в значение:
● Авто – отметка будет отображаться, если у реквизита формы или реквизита (стандартного реквизита) объекта метаданных свойство Проверка заполнения установлено в значение Выдавать ошибку и реквизит, связанный с элементом формы, содержит пустое значение.
● Да – отметка будет отображаться для незаполненного элемента вне зависимости от того, в каком состоянии находится свойство Проверка
заполнения.
● Нет – отметка не будет отображаться для незаполненного элемента вне зависимости от того, в каком состоянии находится свойство Проверка заполнения.
При начале интерактивного изменения поля ввода отметка незаполненного перестает отображаться, при этом значение свойства ОтметкаНезаполненного не изменяется. Отображение отметки восстанавливается (если это необходимо) после того, как в поле ввода завершено интерактивное редактирование или установлено значение. При этом свойство ОтметкаНезаполненного может быть изменено системой в том случае, если
свойство АвтоОтметкаНезаполненного установлено в значение Истина:
● если значение в поле не заполнено, то свойство ОтметкаНезаполненного будет установлено в значение Истина;
● если в поле значение заполнено, то свойство ОтметкаНезаполненного будет установлено в значение Ложь.
ПРИМЕЧАНИЕ. Если свойство ОтметкаНезаполненного установлено у таблицы, то для таблицы, в которой нет строк, будет подсвечена первая строка, а для заполненной таблицы – все строки.
Кроме того, отметка незаполненного также будет отображена, если в окне сообщений есть сообщение , связанное с конкретным полем формы, вне зависимости от установленных свойств элемента формы и связанных с ним реквизитов. После очистки окна сообщений отметка незаполненного снимается у тех элементов формы, значение свойства ОтметкаНезаполненного которых равно значению Ложь.
- Добавить свою публикацию
для этого требуется регистрация
YPermitin 28.02.2013 0
О чем собственно речь
Возможно у мноих из вас возникала задача проверять наличие определенного элемента на форме, или имеется ли на области макета нужный параметр. К сожалению, стандартных методов, позволяющих выполнить эту задачу, платформа не предоставляет.
Для значений типа «Структура» доступен метод «Свойство()»:
ТестСтруктура = Новый Структура; ТестСтруктура.Вставить(«ТестКлюч», «ТестЗначение»); ЕстьЗначениеТестКлюч = ТестСтруктура(«ТестКлюч»); // В итоге переменная «ЕстьЗначениеТестКлюч» будет содержать значение ИСТИНА
Если же мы попытаемся таким же образом узнать о существовании какого-либо элемента формы или параметра на области макета (как пример), то это вызовет следующую ошибку:
По подробной информации об ошибке видно, что коллекция элементов управляемой формы (переменная «Элементы») не имеет метода «Свойство()». Тоже самое относится к абсолютому большинству коллекций, которые поддерживает платформа.
Для некоторых коллекций, таких как «КолонкиТабличногоПоля», «КоллекцияЭлементовМетаданных» для использования доступен метод «Найти()», в качестве первого параметра которому предеатеся имя элемента для поиска. Методы возвращают найденный элемент или «Неопределено», если значение не найдено. Таким образом, с помощью метода найти можно унать наличие того или иного свойства для тех коллекций, которые поддерживают работу с ним.
Но что делать, если коллекция не поддерживает работу с подобными методами, описанными выше. В таких случая нужен совсем иной способ работы с этими типами данных.
Сегодня в статье будет идти речь об универсальном подходе, позволяющим определить наличие свойства у значения любого типа данных 1С:Предприятие 8.x.
Как это реализовать
Предлагаю написать универсальную функцию для определения наличия свойства у любого типа значения и затем перейти к использованию ее на небольшом примере.
Работа предлагаемого подхода основывается на использовании метода «ЗаполнитьЗначенияСвойств()» и переменной с типом «Структура». На следующем листинге приведен програмный код данной функции:
// Универсальная функция для проверки наличия свойств у значения любого типа данных // Переменные: // 1. Переменная — переменная любого типа, для которой необходимо проверить наличие свойства // 2. ИмяСвойства — переменная типа «Строка», содержащая искомое свойство // Функция ПеременнаяСодержитСвойство(Переменная, ИмяСвойства) // Инициализируем структуру для теста с ключом (значение переменной «ИмяСвойства») и значением NULL СтруктураПроверка = Новый Структура; СтруктураПроверка.Вставить(ИмяСвойства, NULL); // Заполняем созданную структуру из переданного значения переменной ЗаполнитьЗначенияСвойств(СтруктураПроверка, Переменная); // Если значение для свойства структуры осталось NULL, то искомое свойство не найдено, и наоборот. Если СтруктураПроверка= NULL Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции
В принципе все понятно из коментариев на листинге. Единственным моментом, на что следуюет обратить внимание, является то, что если свойство будет найдено, а его значение при этом равно NULL, то функция все равно скажет, что такого свойства нет. В таких случаях нужно создавать дополнительную проверку.
Практический пример
В качестве примера в тестовой конфигурации добавим документ «ТестовыйДокумент» с несколькими реквизитами. На его форму добавлены соответствующие элементы формы.
В поле «Имя элемента» вводится имя элемента формы. По кнопке найти отрабатывает созданная нами ранее функция. После выполнения команды, программа уведомляет пользователя об успешности поиска. На следующем листинге приведен программный код обработчика команды и вызываемая процедура поиска свойств.
&НаКлиенте Процедура НайтиКоманда(Команда) Если ПеременнаяСодержитСвойство(Элементы, ИмяЭлемента) Тогда Предупреждение(«Элемент «»» + ИмяЭлемента + «»» найден!»); Иначе Предупреждение(«Элемент «»» + ИмяЭлемента + «»» НЕ найден!»); КонецЕсли; КонецПроцедуры// Универсальная функция для проверки наличия свойств у значения любого типа данных // Переменные: // 1. Переменная — переменная любого типа, для которой необходимо проверить наличие свойства // 2. ИмяСвойства — переменная типа «Строка», содержащая искомого свойства // &НаКлиенте Функция ПеременнаяСодержитСвойство(Переменная, ИмяСвойства) // Инициализируем структуру для теста с ключом (значение переменной «ИмяСвойства») и значением NULL СтруктураПроверка = Новый Структура; СтруктураПроверка.Вставить(ИмяСвойства, NULL); // Заполняем созданную структуру из переданного значения переменной ЗаполнитьЗначенияСвойств(СтруктураПроверка, Переменная); // Если значение для свойства структуры осталось NULL, то искомое свойство не найдено, и наоборот. Если СтруктураПроверка = NULL Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции
Тестовую конфигурация Вы можете скачать по ссылке.
Подведем итог
Описанный в статье подход позволяет проверять наличия свойст в коллекциях любого типа. Элементы формы, коллекция метаданных, параметры макета и много другое. Отрицательного влияния на производительность не имеет. Работает на любой версии платформы.
P.S. По замечанию alcom привожу программный код с использованием GUID’а.
// Универсальная функция для проверки наличия свойств у значения любого типа данных // Переменные: // 1. Переменная — переменная любого типа, для которой необходимо проверить наличие свойства // 2. ИмяСвойства — переменная типа «Строка», содержащая искомое свойства // &НаКлиенте Функция ПеременнаяСодержитСвойство(Переменная, ИмяСвойства) // Инициализируем структуру для теста с ключом (значение переменной «ИмяСвойства») и значением произвольного GUID’а GUIDПроверка = Новый УникальныйИдентификатор; СтруктураПроверка = Новый Структура; СтруктураПроверка.Вставить(ИмяСвойства, GUIDПроверка); // Заполняем созданную структуру из переданного значения переменной ЗаполнитьЗначенияСвойств(СтруктураПроверка, Переменная); // Если значение для свойства структуры осталось NULL, то искомое свойство не найдено, и наоборот. Если СтруктураПроверка = GUIDПроверка Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции
В этой статье будут рассмотрены способы проверки на пустое значение в зависимости от типа проверяемого реквизита в запросе 1С 8.3, в том числе пустой ссылки.
Проверка на NULL
Значение NULL возвращается в том случае, когда реквизита попросту нет. Тип в этом случае будет тоже NULL. Например, вы объединяете две таблицы через левое соединение. В том случае, когда для левой таблицы не будет найдено ни одного значения в правой, вернется NULL.
Проверку на данное значение можно осуществить при помощи конструкции «ЕСТЬ NULL» и «ЕСТЬNULL()». В первом случае возвращается Истина или Ложь. Во втором случае можно сразу задать другое значение в том случае, когда возвращается NULL.
В приведенном ниже запросе 1С 8.3 будут возвращен список контактных лиц тех партнеров, у кого не задан сегмент.
ВЫБРАТЬ
КонтактныеЛицаПартнеров.Ссылка
ИЗ
Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СегментыПартнеров КАК СегментыПартнеров
ПО КонтактныеЛицаПартнеров.Владелец = СегментыПартнеров.Родитель
ГДЕ
СегментыПартнеров.Ссылка ЕСТЬ NULL
Пустая дата
Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.
Связаться с нами можно по телефону +7 499 350 29 00.
Услуги и цены можно увидеть по .
Будем рады помочь Вам!
Проверка значения на пустую дату производится путем сравнения с конструкцией ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0). Пример использования приведен ниже:
ВЫБРАТЬ
Встреча.Ссылка
ИЗ
Документ.Встреча КАК Встреча
ГДЕ
Встреча.Дата = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
Пустая ссылка в запросе 1С
В случае, когда возвращаемый реквизит имеет ссылочный тип, например, это элемент какого-либо справочника, документа и т. п., используется следующая конструкция: ЗНАЧЕНИЕ(Справочник.ИмяСправочника.ПустаяСсылка).
В приведенном ниже примере запрос выбирает всех партнеров, у которых не указан бизнес-регион.
ВЫБРАТЬ
Партнеры.Ссылка
ИЗ
Справочник.Партнеры КАК Партнеры
ГДЕ
Партнеры.БизнесРегион = ЗНАЧЕНИЕ(Справочник.БизнесРегионы.ПустаяСсылка)
Чтобы проверить на «ЗначениеЗаполнено» нужно сделать обратное условие:
Партнеры.БизнесРегион <> ЗНАЧЕНИЕ(Справочник.БизнесРегионы.ПустаяСсылка)
Пустая строка
Для проверки строковых типов производится сравнение с другим образцом. В данном случае – «».
Приведенный ниже запрос отберет всех партнеров с незаполненным наименованием.
ВЫБРАТЬ
Партнеры.Ссылка
ИЗ
Справочник.Партнеры КАК Партнеры
ГДЕ
Партнеры.Наименование = «»