Работа с метаданными
Работа с данными Объектные и необъектные данные
Объектные и необъектные данные
Объектные данные
Необъектные данные
Объектные данные
Необъектные данные
Объектные данные Модель хранения данных
Объектные данные Модель хранения данных
Объектные данные Модель хранения данных
Объектные данные Модель хранения данных
Ссылка
Ссылка
Представление ссылочных значений
Контроль ссылочной целостности
Контроль ссылочной целостности
Объект
Объект
Кэширование представлений и объектов
Кэширование представлений и объектов
Кэширование представлений и объектов
Кэширование представлений и объектов
Обычный кэш
Обычный кэш
Обычный кэш
Транзакционный кэш
Транзакционный кэш
Блокировки
Блокировки
Пессимистическая блокировка
Пессимистическая блокировка
Пессимистическая блокировка
Оптимистическая блокировка
Оптимистическая блокировка
Объектные блокировки и транзакции
Необъектные данные. Модель хранения данных
Необъектные данные. Модель хранения данных
Необъектные данные. Модель хранения данных
Необъектные данные. Модель хранения данных
Подчинение регистратору
Подчинение регистратору
Подчинение регистратору
Подчинение регистратору
Уникальность записей
Уникальность записей
329.50K

Lektsia_4_ppsx

1. Работа с метаданными

Встроенный язык 1С:Предприятия позволяет
работать с метаданными.
Концептуальный момент этой работы - доступ к
метаданным предоставляется только на чтение.
Таким образом, средствами встроенного языка
разработчик не может модифицировать
метаданные.
Изменение структуры метаданных возможно
только средствами визуального конструирования в
режиме конфигуратора.

2. Работа с данными Объектные и необъектные данные

3. Объектные и необъектные данные

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

4. Объектные данные

К объектным данным относятся данные
• справочников,
•документов,
•планов видов характеристик,
•планов счетов,
•планов видов расчета,
•бизнес-процессов,
• задач,
•планов обмена.

5. Необъектные данные

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

6. Объектные данные

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

7. Необъектные данные

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

8. Объектные данные Модель хранения данных

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

9. Объектные данные Модель хранения данных

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

10. Объектные данные Модель хранения данных

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

11. Объектные данные Модель хранения данных

Для работы с объектными данными во
встроенном языке существует два основных типа:
•ссылка
•объект.
Значение ссылочного типа
(СправочникСсылка.<имя>, ДокументСсылка.<имя>
и т. д.) используется везде, где требуется однозначно
идентифицировать объект базы данных.
Фактически такое значение представляет собой
внутренний идентификатор, который хранится в
поле Ссылка таблиц базы данных.

12. Ссылка

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

13. Ссылка

Типы ссылок имеют значение по умолчанию — так
называемую пустую ссылку.
Пустая ссылка — это значение ссылки, которому не
соответствует ни один объект в базе данных.
Фактически такой внутренний идентификатор
выглядит следующим образом:
00000000-0000-0000-0000-000000000000
Ссылка позволяет обращаться к свойствам объекта
базы данных, а также получать сам объект. При этом
выполняется чтение информации из базы данных,
поскольку сама ссылка не содержит этих данных.

14. Представление ссылочных значений

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

15. Контроль ссылочной целостности

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

16. Контроль ссылочной целостности

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

17. Объект

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

18. Объект

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

19.

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

20. Кэширование представлений и объектов

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

21. Кэширование представлений и объектов

Кэш или кеш («прятать») – промежуточный буфер с
быстрым доступом к нему, содержащий информацию,
которая может быть запрошена с наибольшей
вероятностью.
Кэширование применяется ЦПУ, жесткими дисками,
браузерами, веб-серверами, службами DNS и WINS.
Доступ к данным в кэше осуществляется быстрее, чем
выборка исходных данных из более медленной памяти
или удаленного источника, однако ее объем существенно
ограничен по сравнению с хранилищем исходных
данных.

22. Кэширование представлений и объектов

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

23. Кэширование представлений и объектов

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

24. Обычный кэш

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

25. Обычный кэш

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

26. Обычный кэш

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

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

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

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

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

29. Блокировки

30. Блокировки

При работе с объектными данными система
обеспечивает два вида блокировок
•пессимистическую и
•оптимистическую.
Блокировки позволяют выполнять целостные
изменения объектов при одновременной работе
нескольких пользователей.

31. Пессимистическая блокировка

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

32. Пессимистическая блокировка

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

33. Пессимистическая блокировка

Разработчик для задействования
пессимистической блокировки может использовать
метод объекта Заблокировать().
Этот метод позволяет установить
пессимистическую блокировку объекта и запретить
изменение данных объекта базы данных другими
сессиями и другими алгоритмами в текущей сессии.
Для снятия пессимистической блокировки
разработчик может использовать метод объекта
Разблокировать().

34. Оптимистическая блокировка

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

35. Оптимистическая блокировка

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

36. Объектные блокировки и транзакции

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

37. Необъектные данные. Модель хранения данных

К необъектным данным в 1С:Предприятии
относятся данные следующих объектов
конфигурации:
•регистр сведений
•регистр накопления
•регистр бухгалтерии
•регистр расчета
•перерасчет
•последовательность
•константа.

38. Необъектные данные. Модель хранения данных

Необъектные данные с точки зрения
1С:Предприятия представляют собой некоторый
набор записей, которые хранятся в таблице.
Каждая из этих записей полностью описывается
значениями своих полей.
Для системы эти записи не обладают какой-либо
значимостью, кроме того, что в их полях содержатся
некоторые значения.

39. Необъектные данные. Модель хранения данных

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

40. Необъектные данные. Модель хранения данных

Второе важное отличие заключается в том, что,
изменив значения полей записи, мы получаем другую
запись, в то время как изменение значений полей объекта
не влечет за собой появление нового объекта.
Объект всегда обладает некоторой «самостью», которая
не зависит от значений его полей.
Большинство необъектных сущностей конфигурации
имеют общий порядок работы с данными.
Из всей совокупности необъектных сущностей
выделяются только константы: для каждой константы в
базе данных хранится одно значение.

41. Подчинение регистратору

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

42. Подчинение регистратору

Записи, относящиеся к одному регистратору,
называются движениями этого регистратора.
Движения не являются частью владеющего ими
документа, при записи и чтении документа они не
записываются и не считываются. Однако они тесно
связаны с ним.
Движения могут создаваться при проведении
документа, могут удаляться при отмене проведения
документа. Кроме этого, при удалении документа его
движения всегда удаляются.

43. Подчинение регистратору

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

44. Подчинение регистратору

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

45. Уникальность записей

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

46. Уникальность записей

Для всех необъектных сущностей, подчиненных
регистратору, ключ записи включает
•ссылку на регистратор и
•номер строки.
Номер строки используется для обеспечения
уникальности записей, а также для упорядочивания
записей в пределах регистратора.
В состав ключа записи могут входить и другие поля,
например, период, измерения регистра — для
необъектных сущностей, не подчиненных регистратору.
Наличие уникального ключа требуется системе для
решения различных задач.
English     Русский Rules