ДокументМенеджер.ПриходнаяНакладная).

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

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

РегистрНакопленияНаборЗаписей.<имя>,перерасчеты ПерерасчетНаборЗаписей.<имя> и т.д.).

Ссылка - объекты этого вида служат для указания ссылки на объект базы данных, и кроме этого предоставляют некоторую


 


550



Краткий справочник разработчика


информацию об этом объекте (например, документ ДокументСсылка<имя>).

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

Список - объекты этого вида предназначены для управления списком объекта, отображаемым в табличном поле (перечисление -ПеречислениеСписок.<имя>). Использовать эти объекты имеет смыл только при выводе информации в табличное поле.


Способы доступа к данным

с

истема 1С:Предприятие 8.0 поддерживает два способа доступа к данным, хранящимся в базе данных:

• объектный (для чтения и записи),

• табличный (для чтения).

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

Например, объект ДокументОбъект.ОказаниеУслуги будет содержать значения всех реквизитов документа «Оказание услуги» и всех его табличных частей.

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

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

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


 


552



Кэш объ


ек


 


Кэш объектов

С

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

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

А = СправочникНоменклатура.ВидНоменклатуры; I

Все данные, находящиеся в кэше, предназначены только для чтения (ReadOnly), таким образом чтение любых данных, получаемых через ссылку, выполняется только через кэш объектов, а запись -механизмами самих программных объектов.

Обычный кэш

Е

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


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

Таким образом, если мы обратимся к кэшу для получения представления объекта, и в кэше есть информация для нашей ссылки, данные будут взяты из кэша (если в кэше весь объект, нужное представление будет получено из данных объекта). Если в кэше нет информации для нашей ссылки - из базы данных в кэш будут считаны только поля, необходимые для формирования представления объекта.

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

Считанные данные будут находиться в кэше до тех пор, пока не наступит одно из трех событий:

• считанные данные будут вытеснены из кэша другими
считанными данными других объектов (переполнение кэша),

• при очередном обращении к кэшу окажется, что считанные
данные были изменены в базе данных,

• закончится интервал времени в 20 минут,

• данные будут изменены в базе данных.

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

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

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


 


554



Краткий справочник разработчика


выполнено повторное считывание данных из базы данных. Начиная с этого момента начнется отсчет следующего 20-ти секундного интервала валидности этих данных.

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

Таким образом при последовательном выполнении двух операторов (где «Номенклатура» - это ссылка на объект справочника):

А = Номенклатура.Наименование; В = Номенклатура.ВидНоменклатуры;

на выполнение второго оператора будет тратиться гораздо меньше времени, поскольку в первом случае будет выполняться обращение к базе данных, а во втором - чтение из оперативной памяти (кэша объектов).

Транзакционный кэш

Е

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

Транзакционный кэш хранит считанные данные до тех пор, пока они не будут вытеснены более поздними считанными данными, или пока не закончится транзакция.

По окончании транзакции транзакционный кэш очищается, однако действия, выполняемые при этом, зависят от состояния завершения транзакции.


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