Как да получите Тип (вид) на документ в заявка? 1s 8 тип стойности в заявка

В тази статия ще анализираме възможностите за преобразуване на типа в езика за заявки 1C, които се предоставят от функцията „Express“.
Нека да разгледаме няколко опции за използване на тази функция.
И първият вариант е закръгляване на числата.

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

Експресно(<Число>като число(<ДлинаЧисла>,<Точность>))

Където:
Номер— полето, което трябва да се закръгли
LengthNumbers— максимална дължина на номера
точност— точност на закръгляването на числата

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

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

За да работи, е необходимо да преобразувате поле с неограничена дължина в низ с определена дължина; това става с помощта на функцията Express в следния формат:

Експресно(<Строка>като низ (<ДлинаСтроки>)

Където
Дължина на линията– максималната дължина, до която низът ще бъде намален.
Нека преработим заявката: в условието ще преобразуваме неограничен низ в низ с определена дължина. Тогава няма да има грешки.

Нека разгледаме последната и, бих казал, най-важната опция за нейното приложение: при работа с полета от съставен тип.
По-долу има две заявки, които използват съставни полета. Първото е грешно, а второто е правилно.

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

Експресно(<Документ>като документ.<ИмяТаблицы>)
Експресно(<Справочник>като Директория.< ИмяТаблицы >)
.

Където
TableName— име на обект в .

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

Ако все още „плувате“ в конструкциите на езика на заявките и дори най-простите заявки създават трудности за вас, тогава ви препоръчвам моя курс „Заявки в 1C от начинаещ до професионалист“. Където тези и много други въпроси са разгледани по-подробно.

Какво е специалното за този курс:
Курсът е предназначен за тези, които не са запознати с езика на заявките в 1C;
Учебният материал е добре подреден и лесен за научаване;
Няколко десетки урока;
Полезни практически примери;
Всички уроци са представени на ясен и прост език

За моите читатели, купон за 25% отстъпка: hrW0rl9Nnx

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

Можете да превеждате произволна сума директно:
Yandex.Money - 410012882996301
Web Money - R955262494655

Присъединете се към моите групи.

43
NULL – липсващи стойности. Да не се бърка с нулева стойност! NULL не е число, не е равно на интервал, празна препратка или Undefined. NULL е типообразуваща стойност, т.е. има тип NULL и една единствена стойност от този тип. НУЛА... 26
За генериране и изпълнение на заявки към таблици на база данни в платформата 1C се използва специален обект на езика за програмиране Query. Този обект се създава чрез извикване на конструкцията New Request. Удобна заявка... 18
Статията предоставя полезни техники при работа с 1C v.8.2 заявки, както и информация, която не е толкова добре известна за езика на заявките. Не се опитвам да дам пълно описание на езика на заявките, но искам да се спра само на... 13
LIKE - Оператор за проверка на низ за сходство с модел. Аналог на LIKE в SQL. Операторът SIMILAR ви позволява да сравните стойността на израза, посочен вляво от него, с низа на модела, посочен вдясно. Значението на израза...

Езикът за заявки 1C е една от основните разлики между версии 7.7 и 8. Една от най-важните точки при изучаването на програмирането на 1C е езикът за заявки. В 1C 8.3 заявките са най-мощният и ефективен инструмент за получаване на данни. Езикът за заявки ви позволява да получавате информация от базата данни по удобен начин.

Самият синтаксис много напомня на класическия T-SQL, с изключение на това, че в 1C, използвайки езика за заявки, можете да получавате данни само с помощта на конструкцията Select. Езикът поддържа и по-сложни конструкции, например (заявка в заявка). Заявките в 1C 8 могат да бъдат написани както на кирилица, така и на латиница.

В тази статия ще се опитам да говоря за основните ключови думи в езика на заявките 1C:

  • избирам
  • позволен
  • различни
  • експрес
  • първи
  • за смяна
  • значение
  • тип стойност (и оператор REFERENCE)
  • избор
  • Групирай по
  • имайки
  • ISNULL
  • Да NULL
  • връзки - дясна, лява, вътрешна, пълна.

Както и някои малки трикове на езика 1C, с помощта на които можете оптимално да конструирате текста на заявката.

За отстраняване на грешки в заявки в системата 1C 8.2 е предоставен специален инструмент - конзолата за заявки. Можете да видите описанието и да го изтеглите, като използвате връзката -.

Нека да разгледаме най-важните и интересни оператори на езика за заявки 1C.

ИЗБЕРЕТЕ

В езика за заявки 1C Enterprise 8 всяка заявка започва с ключова дума ИЗБИРАМ. В езика 1C няма конструкции UPDATE, DELETE, CREATE TABLE, INSERT; тези манипулации се извършват в обектната технология. Целта му е само да чете данни.

Например:

ИЗБИРАМ
Текуща директория.Име
ОТ
Указател.Номенклатура AS Текущ указател

Заявката ще върне таблица с имена на елементи.

В близост до конструкцията ИЗБИРАМможете да намерите ключови думи ЗА СМЯНА, ПОЗВОЛЕН, РАЗЛИЧНИ, ПЪРВО

ПОЗВОЛЕН— избира само записи от таблицата, на които текущият потребител има права.

РАЗЛИЧНИ— означава, че резултатът няма да съдържа дублирани редове.

ИЗБОР (СЛУЧАЙ)

Много често този дизайн се подценява от програмистите. Пример за използването му:

Текуща директория. Име,

WHEN Current Directory.Service THEN

"Обслужване"

КРАЙ КАК ДА РАЗГЛЕДАТЕ Номенклатура

Указател.Номенклатура AS Текущ указател

Примерът ще върне текстова стойност в полето „Тип артикул“ – „Продукт“ или „Услуга“.

КЪДЕТО

Дизайнът на езика за заявки 1C, който ви позволява да налагате селекция върху получените данни. Моля, обърнете внимание, че системата получава всички данни от сървъра и едва след това се избира въз основа на този параметър.

ИЗБИРАМ
Директория.Име
ОТ
Текущ указател. Номенклатура AS Текущ указател
WHERE CurrentDirectory.Service = TRUE

В примера избираме записи, за които стойността на атрибута „Service“ е зададена на „True“. В този пример можем да се справим със следното условие:

„КЪДЕ Е СЕРВИЗЪТ“

По същество ние избираме редове, където изразът след ключовата дума е равен на „Истина“.

Можете да използвате директни условия в изрази:

WHERE Код = "005215"

Използвайки оператора „VALUE()“ в условията, използвайте достъп до предварително дефинирани елементи и изброявания в 1C заявка:

WHERE Тип артикул = Стойност (Изброяване.Типове артикули.Продукт)

Стойностите на времето могат да бъдат посочени, както следва:

WHERE Дата на получаване > DATETIME(2012,01,01):

Най-често условията се задават като параметри, предавани на заявката:

Вземете безплатно 267 видео урока за 1C:

WHERE NomenclatureGroup= &Номенклатурна група

Може да се наложи условие за типа на атрибута, ако той е от съставен тип:

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

КЪДЕ е натрупаният регистър B (&списък на документите за избор).

Условието може да бъде и сложно, състоящо се от няколко условия:

WHERE Дата на получаване > DATETIME(2012,01,01) AND NomenclatureGroup= &NomenclatureGroup AND NOT Service

ГРУПИРАЙ ПО

Дизайн на езика за заявки 1C 8.2, използван за групиране на резултата.

Например:

ИЗБИРАМ
Получаване на стоки и услуги Стоки,.
SUM(Получаване на СтокиУслугиСтоки.Количество) КАТО Количество,
SUM(Получаване на СтокиУслугиСтоки.Сума) КАТО Сума
ОТ
Документ. Получаване на стоки и услуги. КАК Получаване на стоки и услуги

ГРУПИРАЙ ПО
Получаване на СтокиУслугиСтоки.Стоки

Тази заявка ще обобщи всички разписки по сума и количество по артикул.

Освен ключовата дума SUMМожете да използвате други агрегатни функции: КОЛИЧЕСТВО, БРОЙ РАЗЛИЧНИ, МАКСИМУМ, МИНИМУМ, СРЕДНО АРИТМЕТИЧНО.

ИМАЩ

Дизайн, който често се забравя, но е много важен и полезен. Позволява ви да зададете селекция под формата на агрегатна функция, това не може да се направи в дизайна КЪДЕТО.

Пример за използване на HAVING в 1C заявка:

ИЗБИРАМ
Получаване на стоки и услуги Стоки,.
SUM(Получаване на СтокиУслугиСтоки.Количество) КАТО Количество,
SUM(Получаване на СтокиУслугиСтоки.Сума) КАТО Сума
ОТ
Документ. Получаване на стоки и услуги. КАК Получаване на стоки и услуги

ГРУПИРАЙ ПО
Получаване на стоки и услуги Стоки

SUM(Получаване на СтокиУслугиСтоки.Количество) > 5

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

ЗНАЧЕНИЕ()

Например:

WHERE банка = стойност (директория.банки.празна връзка)

WHERE Номенклатурен тип = Стойност (Директория. Номенклатурни типове. Продукт)

WHERE Тип на елемента = Стойност (Изброяване.Типове на артикули.Услуга)

ТИП в заявка

Типът данни може да бъде проверен с помощта на функциите TYPE() и VALUETYPE() или с помощта на логическия оператор REFERENCE.

ЕКСПРЕС()

Операторът Express в 1C заявки се използва за преобразуване на типове данни.

Синтаксис: ЕКСПРЕСНО(<Выражение>КАК<Тип значения>)

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

В практическите приложения операторът Express() много често се използва за конвертиране на полета с неограничена дължина, тъй като полетата с неограничена дължина не могат да бъдат избрани, групирани и т.н. Ако тези полета не бъдат конвертирани, ще получите грешка Не можете да сравнявате полета с неограничена дължина и полета с несъвместими типове.

ИЗБИРАМ
ContactInformation.Object,
EXPRESS(ContactInfo.View AS ROW(150)) AS View
ОТ
Регистър на информация за контакт. Информация за контакт

ГРУПИРАЙ ПО
EXPRESS(Информация за контакт.Представителство AS ROW(150)),
ContactInformation.Object

ISNULL (ISNULL)

Доста полезна функция на езика за заявки 1C, която проверява стойността в записа и дали е равна НУЛА,Това ви позволява да го замените със собствената си стойност. Най-често се използва при получаване на виртуални таблици за баланси и обороти с цел скриване НУЛАи поставете ясна 0 (нула).

ISNULL(Данъци преди месеца. Приложена полза от FSS, 0)

Такава функция на езика за заявки 1C ISNULL ще върне нула, ако няма стойност, което ще избегне грешка.

ПРИСЪЕДИНЯВАНЕ

Има 4 вида връзки: НАЛЯВО, ДЯСНО, ПЪЛЕН, ВЪТРЕШЕН.

ЛЯВО и ДЯСНО ВЪРЗВАНЕ

Съединенията се използват за свързване на две таблици въз основа на конкретно условие. Характеристика, когато ЛЯВО ПРИСЪЕДИНЯВАНЕе, че вземаме първата посочена таблица в нейната цялост и условно свързваме втората таблица. Полетата на втората таблица, които не могат да бъдат обвързани с условие, се попълват със стойността НУЛА.

Пример за ляво присъединяване в 1C заявка:

Той ще върне цялата таблица и ще попълни полето „Банка“ само там, където е изпълнено условието „Име на контрагенти = Име на банки“. Ако условието не е изпълнено, полето Банка ще бъде настроено на НУЛА.

RIGHT JOIN на език 1C 8.3абсолютно подобни ЛЯВА връзка, с изключение на една разлика: в ПРАВО НА СВЪРЗВАНЕ"Основната" маса е втората, а не първата.

ПЪЛНА СВЪРЗВАНЕ

ПЪЛНА СВЪРЗВАНЕсе различава от ляво и дясно по това, че показва всички записи от две таблици и свързва само тези, които може да свърже по условие.

Например:

ПЪЛНА СВЪРЗВАНЕ
Справочник.Банки КАК Банки

ОТ

Езикът за заявки ще върне и двете таблици напълно само ако условието за свързване на записи е изпълнено. За разлика от ляво/дясно свързване, възможно е NULL да се появи в две полета.

ВЪТРЕШНО СЪЕДИНЕНИЕ

ВЪТРЕШНО СЪЕДИНЕНИЕсе различава от пълния по това, че показва само онези записи, които могат да бъдат свързани според дадено условие.

Например:

ОТ
Указател Контрагенти AS Клиенти

ВЪТРЕШНО СЪЕДИНЕНИЕ
Справочник.Банки КАК Банки

ОТ
Клиенти.Име = Банки.Име

Тази заявка ще върне само редове, в които банката и контрагентът имат едно и също име.

Заключение

Това е само малка част от синтаксиса на езика за заявки 1C 8; в бъдеще ще се опитам да разгледам някои точки по-подробно, да покажа и много повече!

Нека да разгледаме останалите сега.

Функции за работа с низове в 1C заявки

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

Първо, могат да се добавят низове в заявките. За да направите това, използвайте оператора "+":

Заявка. Текст = „ИЗБЕРЕТЕ
" "Ред: " " + Source.Name
;

Второ, можете да изберете част от линията. За да направите това, използвайте функцията СУБСТРУКЦИЯ.Функцията е подобна на вградения език 1C. Има три параметъра:

  1. Изходен низ.
  2. Номерът на знака, с който трябва да започне избраният ред.
  3. герои.

Заявка. Текст= "ИЗБИРАМ
ПОДНИЗ("
"Линия:" ", 4, 3) КАТО Резултат"; // Резултат: добре

функция ISNULL

NULL е специален тип данни в платформата 1C:Enterprise. Това е и единствената възможна стойност от този тип. NULL може да се появи в заявки в няколко случая: при свързване на източници на заявка, ако в една от таблиците не е намерена съответстваща стойност; при достъп до детайлите на несъществуващ обект; ако в списъка с полета на заявката е посочено NULL (например при комбиниране на резултати от избор от няколко таблици) и др.

Тъй като NULL не е нито нула, нито празен низ, нито дори стойност неопределен,често е полезно да го замените с някакъв по-полезен тип данни. За това е предназначена функцията. ISNULL.

Има два параметъра:

  1. Стойността, която се проверява.
  2. Стойността, с която да се замени първият параметър, ако се окаже, че е NULL.

Заявка. Текст= "ИЗБИРАМ
ISNULL(Source.Remainder, 0) AS Remainder"
; // Ако резултатът от заявката е остатъкът от полето = NULL,
// тогава ще бъде заменен с 0 и можете да извършвате математически операции с него

Функции ПРОИЗВОДИТЕЛНОСТИ ВЪВЕДЕНИЕ ВРЪЗКИ

Тези функции са предназначени за получаване на низови представяния на различни стойности. Тоест преобразуват препратки, числа, булеви стойности и т.н. в обикновен текст. Разликата между тях е, че функцията ПРОИЗВОДИТЕЛНОСТпреобразува всякакви типове данни в текст (низ) и функцията ВЪВЕДЕНИЕ ВРЪЗКИ- само връзки и връща останалите стойности такива, каквито са, непреобразувани.

Заявка. Текст= "ИЗБИРАМ
ПРЕДСТАВЯНЕ (ВЯРНО) КАТО булево,
ПРЕДСТАВЯНЕ (4) КАТО число,
ПРЕДСТАВИТЕЛСТВО (Източник.Връзка) AS Връзка,
ПРЕДСТАВЯНЕ (ДАТА ЧАС (2016,10,07)) КАТО Дата"
;
// Boolean = "Да", Number = "4", Link = "Документ Касова разписка ордер №... от..."
// Дата = "07.10.2016 0:00:00"

Заявка. Текст= "ИЗБИРАМ
REPRESENTATIONREFERENCE(TRUE) AS Boolean,
РЕФЕРЕНЦИЯ ЗА ПРЕДСТАВЯНЕ(4) КАТО НОМЕР
PRESENTINGLINK(Source.Link) AS Link,
REPRESENTATIONREFERENCE(DATETIME(2016,10,07)) AS Date"
;
// Boolean = TRUE, Number = 4, Link = "Документ Касова разписка ордер №... от..."
// Дата=07.10.2016 0:00:00

Функции ТИПИ ТИП СТОЙНОСТИ

функция ТИПвръща типа данни на платформата 1C:Enterprise.

Заявка. Текст= "ИЗБИРАМ
ТИП (число)
TYPE (низ),
ТИП (Документ. Разходен касов ордер)"
;

функция ТИП СТОЙНОСТИвръща типа на предадената му стойност.

Заявка. Текст= "ИЗБИРАМ
ТИП СТОЙНОСТИ (5) AS Номер,
ТИП ("
"линия" ") AS String,
TYPE (Source.Link) AS Справка
От директорията.Source AS Source"
;
//Number=Номер, String=String, Directory = DirectoryLink.Source

Тези функции са удобни за използване, например, когато трябва да разберете дали дадено поле, получено в заявка, е стойност от някакъв тип. Например, нека вземем информацията за контакт на контрагентите от информационния регистър ContactInformation (там се съхраняват контакти не само на контрагенти, но и на организации, лица и т.н.):

Заявка. Текст= "ИЗБИРАМ

ОТ

КЪДЕТО
VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Counterparties)"
;

функция ЗНАЧЕНИЕ

функция Значениеви позволява да използвате конфигурационни обекти на 1C директно в заявка, без да използвате .

Нека добавим още едно условие към предишния пример. Трябва само да получите телефонните номера на вашите контрагенти.

Заявка. Текст= "ИЗБИРАМ
Информация за контакт. Въведение
ОТ
Регистър на информация за контакт. Информация за контакт
КЪДЕТО
VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Counterparties)
И ContactInfo.Type = VALUE(Enum.ContactInfoTypes.Phone)"
;

Трябва да се отбележи, че тази функция може да се използва само с предварително зададени стойности, т.е. със стойности, които могат да бъдат достъпни директно от конфигуратора. Тоест функцията ЗНАЧЕНИЕне може да се използва с елементи на директория, създадени от потребители, но може да работи с изброявания, с предварително дефинирани елементи на директория, със стойности EmptyLink.

Оператор ВРЪЗКА

Оператор ВРЪЗКАе предназначен да проверява стойностите, върнати от заявка, за да види дали принадлежат към конкретен референтен тип. Същата задача може да бъде изпълнена с помощта на функции ТИПИ ТИП СТОЙНОСТИ(които имат по-широк обхват и бяха обсъдени по-горе).

Например, задачата за избор на информация за контакт с контрагентите може да бъде решена по следния начин:

Заявка. Текст= "ИЗБИРАМ
Информация за контакт. Въведение
ОТ
Регистър на информация за контакт. Информация за контакт
КЪДЕТО
ContactInformation.Object LINK Directory.Counterparties"
;

Оператор ЕКСПРЕСНО

Оператор ЕКСПРЕСНОизползвани в 1C заявки в два случая:

  • когато трябва да промените характеристиките на примитивен тип;
  • когато трябва да превърнете поле със съставен тип данни в поле с един тип.

Примитивните типове данни включват: число, низ, дата, булево.Някои от тези типове данни имат допълнителни характеристики. Тип Номерима дължина и точност, тип линия -дължина или неограничен.

Оператор ЕКСПРЕСНОви позволява да промените не типа данни, а допълнителни характеристики. Например, той може да превърне низ с неограничена дължина в низ с ограничена дължина. Това може да бъде полезно, ако трябва да групирате резултатите от заявката по такова поле. Не можете да групирате по полета с неограничена дължина, затова го преобразуваме в низ с дължина 200 знака.

Заявка. Текст= "ИЗБИРАМ
КОЛИЧЕСТВО (РАЗЛИЧНО Пристигане на стоки и услуги. Връзка) КАТО Връзка
ОТ
Документ. Получаване на стоки и услуги КАК Получаване на стоки и услуги
ГРУПИРАЙ ПО
EXPRESS(Получаване на стоки и услуги. Коментар КАТО РЕД (200))"
;

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

Заявка. Текст= "ИЗБИРАМ
EXPRESS(Движение на стокитеОборот.Поръчка КАТО Документ.Поръчка на клиента).Дата КАТО Дата на поръчка,
Движение на стокооборота. Номенклатура
ОТ
Регистър Натрупвания. Движение на стоки. Оборот AS Движение на стоки Оборот
КЪДЕТО
Движение на Стокооборот. Поръчка ВРЪЗКА Документ. Клиентска поръчка"
;

Оператори ИЗБОРИ Е НУЛЕВ

Оператор ИЗБОРподобно на оператора АКОна вградения език 1C, но има донякъде намалена функционалност.

Да кажем, че искаме да получим информация за контакт от информационния регистър ContactInformation и в същото време да посочим в отделно поле за заявка дали тя принадлежи на контрагент или физическо лице.

Заявка. Текст= "ИЗБИРАМ
Информация за контакт. Въведение,
ИЗБОР
WHEN VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Counterparties)
ТОГАВА "
Контрагент "
ДРУГ ИЗБОР
WHEN VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Individuals)
ТОГАВА "
Индивидуален"
ELSE "Някой друг" "
КРАЙ
КРАЙ КАТО СОБСТВЕНИК
ОТ
Регистър на информация за контакт AS Информация за контакт.
;

