1s в заявката проверяват за празен низ. с проверка за празна стойност

1s в заявката проверяват за празен низ. с проверка за празна стойност

В 1C проверете за празна стойностизпълнявани от специална функция. За да проверите дали атрибутът или променливата, които имате, са попълнени, трябва да използвате функцията от глобалния контекст ValueFilled(<Значение>) .

В 1C 8 стойността се счита за попълнена (не празна), ако се различава от стойността по подразбиране за от този тип. Например за референтен тип стойността по подразбиране е Празна връзка(на този наръчник, документ и др.). Също така празни са променливите и реквизитите, съдържащи стойности НулаИ Недефиниран.

1s проверка за празна стойност. Примери

Променлива = References.Nomenclature.EmptyReference(); Check = ValueFilled(Variable);

В този случай променливата Прегледще съдържа стойността Лъжа. Също така функция ValueFilled(<Значение>) . може да се използва директно в условия.

Пример 1.1

If ValueFilled(Variable) Then Report("Стойността в променливата не е празна!"); EndIf;

Променлива = Documents.Expense Report.FindBy Number("000000001"); Check = ValueFilled(Variable);

IN този примерако документът Предварителен отчетс номер 000000001 съществува, тогава в променливата Прегледще съдържа стойността Вярно, в противен случай Лъжа.

използвайте функция ValueFilledне е възможно за променливи от променливи типове като Таблица със стойности, Стойностно дървои така нататък. Функцията работи за всички конфигурации.

Как да проверя дали в 1s таблицата със стойности е празна? За това се използва методът Количество(), с него можете да проверите колко реда се съдържат в таблицата със стойности.

Пример 3. Нека MyTable— таблица със стойности, дефинирани по-горе в кода.

If MyTable.Count() = 0 Then Return; EndIf;

Същият метод може да се използва за определяне на пълнотата на дървото от стойности и избора на резултата от заявката.

Пример 4. Нека MyTreeе дървото на стойностите, дефинирано по-горе в кода.

If MyTree.Rows.Count() = 0 Then Return; EndIf;

Както можете да видите, в дървото на стойностите проверяваме за наличието на низове от първо ниво, ако не са, тогава дървото е празно.

Пример 5. Нека Заявка- заявка към базата данни 1C 8, дефинирана по-горе.

String е един от примитивните типове данни в системите 1C:Enterprise 8. Променливи с тип линиясъдържат текст.

Тип променливи стойности линияса оградени в двойни кавички. Могат да се добавят няколко променливи от този тип.

Per1 = "Дума 1" ;
Per2 = "Дума 2";
Per3 = Per1 + " " + Per2 ;

В крайна сметка Per3ще има значение" Слово 1 Слово 2″.

Освен това системите 1C:Enterprise 8 предоставят функции за работа с низове. Помислете за основните:

Въведете низ (<Строка>, <Подсказка>, <Длина>, <Многострочность>) — функцията е проектирана да показва диалогов прозорец, в който потребителят може да посочи стойността на променлива от тип Линия. Параметър <Строка> е задължителен и съдържа името на променливата, в която ще бъде записан въведеният низ. Параметър <Подсказка> незадължително е заглавието на диалоговия прозорец. Параметър <Длина> незадължително, показва максималната дължина на входния низ. По подразбиране е нула, което означава неограничена дължина. Параметър <Многострочность> по желание. Указва режима на въвеждане многоредов текст: True - въвеждане на многоредов текст с разделители на редовете; False - Въведете прост низ.

Може да се въведе низ и, знаейки кода на знака в Unicode:

символ (<КодСимвола>) — Кодът се въвежда като число.

Буква= Символ(1103 ) ; // аз

Има и обратна функция, която ви позволява да разберете кода на символ.

Символен код(<Строка>, <НомерСимвола>) — Връща Unicode номера на посочения знак като число.

Функции за преобразуване на главни и малки букви на текста:

VReg(<Строка>) - Преобразува всички знаци в низ в главни букви.

HReg(<Строка>) - Преобразува всички знаци в низ в малки букви.

TReg(<Строка>) - преобразува всички символи на низа в главни букви. Това означава, че първите букви във всички думи се преобразуват в главни, а останалите букви се преобразуват в малки.

Функции за търсене и заместване на символи в низ:

Намирам(<Строка>, <ПодстрокаПоиска>) - намира номера на символа на срещането на търсения подниз. Например:

Find ("String" , "eye" ) ; // 4

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — намира номера на символа на срещането на търсения подниз, номерът на срещане е посочен в съответния параметър. В този случай търсенето започва от знака, чийто номер е посочен в параметъра Начална позиция.Търсенето е възможно от началото или от края на низа. Например:

