Similar presentations:
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. Уникальность записей
Для всех необъектных сущностей, подчиненныхрегистратору, ключ записи включает
•ссылку на регистратор и
•номер строки.
Номер строки используется для обеспечения
уникальности записей, а также для упорядочивания
записей в пределах регистратора.
В состав ключа записи могут входить и другие поля,
например, период, измерения регистра — для
необъектных сущностей, не подчиненных регистратору.
Наличие уникального ключа требуется системе для
решения различных задач.