Както се вижда от примера, в дизайна ИЗБОРслед думата винаги има условие КОГА;приложена стойност, ако условието е вярно след думата ТОГАВАи приложената стойност, ако условието не е изпълнено, след думата В ПРОТИВЕН СЛУЧАЙ.И трите елемента на дизайна ИЗБОРса задължителни. Пропуснете елемент В ПРОТИВЕН СЛУЧАЙ, по същия начин както при използване на оператора АКОна вградения език 1C е невъзможно. Също и от оператора ИЗБОРняма аналог на дизайна ELSEIF, но можете да инвестирате един ИЗБОРв друг, както беше направено в нашия пример.

Оператор Е НУЛЕВизползвани в дизайна ИЗБОРза сравняване на поле за заявка с тип NULL.

Заявка. Текст= "ИЗБИРАМ
ИЗБОР
КОГАТО СТОЙНОСТТА Е NULL, ТОГАВА 0
ИНАЧЕ Значение
КРАЙ"
;

Освен това операторът Е НУЛЕВможе да се използва в условия на заявка, като например в изречение КЪДЕТО.

внимание! Това е въвеждаща версия на урока, чиито материали може да са непълни.

Влезте в сайта като студент

Влезте като ученик за достъп до учебни материали

Език за заявки 1C 8.3 за начинаещи програмисти: функции и оператори за работа с типове (TYPE VALUE, TYPE, REFERENCE, ISNULL, EXPRESS)

Нека си припомним, че всеки атрибут (свойство, поле) на директория, документ или друг обект на приложение има свой собствен тип. И можем да разгледаме този тип в конфигуратора:

В езика на заявките има цял клас функции и оператори за работа с типове детайли. Нека да ги разгледаме.

Функция TYPE VALUE

Тази функция приема един параметър (стойност) и връща неговия тип. За реквизита, описан на снимката (по-горе) вкусуказател Хранаще бъде върнато следното:

Сега нека да разгледаме реквизита Отличителна чертав указателя градове:

Виждате, че този проп може да бъде един от няколко типа: Линия, Справочник.Вкусове, Справочник.Цветове. Този тип детайли се наричат ​​КОМПОЗИТНИ.

Ако се опитаме да попълним стойността на такъв детайл в режим 1C:Enterprise, системата ще ни попита какъв тип стойност ще бъде въведена:

И едва след нашия избор ще ни позволи да въведем стойността на избрания тип.

По този начин елементите на директория от същия тип ( Справочник.Градове) ще могат да съхраняват в същия атрибут ( Отличителна черта) стойности от различни типове (низ, цветове или аромати).

Можете да видите това сами, като щракнете върху елементите на директорията градовев режим 1C:Enterprise. Вие четете пробна версия на урока, налични са пълни уроци.

Тук стойността на отличителната характеристика е елемент на директория Аромати:

Ето реда:

И тук като цяло е елемент от справочника Цветове:

Това са възможностите, които един съставен тип данни отваря за нас!

Чудя се как ще се държи функцията ТИП СТОЙНОСТИна подпорите Отличителен елемент, имащ съставен тип данни:

Това вече е много интересно. Нека разгледаме всеки ред поотделно.

Типът стойност на отличителната черта за елемента Русия е равен на НУЛА. За първи път се сблъскваме с този тип. Стойностите от този тип се използват единствено за определяне на липсващата стойност при работа с базата данни.

Това е вярно, защото елементът Русия е група, а не обикновен елемент на директория градове, така че няма поле Отличителна черта. И типът на липсваща стойност, както прочетохме по-горе, винаги е равен на НУЛА.

Видът на стойността на отличителната черта за Перм е равен на Аромати. Това е вярно, тъй като стойността на отличителната черта, въведена в базата данни за град Перм, е връзка към елемента на директорията Аромати.

За Красноярск типът атрибут е равен на Цветове, тъй като избраната стойност в базата данни е връзка към елемент от директория Цветове.

За Воронеж типът атрибут е равен на Линия, тъй като стойността, въведена в базата данни, е обикновен низ.

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

Ето това е нещото. Ако отидете до елемента директория градовес име Сао Пауло, тогава ще видите, че полето Отличителна чертаизобщо не е попълнено. Празно е. А всички празни полета от съставен тип имат специално значениеНЕОПРЕДЕЛЕНО .

СЪС НЕОПРЕДЕЛЕНОние също се сблъскваме за първи път. Значение НЕОПРЕДЕЛЕНОизползва се, когато е необходимо да се използва празна стойност, която не принадлежи към друг тип. Точно това е нашето положение. И типа стойност НЕОПРЕДЕЛЕНО, както вероятно вече се досещате, е равно на НУЛА.

Функция TYPE

Необходим е само един параметър - името на примитивния тип ( ЛИНИЯ, НОМЕР, ДАТА, БОЛЕВО), или името на таблицата, чийто тип връзка искате да получите.

Резултатът от тази конструкция ще бъде стойност от тип Type за посочения тип.

Звучи неясно, нали?

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

Да предположим, че трябва да изберем всички записи в директорията градове, които са с композитен реквизит Отличителна чертаима стойност тип ЛИНИЯ:

Сега нека изберем всички записи, които имат стойности на атрибути Отличителна чертаса връзки към елементи на директория Цветове(таблица Справочник.Цветове):

Отстъпление

Както си спомняте, някои елементи от директорията градовенямат реквизит Отличителна черта. функция ТИП СТОЙНОСТИза такива елементи, които произвежда НУЛА.

Как можете да изберете такива елементи в заявка? За това е предвиден специален логически оператор Е НУЛЕВ(да не се бърка с функцията ISNULL, което ще разгледаме по-долу). Вие четете пробна версия на урока, налични са пълни уроци.

Ето пример за използването му:

Страхотен. Но забелязахте ли, че няма елемент от Сао Пауло, тип стойност props Отличителна чертакоито също е раздал НУЛА. защо стана така

Но работата е там, че ситуацията за групи (Русия, Индия, Бразилия), за които попълване на подробности Отличителна чертапринципно невъзможно, тъй като изобщо го нямат, се различава от ситуацията за елемента Сао Пауло, за който попълването на реквизита е възможно, но просто не се попълва и е равно, както помним, на специална стойност НЕОПРЕДЕЛЕНО.

За да изберете всички записи, които имат реквизит Отличителна чертаприсъства, но не е запълнена, трябва да се използва различна конструкция:

Но сравнението с UNDEFINED за определяне на празни (непопълнени) атрибути ще работи само за съставни типове.

Между другото, логическият оператор IS NULL има форма на отрицание, която изглежда така:

Логически оператор LINK

Например, нека изберем от директорията градовесамо онези записи, които имат стойността на съставен атрибут Отличителна чертаса връзка към елемент от директория Аромати:

Както си спомняте, бихме могли да решим същия проблем с помощта на ТИП СТОЙНОСТИИ ТИП:

Функция ISNULL

Функцията е предназначена да замени стойност НУЛАкъм различен смисъл.

Помним, че значението НУЛАсе връща, ако исканият атрибут (поле, свойство) не съществува.

Например реквизит Отличителна чертаза групи директории градове:

функция ISNULLще ни помогне да изведем различна стойност, ако тази стойност е равна на НУЛА. Вие четете пробна версия на урока, налични са пълни уроци. Нека в този случай е редът „Няма такава опора!“:

Оказва се, че ако първият параметър на функцията ISNULLне е равно НУЛА, след което се връща. Ако е NULL, тогава се връща вторият параметър.

Функция EXPRESS

Тази функция е само за полета, които имат съставен тип. Отличен пример за такова поле е имотът Отличителна чертаза елементи на директория градове.

Както си спомняме, съставните полета могат да бъдат един от няколко типа, посочени в конфигуратора.

За поле Отличителна чертатакива валидни типове са ЛИНИЯ, Справочник.ЦветовеИ Справочник.Вкусове.

Понякога става необходимо да се прехвърлят стойностите на съставно поле към определен тип.

Нека изброим всички стойности на полета Отличителна чертада въведете Справка.Цветове:

В резултат на това всички стойности на елементи, които са били от тип Директория.Цветове,останаха запълнени и бяха преобразувани в посочения тип. Всички стойности от други типове ( ЛИНИЯ, Справочник.Вкусове) сега са равни НУЛА. Това е особеността на преобразуването на типове с помощта на функцията ЕКСПРЕСНО.

Можете да прехвърлите тип или към примитивен тип ( БОЛЕВО, НОМЕР, ЛИНИЯ, ДАТА) или към референтен тип. Вие четете пробна версия на урока, налични са пълни уроци. Но типът, към който се прави преобразуване, трябва да бъде включен в списъка с типове за това съставно поле, в противен случай системата ще изведе грешка.

Направете теста

Стартирайте теста

1. Изберете най-правилното твърдение

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

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

4. Важни са празните детайли от съставен тип