Вопрос. Работа со значениями агрегатного типа данных.

Вопрос. Типы данных, поддерживаемые в конфигураторе.

3.1. Базовые типы данных

В языке поддерживаются следующие базовые типы данных:

· числовой;

· строковый;

· дата.

Все базовые типы данных могут преобразовываться из одного типа в другой.

3.2. Агрегатные типы данных

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

Сч = СоздатьОбъект("Счет");Т = СоздатьОбъект("Таблица"); Дк = СоздатьОбъект("Документ");

У этого типа данных есть методы и атрибуты, которые зависят от того, на основании какого объекты вы создали этот тип. Общая идея работы такая:

Создать объект Выбрать элемент Использовать методы и атрибуты

Конкретные значения существующих агрегатных типов данных могут быть определены в программном модуле двумя способами:

· некоторые значения заранее известны в программном модуле из его глобального и локального контекста;

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

Каждый агрегатный тип данных, как правило, имеет набор атрибутов и методов.

Атрибуты по свойствам напоминают переменные, т. е. им можно присваивать значения.

Существует стандартный набор агрегатного типа данных (таб.1):

 

Таблица 1. Агрегатные типы данных

Константа Справочник Перечисления Документ Регистр ПланСчетов
Счет ВидСубконто Операция БухгалтерскиеИтоги Запрос Текст
ЖурналРасчетов ВидРасчета Календарь ГруппаРасчетов Картинка Таблица
СписокЗначений ТаблицаЗначений Периодический ФС    

 


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

Каждое значение агрегатного типа в системе 1С:Предприятие включает две составляющие:

· внутренний идентификатор объекта данных;

· ссылка на объект доступа.

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

A = B;

при условии, что переменная B имела значение агрегатного типа и уже имела ссылку на объект доступа, переменные A и B будут ссылаться на один и тот же объект доступа. В отличие от базовых типов (число, строка, дата), для которых при присваивании копируется само значение, при присваивании агрегатных типов копируется не объект доступа, а только ссылка на него.

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

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

Надо отметить, что объекты доступа продолжают существовать до тех пор, пока на них есть ссылки.