Значение не заполнено 1с
В 1С проверка на пустое значение осуществляется специальной функцией. Что бы проверить заполнен ли имеющийся у вас реквизит или переменная следует использовать функцию из глобального контекста ЗначениеЗаполнено().
В 1С 8 значение считается заполненным (не пустым) если оно отличается от значения по умолчанию для данного типа. Например для ссылочного типа значение по умолчанию — это Пустая ссылка (данного справочника, документа и т.п.). Также пустыми являются переменные и реквизиты содержащие значения Null и Неопределено.
1с проверка на пустое значение. Примеры
В данном случае переменная Проверка будет содержать значение Ложь. Также функцию ЗначениеЗаполнено(). можно использовать напрямую в условиях.
В данном примере, если документ Авансовый отчет с номером 000000001 существует, то в переменной Проверка будет содержаться значение Истина, иначе Ложь.
Использовать функцию ЗначениеЗаполнено нельзя для переменных мутабельных типов, таких как Таблица значений, Дерево значений и т.п. Функция работает для всех конфигураций.
Как же проверить, что в 1с таблица значений пустая? Для этого используется метод Количество(), с его помощью можно проверить сколько строк содержится в таблице значений.
Пример 3. Пусть МояТаблица — таблица значений определенная выше в коде.
Этим же методом можно определить заполненность дерева значений и выборки результата запроса.
Пример 4. Пусть МоеДерево — дерево значений определенное выше в коде.
Как видите, в дереве значений мы проверяем наличие строк первого уровня, если их нет, то дерево пустое.
Пример 5. Пусть Запрос — запрос к базе данных 1С 8, определенный выше.
На этом описание основных приемов, при помощи которых осуществляется в 1с проверка на пустое значение, закончено. Если вы хотите узнать, как сделать проверку на пустое значение в запросе, прочитайте следующие статьи: Проверка на null в запросе и Проверка на Неопределено в запросе
Функция (часто называют подпрограмма) – это некоторый фрагмент внутри кода программы к которому можно обращаться из другого места в коде программы. Обычно связывается с функцией идентификатор, но иногда встречаются и функции без имени. К названию функции всегда привязан адрес первого оператора, который входит в заданную функцию. По завершению функции управление переходит в ту часть программы, где закончилось упоминание функции. Также функция способна брать некоторые параметры, а затем возвращать их в виде некоторого значения (иногда значение функции пустое).
1. Функция ЗначениеЗаполнено
В системе 1С существует особая функция, подстановкой в которую можно проверить не пустое ли значение функции. Для того чтобы узнать заполнено ли какое-то значение, параметр, реквизит или переменная, нужно воспользоваться функцией «ЗначениеЗаполнено», которая находится в глобальном контексте и имеет вид, как на вставке ниже:
Рис. 1 Функция Значение заполнено в 1С
В платформе 1С считается заполненным только то значение, которое разнится со значением, по умолчанию заведенным в данный тип.
Например: стандартное значение в ссылочном типе – это пустая ссылка.
Примечание: считаются пустыми значения, которые содержат Ноль или Неопределённо – в них возвращается «Ложь».
Функция ЗначениеЗаполнено() проверяет, что «Истина» возвращается для:
· реквизиты и параметры типа «Булево»;
· если в строке есть символы отличные от пробела, то значения с типом «Строка»;
· если в массиве есть не меньше одного элемента, то «Массив».
Примечание: в функции ЗначениеЗаполнено() не поддерживаются мутабельные значения (один из типов данных, в котором объекты могут менять собственные свойства, например «Таблица значений» или «Древо значений», чтобы, к примеру, проверить, что таблица не пустая – в системе 1С используется функция Количество()). Помимо этой особенности, функция прекрасно работает в любой конфигурации системы 1С.
2. Примеры использования функции
Пример подпрограммы (функции):
Рис. 2 Пример функции 1С ЗначениеЗаполнено
В примере подпрограммы на картинке выше в переменной «Проверка» будет храниться значение «Ложь». А в самих условиях можно пользоваться также данной функцией – ЗначениеЗаполнено(). Также можно взглянуть на аналогичный пример, который следует из определения данной функции:
Рис.3 Пример использования ЗначениеЗаполнено
Рис. 4 Использование функции ЗначениеЗаполнено
На этом примере показано, что в случае, когда документ с названием «Авансовый отчёт», который имеет номер «000000001», существует, тогда внутри параметра «Проверка» станет находится значение «Истина», в другом случае – «Ложь».
Третий пример использования функции:
Рис. 5 Пример ЗначениеЗаполнено с параметром Ложь
В данном примере сделаны варианты использования функции ЗначениеЗаполнено() и, в комментариях заведомо подписано, что является результатом выполнения функции.
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
Функция (часто называют подпрограмма) – это некоторый фрагмент внутри кода программы к которому можно обращаться из другого места в коде программы. Обычно связывается с функцией идентификатор, но иногда встречаются и функции без имени. К названию функции всегда привязан адрес первого оператора, который входит в заданную функцию. По завершению функции управление переходит в ту часть программы, где закончилось упоминание функции. Также функция способна брать некоторые параметры, а затем возвращать их в виде некоторого значения (иногда значение функции пустое).
1. Функция ЗначениеЗаполнено
В системе 1С существует особая функция, подстановкой в которую можно проверить не пустое ли значение функции. Для того чтобы узнать заполнено ли какое-то значение, параметр, реквизит или переменная, нужно воспользоваться функцией «ЗначениеЗаполнено», которая находится в глобальном контексте и имеет вид, как на вставке ниже:
Рис. 1 Функция Значение заполнено в 1С
В платформе 1С считается заполненным только то значение, которое разнится со значением, по умолчанию заведенным в данный тип.
Например: стандартное значение в ссылочном типе – это пустая ссылка.
Примечание: считаются пустыми значения, которые содержат Ноль или Неопределённо – в них возвращается «Ложь».
Функция ЗначениеЗаполнено() проверяет, что «Истина» возвращается для:
· реквизиты и параметры типа «Булево»;
· если в строке есть символы отличные от пробела, то значения с типом «Строка»;
· если в массиве есть не меньше одного элемента, то «Массив».
Примечание: в функции ЗначениеЗаполнено() не поддерживаются мутабельные значения (один из типов данных, в котором объекты могут менять собственные свойства, например «Таблица значений» или «Древо значений», чтобы, к примеру, проверить, что таблица не пустая – в системе 1С используется функция Количество()). Помимо этой особенности, функция прекрасно работает в любой конфигурации системы 1С.
2. Примеры использования функции
Пример подпрограммы (функции):
Рис. 2 Пример функции 1С ЗначениеЗаполнено
В примере подпрограммы на картинке выше в переменной «Проверка» будет храниться значение «Ложь». А в самих условиях можно пользоваться также данной функцией – ЗначениеЗаполнено(). Также можно взглянуть на аналогичный пример, который следует из определения данной функции:
Рис.3 Пример использования ЗначениеЗаполнено
Рис. 4 Использование функции ЗначениеЗаполнено
На этом примере показано, что в случае, когда документ с названием «Авансовый отчёт», который имеет номер «000000001», существует, тогда внутри параметра «Проверка» станет находится значение «Истина», в другом случае – «Ложь».
Третий пример использования функции:
Рис. 5 Пример ЗначениеЗаполнено с параметром Ложь
В данном примере сделаны варианты использования функции ЗначениеЗаполнено() и, в комментариях заведомо подписано, что является результатом выполнения функции.
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
Приветствую, коллеги! В данной статье поговорим о том, как сделать проверку на «пустое» значение в 1С. Ведь бывает, что программисту, когда он описывает алгоритм по обработке, нужно узнать есть ли что-то в переменной или эта переменная «пустая». Далее будет приведена классификация «пустых» значений и функции для проверки их наличия или отсутствия.
1. Значение «Неопределено» и значение типа “NULL”
Если разбираться по-научному, то в системе 1С не существует понятия «пустое» значение. Правильнее называть его значением «Неопределено» (переменная такого типа). Вышеупомянутый тип используют в качестве значения переменных (реквизитов, столбцов таблиц и так далее), у которых, согласно стандартным настройкам, тип является составным. То есть когда в одной переменной содержится какое-то количество типов значений, то данная переменная будет иметь тип «Неопределено». То есть, данной переменной можно присваивать вышеуказанное значение, как то, которое обозначает не принадлежность значения любому иному доступному типу. Данный тип остаётся, пока внутри переменной значение не переменится. Из всех утверждений выше следует, что тип «Неопределено» предупреждает о том, что в переменной отсутствует значение любого из определённых типов, простым слогом – оно «пустое».
Следует рассмотреть ещё значение типа «NULL» – его наличие означает, что значение отсутствует.
Подытожим: два данных значения – это специальные типы, предназначены для особых случаев.
В большем количестве типов есть стандартные значения, которые были установлены в системе по умолчанию, по сути это то значение, которое автоматически присваивается переменной даже в случае, когда её не заполнили. Как пример: для чисел – это будет значение «0», для даты – дата «00010101», для строк – строка без символов.
Замечание: для типа «ссылка» есть значение пустой ссылки.
2. Вариации проверок на пустое значение
Универсальный метод проверки применим в случаях, когда тип переменной известен или не известен.
В случае, когда разработчик знает тип переменной, которая подлежит проверке, проводится сравнение значения переменной с пустым значением для заданного типа. Чтобы узнать пустое значение у типа, используется функция «ПолучитьПустоеЗначение()». На скриншоте ниже приведён пример проверки с известным типом переменной:
Рис. 1 Проверка на пустое значение с известным типом переменной
Если разработчику не известен тип переменной, но проверить на пустое значение нужно, используется функция «ПустоеЗначение()», как показано на скриншоте ниже:
Рис. 2 Проверка на пустое значение с неизвестным типом переменной
Функция «ЗначениеЗаполнено()» используется для проверки содержания значения, которое ей передали. Это можно увидеть по общей форме функции:
Рис. 3 Функция ЗначениеЗаполнено
Для типа «ссылка» проверка немного отличается от тех, которые были описаны выше. Чтобы узнать содержится ли в ссылке «пустое» значение нужно воспользоваться методом «ПустаяСсылка()». Работает он аналогично функции «ЗначениеЗаполнено()», только для ссылок.
В данной статье было рассмотрены общие понятия «пустое» значение в 1С и то, каким типам оно соответствует. Также были приведены 4 разных способа проверки на «пустое» значение, из которых можно легко избрать самый сподручный для конкретного типа и конкретного кода программы.
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
Хочу спросить, кто чем пользуется, что бы проверить заполнено ли значение. Я не заморачиваюсь и использую всегда ЗначениеЗаполнено(), вместо пустой ссылки и тому подобное.
ЗначениеЗаполнено() Работает как куча длинного Если, если тип такой и значение такое то истина, если такой и такое то истина иначе ложь.
Следовательно, если заранее известен тип значения проверяемого объекта, то использовать функцию не эффективно.
(11) зато если в результате пост-обработки заранее известный тип сваливается в НЕопределено - получим критическую ошибку :))))
(16) Ну это проблема разработчика :)
(17) Не обращай внимания, просто попроси разработчиков платформы ответить тебе как же оно работает.
(23) А если это проверка заполения реквизита на форме, опять же в описании функции сказано что она и на клиенте работает. Опять же в скулевом запросе нет кейсов.
(25) Тонкий клиент ни с чем кроме примитивных типов работать не умеет, все остальное происходит на стороне сервера.
(0) Принимай меня в свой клуб, большой брат. Но уже сталкивался несколько раз, что у нас какие-то быдлокодеры или кто-то еще создают в общих модулях процедуру ЗначениеНЕЗаполнено. Вот ее я отовсюду выпиливал где встречал)
Раздражает она меня)
(37) она тянется еще с 8.0 - там не было типового метода определения пустого значения вот и писали функцию, которую ты и встречаешь
(23) Нафига там скулевый запрос? Пустую ссылку можно по GUID определить, не говоря уже про строки, числа и т.д.
(35) Я не могу понять, как запосы работают на уровне интерфесных объектов и где в запросах есть кейсы.
ПустаяСтрока(), Ссылка.Пустая(), ЗначениеЗаполнено() -- доступны в тонком клиенте, про вызов сервера справка не упоминает.
В общем, эта функция не требует обращения к серверу, и запросов к БД не выполняется, что в общем-то неудивительно.
(49) Частыми слешами.
А что, самим слабО написать простенькую обработку и выяснить, что быстрее выполняется - ЗначениеЗаполнено() или какая другая? Обязательно мнение других спрашивать?
(52) Ну во первых результат ее выполнения нельзя будет явно оценить, к тому же если для чистоты эксперименты то писать ее надо для каждого типа, а то вдргу груви прав был и там на самом деле длиннющий кейс, хотя мне сдается там просто выполняется некое приведение к примитивному типу и уже по нему определяется (лично я бы так сделал)
Вызов базы может быть только в случаях:
ЗначениеЗполненно( СсылкаНаОбъектИлиСправочник.ПолеОбъекта ) или ЗначениеЗполненно( СсылкаНаОбъект.ТабличнаяЧасть )
В общем лишь там, где для проверки предварительно идёт выборка и к функции это не относится.
(53) Не может быть в этой функции длиннющий кейс не смешите людей. Каждый объект в 1С ( будь то строки или число и т.д. ) имеет функцию которая определяет заполненность. При вызове данной функции просто вызывается метод данного типа объекта и всё.
Читайте также: