Что такое ссылочный тип данных 1с

Особенности использования типов данных, предназначенных для манипулирования объектами базы данных

Рассмотрим состав типов, используемых для манипулирования этими сущностями в конфигурации. Мы будем рассматривать состав типов и их использование на примере справочника. Для других перечисленных объектов метаданных имеется аналогичный состав типов.

Тип СправочникМенеджер предоставляют доступ к общим действиям, относящимся к конкретному справочнику. С помощью его методов выполняются действия, относящиеся к справочнику, а не к его конкретным объектам. Например, его методы позволяют создать новый объект или найти объект по коду. Менеджер является своего рода «точкой входа» в конкретный справочник в объектной модели встроенного языка.

Заметим, что объекты типа СправочникиМенеджер и СправочникМенеджер имеются в системе в единственном экземпляре.

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Справочник хранится в таблице. Запись таблицы определяет объект базы данных – элемент справочника. Объект базы данных включает не только запись в основной таблице справочника, но и все записи всех табличных частей справочника, относящиеся к данному объекту. Таким образом, объект базы данных представляет собой запись основной таблицы и строки табличных частей.

Назначение типов СправочникСсылка и СправочникОбъект существенно различается. Значение типа СправочникСсылка – хранит ссылку, идентифицирующую объект в базе данных, а значение типа СправочникОбъект позволяет считывать и записывать данные объекта.

Значение типа СправочникСсылка используется везде, где нужно хранить ссылку на элемент. Фактически значение СправочникСсылка хранит только внутренний идентификатор, хранящийся в поле Ссылка таблицы справочника. Это значение хранится в полях других таблиц базы данных, выбирается в поле ввода, указывается в параметрах запроса при поиске по ссылке и т.д. Важно, что значение типа СправочникСсылка можно сравнивать с другим значением типа СправочникСсылка и они буду всегда равны, если это ссылка на один и тот же объект в базе данных (независимо от способа получения и от того откуда получено значение).

Объект может быть создан с помощью менеджера справочника. В этом случае создается новый объект, которого еще нет в базе данных. Если его записать, то появится новый объект в базе данных. Объект может быть получен из ссылки. В этом случае из базы данных считывается существующий объект, на который указывает ссылка. Объект также может быть получен из выборки ( СправочникВыборка ). В этом случае данные объекта заполняются данными, считанными в процессе считывания выборки.

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

СправочникОбъект оптимизирует запись изменений в базу данных. Например, Если не менялись реквизиты самого объекта, то будет записываться только минимальная информация об изменении. Если не менялись строки табличной части, то табличная часть не будет записываться. Если менялись только отдельные строки или добавлялись строки, то будут записываться только измененные и добавленные строки. Однако если строки удалялись или изменялся порядок строк, то будут записываться все строки табличной части.

Для объектов обеспечивается оптимистическая блокировка. То есть объект не может быть записан, если он был изменен в базе данных после считывания. Этот механизм обеспечивает логическую целостность изменения объектов. Каждый, кто меняет объект, может быть уверен, что его изменения не «затрут» изменений сделанных другими пользователями (сессиями) или другими объектами в этой же сессии. Такая блокировка не препятствует изменению объекта другими сессиями или этой сессией. Однако если с момента считывания объекта и до попытки его записи объект был изменен в базе данных, то запись не будет выполнена.

Тип СправочникСписок предназначен для динамического просмотра данных справочника в элементе управления ТабличноеПоле. У него может быть настроен состав считываемых полей (колонок), отбор и сортировка. Список осуществляет считывание данных порциями в процессе навигации пользователем в табличном поле.

Кроме указанных типов значений справочник определяет несколько расширений элементов управления и форм, предназначенных для интерактивного ввода и просмотра, данных справочника. Расширения не являются типами данных, а добавляют специфические свойства, методы и события к соответствующим объектам. Кроме того, расширения определяют некоторое специфическое поведение форм и элементов управления при конфигурировании и работе пользователя с системой.

Источник

Типы значений в 1С 8.3

В данной статье мы подробно рассмотрим основные типы значений в 1С — примитивные, ссылочные, системные типы значений, а также познакомимся с основными приемами работы с типами значений.

Содержание

Вместо предисловия

Статья не ставит целью пересказ встроенной справки или руководства разработчика. Подразумевается, что читатели самостоятельно могут посмотреть необходимую информацию в синтакс-помощнике, глоссарии терминов 1С, или другой документации.

Примитивные типы значений в 1С

Значения примитивных типов не содержат в себе ничего, кроме литерала своего типа. Например, значение типа число может определяться литералом 12345, типа строка — «12345», типа булево — Истина, и т.д.

Всего примитивных типов в 1С шесть:

Значения примитивных типов могут преобразовываться к другим типам. Для явного преобразования используются соответствующие методы глобального контекста — например, Строка(12345) приведет число к строке, Дата(«20210101») — преобразует строку в дату 01.01.2021, и др.

Но самое интересное начинается при неявном преобразовании типов. Значения преобразуются по определенным правилам. Так, например, второй операнд и последующие преобразуются к первому операнду выражения, до тех пор, пока это подразумевается используемыми операторами Т.е. если первым идет число, последующие операнды также будут преобразовываться к числу, если строка — к строке.
Но если в выражении попадается оператор, который работает только с конкретным типом, то будет повторное преобразование к этому типу.

Значение типа Неопределено — это специальное значение, которое используется как значение по умолчанию для полей составных типов, а также для обозначения неуказанного значения. Объявленные переменные, в которые еще не поместили значение, будут иметь тип Неопределено.

Значение Null — это литерал, обозначающий отсутствие значения в выборке данных. Прежде всего это значение используется при работе с запросами, например, при левом соединении двух таблиц, отсутствующие значения в левой таблице будут заменены значениями Null. Также значение Null будет иметь реквизит иерархического справочника для элемента-группы, если в свойствах реквизита указано, что данный реквизит используется только для элементов. Аналогично для реквизитов, которые используются только для групп, их значения в обычных элементах справочника будут равны Null.

Прикладные типы значений

Прикладные типы значений создаются платформой, когда разработчик добавляет новые прикладные объекты — документы, справочники, регистры и т.д. При этом при создании одного прикладного объекта становятся доступны сразу несколько прикладных типов данных. Например, при добавлении в конфигурацию справочника «Пользователи», платформа создаст следующие типы:

Каждый прикладной тип служит для определенной функциональности — например, ссылка нужна для доступа к свойствам конкретного элемента на чтение, объект — для возможности редактировать свойства это элемента, выборка — для перебора коллекции элементов, и т.п.

Изначально прикладные типы платформой не поддерживаются, и существуют только в конкретном прикладном решении. Следует иметь в виду, что при создании двух разных справочников, даже с одинаковым набором реквизитов, например «Покупатели» и «Поставщики», для платформы это будут разные типы данных, несмотря на одинаковый реквизитный состав, и унаследованную базовую функциональность типа «Справочники».

Интерфейсные типы данных в 1С

К интерфейсным типам относятся типы данных, позволяющие организовать интерактивное взаимодействие прикладного решения с пользователем. Прежде всего, это типы, связанные с формами и их элементами, например «КнопкаФормы», «ПолеФормы» и др. Также к интерфейсным типам данных относятся значения, позволяющие работать с избранным, историей, окном клиентского приложения, и т.д.

Общие типы данных

Платформа предоставляет специфичные объекты языка, отвечающие за различную функциональность: ТабличныйДокумент, Диаграмма, ПостроительЗапроса, Картинка и др.

В отличие от примитивных типов, значения общих типов представляют собой совокупность значений свойств конкретного объекта. Каждое значение общего типа называется «экземпляром объекта», и создается ключевым словом Новый — Новый ТекстовыйДокумент, Новый ХранилищеЗначения, и т.д.

Универсальные коллекции значений

Для работы с временными наборами данных в течение сеанса работы пользователя используются универсальные коллекции, такие как Массив, ТаблицаЗначений, Структура и др. Они не являются объектами базы данных, и в ней не хранятся. Универсальные коллекции используются для сбора, группировки, анализа и обработки данных.
Значения типа универсальной коллекции создаются при помощи ключевого слова Новый, например — Новый СписокЗначений, Новый ДеревоЗначений.
Платформа также предоставляет разработчику связанные типы значений, такие как КолонкаТаблицыЗначений, СтрокаДереваЗначений, КлючИЗначение, для работы с содержимым универсальных коллекций.

Следует учитывать, что два одинаковых экземпляра универсальной коллекции для платформы будут разными объектами, даже если эти два экземпляра полностью идентичны.

Составные типы значений