Number4 Entry= StrFind( "Отбрана", "o" , Посока на търсене. Първо, 1 , 4 ); // 7

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) - намира в изходна линиявсички срещания на търсения подниз и го замества с заместващия подниз.

StrReplace("String" , "eye" , "" ) ; // Страница

Празен ред(<Строка>) - проверява низа за значими знаци. Ако няма значими знаци или изобщо няма знаци, тогава се връща стойността Вярно. В противен случай - Лъжа.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – изчислява броя на срещанията на търсения подниз в изходния низ.

StrNumberOccurrences ( „Учи, учи и пак учи“, "проучване" , "" ) ; // 3

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — замества параметрите в низа по число. Низът трябва да съдържа маркери за заместване във формата: "%1..%N". Номерирането на маркерите започва от 1. Ако стойността на параметъра Недефиниран, празният низ се замества.

StrPattern ( "Опция 1 = %1, Опция 2 = %2", "1" , "2" ) ; // Параметър 1= 1, Параметър 2 = 2

Функции за преобразуване на низове:

Лъв(<Строка>, <ЧислоСимволов>) връща първите знаци от низа.

точно(<Строка>, <ЧислоСимволов>) - връща последните знаци от низа.

сряда(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - връща низ с дължина<ЧислоСимволов>, започвайки със символ<НачальныйНомер>.

съкращение(<Строка>) съкращава незначещите знаци отляво на първия значим знак в низа.

съкращение(<Строка>) - отрязва незначителните символи вдясно от последния значим знак в низа.

Abbrl(<Строка>) - прекъсва незначещите знаци отляво на първия значим знак в низа и отдясно на последния значим знак в низа.

StrGetString(<Строка>, <НомерСтроки>) – получава низа от многоредов низ по номер.

Други функции:

StrLength(<Строка>) - връща броя знаци в низ.

StrNumber of Lines(<Строка>) - връща броя на редовете в многоредов низ. Един ред се счита за нов, ако е отделен от предишния ред със знак за нов ред.

StrCompare(<Строка1>, <Строка2> ) - сравнява два низа без големи и малки букви. Функцията работи като обект Сравняване на стойности. Се завръща:

  • 1 - ако първият ред е по-голям от втория
  • -1 - ако вторият ред е по-голям от първия
  • 0 - ако низовете са равни

StrCompare("Първи ред" , "Втори ред" ) ; // 1

В процеса на работа със заявки всеки програмист трябва да взаимодейства с празни стойности по един или друг начин. Какво имаме предвид под празна стойност?

Празна стойност е или липсата на стойност, или стойността по подразбиране за тип данни. При примитивните типове нещата са съвсем прости: стойността по подразбиране е някаква начална стойност, която служи като отправна точка.

Видове нули

Помислете за типовете празни стойности, които могат да се срещнат или изискват в заявка.

  • За типа Number празната стойност е нула - 0.
  • За тип String - празен низ - "".
  • За типа Дата първи януари на първата година е 01.01.0001 00:00:00. От тази дата се отчита времето в 1C. *
  • За булевия тип стойността по подразбиране технически е False, но логически стойностите на двата типа се попълват. Следователно решението дали празната стойност е False или не се основава на логиката на определен алгоритъм.

*Внимавайте, извън 1C има различни системи за броене на дати различни точкисправка.

Липсващата стойност отговаря напълно само на типа Нула.Този тип съдържа само една стойност, която обозначава липсата на стойност.

Подобен тип Недефинирансъщо съдържа само една стойност, но Undefined не означава липса на данни, а само невъзможност да се определи стойността по подразбиране за типа. Undefined е стойността по подразбиране за съставни типове, включително тези, които не са изрично дефинирани. Например стойността в нова линиятаблица със стойности в колона, за която типът не е изрично дефиниран.

Така справкавидове е много по-малко двусмислен. Всички референтни типове предоставят празна стойност. Празна стойност е същата препратка с тип данни, но без уникален идентификатор за определена стойност. Благодарение на това можем да третираме празна препратка като нормална и да приложим към нея всички методи, предоставени от платформата, като работим с нея като с пълноценна стойност.

Работа с нулеви стойности в заявка

Независимо дали трябва изрично да въведете нулева стойност в резултата от заявката или да сравните съществуващи стойности с нея, трябва да знаете как да опишете нулеви стойности в заявка.

Видове Число, низ, булевоса описани в заявката като на вградения език:

SELECT 0 AS ExampleTypeNumber, "Hello World" AS ExampleTypeString, True AS ExampleTypeBoolean

Undefined, тъй като по същество е примитивен тип, се описва по подобен начин:

Изберете Lots.Period From Accumulation Register.Lots As Lots Where Remains.BatchDocument = Undefined

Празните референтни стойности са малко по-трудни за дефиниране. Всички референтни обекти имат предварително дефинирана стойност на услугата EmptyReference. Благодарение на това е възможно да изберете празна връзка по един единствен начин - чрез функцията Стойност:

Изберете Стойност(Reference.Nomenclature.EmptyReference) Като празна номенклатура

Възможностите за работа с нулеви стойности са малко по-богати. Подобно на други примитивни типове, Null се описва по същия начин, както във вградения език. Освен това са предоставени специалният оператор Is Null и функцията Is Null.

  • Операторът Is Null ви позволява да създавате булев изразсравняване на избраната стойност с нулевата стойност.
  • Функцията IsNull връща първия аргумент, ако не е Null, и втория аргумент в противен случай.

Изрази, които дефинират нули, могат да се използват във всички секции на заявка, които поддържат изрази. Например можете да добавите нулева връзка към секцията Избор или нулев тест към Условието.

Практически примери

Използване на функцията Стойност

Изберете Goods.Reference As Nomenclature, Goods.Reference = Value(Catalog.Nomenclature.EmptyReference) Като тазиReferenceEmpty From wGoods As wGoods

Използването на оператор Is Null

Изберете Goods.Link като номенклатура, Goods.Link е нула като тазиLinkEmpty

Нула отляво или пълно присъединяване

Нулева проверка

Примерът демонстрира честа практическа ситуация, когато при ляво съединение за първата таблица няма съвпадение във втората. В този случай всички полета на втората таблица ще бъдат равни на Null.

Изберете WProducts.Reference като номенклатура, Remains.QuantityRemainder като количество, Remains.QuantityRemainder е нула като NoRemainder от WProducts като WProducts Ляво присъединяванеНатрупване Register.GoodsIn Warehouses.Remainders As Balances от TueGoods.Reference = Remains.Nomenclature

Работа с нулеви стойности

Модификация на предишната заявка, за да се демонстрира обща техника за получаване на някои стойности по подразбиране вместо липсващи. В този пример, използвайки функцията IsNull, липсващата остатъчна стойност се заменя с логически правилната 0.

Изберете TueProducts.Reference като номенклатура, IsNull(Remains.QuantityRemainder, 0) като количество от TueProducts като WProducts Ляво присъединяванеНатрупване Register.GoodsIn Warehouses.Remainders As Balances от TueGoods.Reference = Remains.Nomenclature

В тази статия разгледахме различните видове празни стойности и техните свойства, проучихме начините за определяне различни видовепразни стойности в заявки, а в практическата част бяхме убедени в лекотата на използване на разглеждания материал.

Тази статия ще обсъди начини за проверка за празна стойност, в зависимост от типа на атрибута, който се проверява, включително нулева препратка.

Стойността NULL се връща, когато атрибутът просто не съществува. Типът в този случай също ще бъде NULL. Например, съединявате две маси чрез ляво съединение. В случай, че не бъде намерена стойност за лявата таблица в дясната, ще бъде върнато NULL.

Провери за дадена стойностможе да се направи с помощта на конструкцията "IS NULL" и "". В първия случай се връща True или False. Във втория случай можете веднага да зададете друга стойност в случай, че се връща NULL.

Заявката 1C 8.3 по-долу ще върне списък с лица за контакт за онези партньори, които нямат набор от сегменти.

ИЗБИРАМ
ContactPartners.Link
ОТ
Справочник.Лица за контакт на партньори AS Лица за контакт на партньори
ВЪТРЕШНО СЪЕДИНЕНИЕ
PO ContactPartners.Owner = SegmentsPartners.Parent
КЪДЕТО
SegmentsPartners.Reference IS NULL

празна дата

Стойността се проверява за празна дата, като се сравнява с конструкцията DATETIME(1, 1, 1, 0, 0, 0). Примерна употреба е дадена по-долу:

Празна връзка в заявка 1C

В случай, че върнатият атрибут има референтен тип, например е елемент от някаква директория, документ и др., се използва следната конструкция: VALUE(Catalog.CatalogName.EmptyReference).

В примера по-долу заявката избира всички партньори, които нямат посочен бизнес регион.

За да проверите за „ValueFilled“, трябва да направите обратното условие:

Партньори.Бизнесрегион<>СТОЙНОСТ(Каталог.Бизнесрегиони.Празна препратка)

Празен ред

За да се проверят типовете низове, се прави сравнение с друг модел. В такъв случай - "".

Заявката по-долу ще избере всички партньори с празно име.