Реквизиты объектов конфигурации могут иметь составной тип. Например, для реквизита «Платежный документ» может быть указаны типы «Приходная накладная», «Авансовый отчет», «Оприходование товаров». В этом случае разработчик указывает, что реквизит имеет составной тип, и отмечает нужные типы на этапе конфигурирования, а пользователь в процессе эксплуатации может выбрать в реквизит значение одного из доступных типов. Следует иметь в виду, что в каждый конкретный момент времени значение имеет только один конкретный тип. Если значение составного типа не указано, тип будет Неопределено. Одновременно двух типов значение составного типа быть не может.

Проверка типа конкретного значения

При реализации прикладной логики, часто возникает необходимость проверить, к какому типу принадлежит то или иное значение. Например, если в параметр процедуры передана структура — реализуется одно поведение, а если единственное значение — то другое.

Для такой проверки используется два метода глобального контекста: Тип и ТипЗнч.

Пример. Реквизит Плательщик имеет составной тип — плательщиками могут быть Сотрудники и Контрагенты. Нам нужно проверить, что выбранное значение реквизита является элементом справочника Контрагенты:

Источник

Что такое ссылочный тип данных 1с

В предыдущей статье типы и значения 1С — мы начали обсуждать что такое типы значений 1С и преобразование типов 1С.

Сегодня мы поговорим подробнее про типы объектов конфигурации 1С (тип документа 1С, тип справочника 1С и др.)

Так как в программном коде мы работаем со значениями, то периодически требуется знать их тип. Тип 1С всегда указывается в метаданных у реквизитов — в справочниках, документах.

Работа с типами 1С часто используется:

Тип 1С можно получить:

Типы 1С можно разделить на три вида:

Определение типа 1С и сравнение типов 1С

Узнать тип значения 1С можно с помощью функции ТипЗнч(Переменная)

Чтобы понять какой тип 1С эта функция вернула – нужно указать нужный нам Тип(«ИмяТипа»)

Например, определение (сравнение) типа 1С переменной:
Если ТипЗнч(Переменная) = Тип(«ИмяТипа») Тогда

Какие типы писать в качестве ИмяТипа?

Базовые типы 1С — число, строка, дата, булево.

Например:
Знч = 12;
Если ТипЗнч(Знч) = Тип(«Число») Тогда
ИначеЕсли Знч = Тип(«Строка») Тогда
ИначеЕсли Знч = Тип(«Дата») Тогда
ИначеЕсли Знч = Тип(«Булево») Тогда
КонецЕсли;

1С хранит данные в базе данных, но не в виде отдельных записей, а в виде объектов.

Большинство сохраняемых объектов (в том числе: справочники, документы, перечисления, бизнес-процессы, задачи) доступны в виде Объекта (для изменения и записи) и в виде Ссылки (для чтения). Подробнее см. «Ссылки и объекты».

Например:
Знч = Справочники.Организации.ПустаяСсылка();
Если ТипЗнч(Знч) = Тип(«СправочникСсылка.Организации») Тогда
ИначеЕсли Знч = Тип(«СправочникОбъект.Организации») Тогда
ИначеЕсли ТипЗнч(Знч) = Тип(«ДокументСсылка.ПоступлениеТоваров») Тогда
ИначеЕсли Знч = Тип(«ДокументОбъект.ПоступлениеТоваров») Тогда
КонецЕсли;

Регистры могут быть представлены различными типами. Имя типа регистра составное:
РегистрТипрегистраТипдоступа.ИмяРегистра

Типов доступов к регистру несколько. Чаще всего используются:

Итого, пример:
Если ТипЗнч(Знч) = Тип(«РегистрСведенийСписок.ИмяРегистра») Тогда
ИначеЕсли Знч = Тип(«РегистрНакопленияНаборЗаписей.ИмяРегистра») Тогда
КонецЕсли;

Язык 1С позволяет работать со множеством объектов, создаваемых динамически в программе, например – массив, список значений, таблица значений, структура…

Такие типы 1С указываются по их названию (одним словом, без пробелов). Например:
Если ТипЗнч(Знч) = Тип(«Массив») Тогда
ИначеЕсли Знч = Тип(«СписокЗначений») Тогда
КонецЕсли;

Определение значения ссылочного типа 1С

Работа со всеми объектами базы данных (справочники, документы…) ведется через ссылки. Например, если мы хотим в документе сделать реквизит – справочник, то его тип 1С будет «СправочникСсылка.ИмяСправочника».

Мы можем определить является ли ссылка справочником или документом с помощью метода ТипВсеСсылки()

Например:
Значение = Справочники.Организации.ПустаяСсылка();
Если Справочники.ТипВсеСсылки().Содержит( ТипЗнч(Значение) ) Тогда
//это справочник
ИначеЕсли Документы.ТипВсеСсылки().Содержит( ТипЗнч(Значение)) Тогда
//это документ
КонецЕсли;

Работа с типами 1С в запросе

В запросе тип 1С можно проверить двумя способами.

Первый – аналогично описанному, но в имени типа 1С не указывается «Ссылка» или «Объект», то есть вместо «СправочникСсылка.Организации» пишем «Справочник.Организации»

Получение доступных типов 1С

Работа с типами 1С реквизитов в метаданных конфигурации

При добавлении и редактировании реквизитов в конфигураторе программист указывает тип(ы) 1С реквизита. В программном коде на языке 1С можно получить (узнать) тип(ы) 1С реквизита.

Подробнее про работу с метаданными см. далее «Работа с метаданными».

Как работать с этим списком типов 1С – см. «ОписаниеТипов» в разделе «Язык 1С».

Указать фильтр типов 1С

У многих объектов возможно указать фильтр типов значений 1С, возможных к использованию, например:

Чтобы указать список типов 1С для фильтра – используется список типов 1С, как с ним работать – см. «Описание типов» в разделе «Язык 1С».

Источник

Система типов

Система типов — это особая система, по которой организуются данные, используемые прикладными решениями. Система типов позволяет представить информацию реального мира в терминах, «понятных» для «1С:Предприятия 8».

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

Описание системы типов содержится в синтакс-помощнике, во встроенной справке и в документации.

Основной особенностью системы типов является то, что есть типы, существующие в любом прикладном решении. Сами эти типы определены на уровне платформы и присутствуют всегда, независимо от действий разработчика. Наряду с ними в конкретном прикладном решении могут существовать различные типы данных, присущие именно этому конкретному прикладному решению. Для таких типов данных на уровне платформы определены лишь общие правила их создания, шаблоны. А конкретные типы данных создаются платформой уже исходя из того, каким образом разработчик формирует и модифицирует структуру прикладного решения.

Типы данных, определенные на уровне платформы

Набор типов, которыми могут оперировать прикладные решения, довольно разнообразен. Он позволяет решать как задачи обработки данных, так и задачи представления этих данных пользователю и интерактивной работы с ними. Можно выделить несколько основных категорий типов данных.

Примитивные типы

Примитивные типы данных — это такие типы как Строка, Число, Дата, Булево и другие. Эти типы не являются чем-то особенным для «1С:Предприятия 8». Как правило, такие типы данных существуют и в других программных системах.

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Значения примитивных типов являются простыми неделимыми значениями, в которых нельзя выделить отдельные составляющие. Например, значениями типа Число могут быть 1, 8, 15 и др. Чтобы создать значение примитивного типа, в тексте программы нужно указать его литерал — символьный идентификатор значения.

Универсальные коллекции значений

Также, существуют более сложные типы данных. Например, платформа поддерживает целый ряд типов, которые представляют собой универсальные коллекции значений: Массив, Структура, СписокЗначений и другие.

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Общие типы

Кроме этого в платформе реализованы специфические типы данных, реализующие ту или иную функциональность прикладных решений: ТекстовыйДокумент, ТабличныйДокумент, ХранилищеЗначения, ПостроительЗапроса и другие.

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Общие типы называют также общими объектами. Значения этих типов, в отличие от значений примитивных типов, представляют собой совокупность значений отдельных свойств объекта. Поэтому их называют экземплярами объектов.

Экземпляры объектов создаются с помощью специального оператора встроенного языка — Новый.

Интерфейсные типы

Интерфейсные типы позволяют организовывать визуальное взаимодействие прикладного решения с пользователем. В основном это типы, связанные с работой форм и их элементов.

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Типы данных, образуемые в прикладном решении

Однако, наряду с типами данных, которые определены на уровне платформы, конкретное прикладное решение может использовать уникальные типы данных, существующие только в этом конкретном прикладном решении. Причем платформа будет полностью поддерживать работу с этими типами данных точно так же, как и с типами, которые определены на уровне самой платформы.

Как правило, появление новых типов данных в прикладном решении связано с использованием прикладных объектов конфигурации. Поэтому такие типы называют еще прикладными типами или прикладными объектами.

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

На уровне платформы поддерживается несколько классов (шаблонов) прикладных объектов, которые сами по себе не могут быть использованы в конкретном прикладном решении. Например, можно перечислить такие классы прикладных объектов как Справочники, Документы, Регистры сведений, Планы видов характеристик и пр.

Для каждого класса прикладных объектов определена соответствующая ему базовая функциональность: типы таблиц базы данных, которые должны быть созданы для хранения данных, типовые формы, типовые объекты языка, наборы прав и пр.

Разработчик, создавая прикладное решение, не имеет возможности использовать эти классы напрямую, однако может добавить в свое прикладное решение новый объект конфигурации, наследующий всю функциональность того или иного класса:

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Например, разработчик может добавить в свое прикладное решение новый справочник Номенклатура, который будет наследовать функциональность класса Справочники, или новый документ КассовыйОтчет, который будет наследовать функциональность класса Документы.

Сразу же после такого добавления разработчику становятся доступны новые типы данных, состав которых определяется принадлежностью объекта конфигурации к тому или иному классу прикладных объектов.

Система типов описывает лишь общую «структуру» такого типа, правила, по которым будут формироваться объекты этого типа. Конкретное имя типа, состав свойств и методов объекта будут зависеть от того, как разработчик назовет объект конфигурации и какие, например, реквизиты, табличные части он в него добавит.

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Следует еще раз отметить, что эти типы данных не поддерживаются платформой изначально, и существуют только в конкретном прикладном решении.

Еще один момент, на котором следует акцентировать внимание, проще всего продемонстрировать на примере.

Допустим, в прикладном решении созданы два новых справочника: Номенклатура и Цены. Несмотря на то, что оба эти объекта унаследовали функциональность соответствующего класса Справочники, и для них в прикладном решении был создан один и тот же состав типов данных, «одноименные» типы данных будут являться различными типами данных. Например, СправочникОбъект.Номенклатура и СправочникОбъект.Цены — это различные типы данных.

Так происходит потому, что разработчик может дополнительно к базовой функциональности, унаследованной от соответствующего класса, добавить свою, особенную для каждого объекта конфигурации. Например, оба упомянутых выше справочника могут содержать табличные части (это унаследовано от класса Справочники). Однако для справочника Цены разработчик не создаст ни одной табличной части, в то время как для справочника Номенклатура он создаст, например, три табличные части. Очевидно, что структура хранения данных типа СправочникОбъект.Номенклатура будет значительно отличаться от структуры хранения данных типа СправочникОбъект.Цены.

Источник

Что такое ссылочный тип данных 1с

Войдите как ученик, чтобы получить доступ к материалам школы

Язык запросов 1С 8.3 для начинающих программистов: функции и операторы для работы с типами (ТИПЗНАЧЕНИЯ, ТИП, ССЫЛКА, ЕСТЬNULL, ВЫРАЗИТЬ)

Автор уроков и преподаватель школы: Владимир Милькин

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

В языке запросов существует целый класс функций и операторов для работы с типами реквизитов. Давайте рассмотрим их.

Функция ТИПЗНАЧЕНИЯ

Эта функция принимает один параметр (значение) и возвращает его тип. Для описанного на картинке (выше) реквизита Вкус справочника Еда вернётся следующее:

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Если мы запросим тип поля Наименование, то, как и ожидается, получим Строка:

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

А теперь давайте рассмотрим реквизит ОтличительныйПризнак у справочника Города:

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Если мы попытаемся заполнить значение такого реквизита в режиме 1С:Предприятие, то система спросит нас, какого типа будет вводимое значение:

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

И только после нашего выбора позволит ввести значение выбранного типа.

Таким образом, элементы справочника одного вида (Справочник.Города) смогут хранить в одном и том же реквизите (ОтличительныйПризнак) значения разных типов (Строка, Цвета или Вкусы).

Вы можете убедиться в этом сами пощёлкав по элементам справочника Города в режиме 1С:Предприятие. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Здесь значение отличительного признака является элементом справочника Вкусы:

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

А здесь вообще элементом справочника Цвета:

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Вот какие возможности открывает перед нами составной тип данных!

Интересно, как поведёт себя функция ТИПЗНАЧЕНИЯ на реквизите ОтличительныйПризнак, имеющий составной тип данных:

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Это уже очень интересно. Давайте разбираться с каждой строкой в отдельности.

Тип значения отличительного признака для элемента Россия равен NULL. Мы впервые сталкиваемся с этим типом. Значения данного типа используются исключительно для определения отсутствующего значения при работе с базой данных.

Так и есть, ведь элемент Россия является группой, а не обычным элементом справочника Города, поэтому у него отсутствует поле ОтличительныйПризнак. А тип у отсутствующего значения, как мы прочитали выше, всегда равен NULL.

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

Для Красноярска тип признака равен Цвета, потому что значение выбранное в базе является ссылкой на элемент справочника Цвета.

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

Индия снова группа, поэтому значение отсутствует. А тип у отсутствующего значения, как мы помним, равен NULL.

Далее всё аналогично, кроме Сан-Паулу. Это не группа, а обычный элемент справочника (город), но тип его значения пустой. Как так?

С НЕОПРЕДЕЛЕНО мы также сталкиваемся впервые.

Значение НЕОПРЕДЕЛЕНО применяется, когда необходимо использовать пустое значение, не принадлежащее ни к одному другому типу. Это как раз наша ситуация.

А тип для значения, которое не принадлежит ни к одному из типов, как вы уже наверное догадались отсутствует.

Функция ТИП

Результатом данной конструкции будет значение типа Тип для указанного типа.

Давайте рассмотрим применение данной конструкции и всё сразу станет на свои места.

Пусть нам требуется отобрать все записи справочника Города, у которых составной реквизит ОтличительныйПризнак имеет значение типа СТРОКА:

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Теперь давайте отберём все записи, у которых значения реквизита ОтличительныйПризнак являются ссылками на элементы справочника Цвета (таблица Справочник.Цвета):

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Отступление

Как вы помните, некоторые элементы справочника Города не имеют реквизита ОтличительныйПризнак. Функция ТИПЗНАЧЕНИЯ для таких элементов выдаёт NULL.

Как можно сделать отбор таких элементов в запросе? Для этого предусмотрен специальный логический оператор ЕСТЬ NULL (не путать с функцией ЕСТЬNULL, которую мы рассмотрим ниже). Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Вот пример его использования:

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Но есть и такие элементы (Сан-Паулу), у которых реквизит ОтличительныйПризнак (составного типа) просто не заполнен и равен специальному значению НЕОПРЕДЕЛЕНО.

Чтобы отобрать такие записи следует использовать другую конструкцию:

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Но сравнение с НЕОПРЕДЕЛЕНО для определения пустых (не заполненных) реквизитов будет работать только для составных типов.

Кстати, у логического оператора ЕСТЬ NULL форма отрицания выглядит следующим образом:

Логический оператор ССЫЛКА

К примеру, давайте выберем из справочника Города только те записи, у которых значение составного реквизита ОтличительныйПризнак являются ссылкой на элемент справочника Вкусы:

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Как вы помните, эту же задачу мы могли бы решить используя ТИПЗНАЧЕНИЯ и ТИП:

Функция ЕСТЬNULL

Функция предназначена для замены значения NULL на другое значение.

Мы помним, что значение NULL возвращается в том случае, если запрашиваемый реквизит (поле, свойство) не существует.

Как например, реквизит ОтличительныйПризнак для групп справочника Города:

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Функция ЕСТЬNULL поможет нам вывести другое значение в том случае, если это значение равно NULL. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Пусть в данном случае это будет строка «Такого реквизита нет!»:

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

Получается, что если первый параметр функции ЕСТЬNULL не равен NULL, то возвращается он. Если же он равен NULL, то возвращается второй параметр.

Функция ВЫРАЗИТЬ

Как мы помним, составные поля могут быть одного из нескольких типов, указанных в конфигураторе.

Для поля ОтличительныйПризнак такими допустимыми типами являются СТРОКА, Справочник.Цвета и Справочник.Вкусы.

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

Давайте приведём все значения поля ОтличительныйПризнак к типу Справочник.Цвета:

Что такое ссылочный тип данных 1с. Смотреть фото Что такое ссылочный тип данных 1с. Смотреть картинку Что такое ссылочный тип данных 1с. Картинка про Что такое ссылочный тип данных 1с. Фото Что такое ссылочный тип данных 1с

В результате, все значения элементов, которые имели тип Справочник.Цвета, остались заполненными и оказались приведенными к указанному типу. Все значения других типов (СТРОКА, Справочник.Вкусы) теперь стали равны NULL. В этом состоит особенность приведения типа при помощи функции ВЫРАЗИТЬ.

Приводить тип можно или к примитивному типу (БУЛЕВО, ЧИСЛО, СТРОКА, ДАТА) или к ссылочному типу. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Но тип, к которому делается приведение, обязательно должен входить в список типов для данного составного поля, иначе система выдаст ошибку.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *