Справочники
Справочники – это прикладные объекты конфигурации, предназначенные для хранения данных, имеющих одинаковую структуру и списочный характер.
По умолчанию любой элемент справочника содержит два обязательных реквизита для заполнения пользователем, это Код и Наименование.
Эти реквизиты являются стандартными, кроме них у справочника еще
существует ряд стандартных реквизитов, которые можно посмотреть в
отдельном окне «Стандартные реквизиты». Имена у стандартных реквизитов изменить нельзя.
Стандартный реквизит Ссылка содержит внутренний глобальный
уникальный 128-битный идентификатор записи – GUID (Globally Unique
Identifier), который генерируется системой при создании нового элемента.
Отсюда можно сделать однозначный вывод, если удалить элемент
справочника и создать точно такой же, у них будет отличаться внутренний
глобальный уникальный идентификатор (Ссылка), что может привести к
изменению логики работы программы.
Для ряда объектов метаданных, таких как справочники, документы и
т.д., используется объектный подход манипулирования данными. С точки
зрения модели данных 1С:Предприятие, каждый такой объект конфигурации, в
базе данных представлен в виде объекта, к которому можно обратиться и
манипулировать данным объектом, а также манипулировать пользовательской
информацией хранящейся в этих объектах.
Рассмотрим состав типов, используемых для манипулирования объектами в конфигурации на примере справочника:
- СправочникиМенеджер – представляет собой коллекцию всех справочников конфигурации и предоставляет доступ к значению типа СправочникМенеджер.<Имя справочника>. Доступ к объекту осуществляется через свойство глобального контекста Справочники
- СправочникМенеджер.<Имя справочника> –
предназначен для управления конкретным справочником, а именно для
создания новых элементов и групп, осуществления поиска элементов,
выполнения работ с формами и макетами конкретного справочника
- СправочникСсылка.<Имя справочника> –
используется для указания ссылки на элемент справочника в реквизитах
других объектов, фактически это ссылка на записанный объект в базе
данных. Не содержит средств для добавления, изменения и удаления
элементов справочника, однако позволяет обращаться к его реквизитам
- СправочникОбъект.<Имя справочника> – используется для чтения, добавления, изменения и удаления элементов справочника
- СправочникСписок.<Имя справочника> – используется для динамического просмотра данных справочника в элементе управления ТабличноеПоле.
Считывание данных осуществляется порциями в процессе навигации
пользователем в табличном поле обычных форм. На управляемых формах
используется Тип ДинамическийСписок.
- СправочникВыборка.<Имя справочника> – используется для перебора элементов справочника, полученного методами Выбрать или ВыбратьИерархически. Для получения элементов из выборки используется метод Следующий()
Документы
Документ – это прикладной объект, предназначенный
для отражения факта совершенных хозяйственных операций. Это могут быть,
например, приходные накладные, приказы о приеме на работу, расходные
накладные и т.д.
По умолчанию любой документ содержит два обязательных реквизита, это Номер и Дата (состав – Дата и Время), данные реквизиты характеризуют документ и являются стандартными.
Дата документа является важной характеристикой, так как позволяет
точно позиционировать документ на оси времени по отношению к другим
документам. На оси времени документ однозначно позиционируется моментом времени (Дата, Время и Ссылка на документ).
Кроме них у документа существует еще ряд стандартных реквизитов, которые можно посмотреть в отдельном окне «Стандартные реквизиты». Имена у стандартных реквизитов изменить нельзя.
Проведение документа
Важным свойством документа является возможность его проведения. Если
документ проведен, то он влияет на учет, если документ не проведен, то
он является как бы черновиком, который никак не влияет на учет.
Соответственно у документа есть процедура ОбработкаПроведения() в модуле объекта, данная процедура вызывается в момент срабатывания у документа метода Записать(РежимЗаписиДокумента.Проведение). При необходимости от проведения можно отказаться используя оператор Отказ = Истина в процедуре ОбработкаПроведения().
При работе с большим числом документов не мало важным является
механизм ввода на основании, что позволяет сократить время на заполнение
документов. Для отрабатывания данного механизма используется процедура
ОбработкаЗаполнения(), где первым параметром ДанныеЗаполнения передается
произвольное значение, которое используется как основание для
заполнения текущего документа.
Регистры сведений
Регистр сведений ‑ предназначен для хранения
произвольных показателей состояния в разрезе измерений. В отличие от
других регистров, ресурсы регистра сведений могут содержать не только
числовые значения, в том числе тип может быть составным.
Выделяют два вида регистров сведений по режиму записи:
- Независимый регистр сведений – регистр не подчинен регистратору (документу).
- Зависимый регистр сведений – регистр подчинен регистратору (документу).
Виды регистров сведений по периодичности:
- Непериодический
- По позиции регистратора (дата документа)
- В пределах секунды
- В пределах дня
- В пределах месяца
- В пределах квартала
- В пределах года
При выборе периодичности в базе данных создаются виртуальные таблицы:
СрезПервых – предназначена для получения наиболее ранних записей по отношению к указанной дате.
СрезПоследних – предназначена для получения наиболее поздних записей по отношению к указанной дате.
Важно! При выборе периодичности (кроме «По позиции регистратору»),
платформа будет контролировать уникальность записей в пределах заданной
периодичности, в таких случаях в регистр нельзя записать две записи с
одинаковым набором Измерений и Периодом. Последовательность, состоящая из Измерений и Периода, называется Ключом уникальности.
При выборе периодичности «По позиции регистратору» ключ
уникальности будет содержать дополнительно ссылку на регистратор
(документ), в таких случаях в регистр нельзя записать две записи с
одинаковым набором Измерений, Периодом и Регистратором.
Если запись не уникальна, платформа выдает сообщение «Запись с такими ключевыми полями существует!» и не даст записать набор записей в регистр сведений.
Уникальность записей проверяется «Ключом уникальности», который состоит из совокупности измерений, периода и регистратора,
соответственно, если удалить запись из регистра сведений и добавить
точно такую же, то это никак не повлияет на логику работы прикладного
решения.
Структура регистра сведений
- Измерения – описывают разрезы, в которых хранится информация.
- Ресурсы – содержат хранимую информацию в разрезе измерения.
- Например,
Тип ресурса сведений может быть, как примитивный (число, строка, дата,
булево), так и ссылочный (СправочникСсылка, ПеречислениеСсылка и т.д.). В
ресурсе можно хранить даже картинки и другие неструктурированные
сведения, поскольку можно создать ресурс типа «ХранилищеЗначения». Ресурс может быть составным типом. - Реквизиты – несут дополнительную информацию, как комментарий, которую нельзя получить из виртуальных таблиц регистра в разрезе измерений.
Блокировки данных
Блокировка – это процесс или действие, направленное
на ограничение или предотвращение доступа к определенному ресурсу,
объекту или информации. Блокировки в 1С:Предприятие используются для
обеспечения целостности данных и предотвращения конфликтов при
одновременном доступе нескольких пользователей к одной и той же
информации. Блокировки помогают избежать ситуаций, когда несколько
пользователей пытаются изменить одни и те же данные одновременно, что
могло бы привести к потерям данных или логическим ошибкам в программах.
В системе 1С:Предприятие существует два механизма блокировок:
- Механизм объектных блокировок – позволяет устанавливать блокировки на прикладные объекты прикладного решения на уровне платформы.
- Механизм транзакционных блокировок – позволяет устанавливать блокировки на записи базы данных на уровне СУБД.
Механизм объектных блокировок
Оптимистическая блокировка – данная блокировка перед
записью объекта, сравнивает полученный номер версии при открытии с
номером версии в базе данных, если версии отличаются, то будет выдано
предупреждение о том, что версия объекта изменилась или он был удален.
Например, два пользователя одновременно открыли один и тот же элемент
справочника, первый пользователь внес изменения, записал эти изменения и
закрыл форму элемента, теперь любые попытки второго пользователя внести
изменения и записать их в базу, будут блокироваться с выводом сообщения
об ошибке.
Пессимистическая блокировка – данная блокировка
гарантирует, что внесенные изменения через форму будут записаны в базу
данных, за счет блокировки возможности внести изменения в объект через
форму другим сеансом. Например, два пользователя одновременно открыли
форму одного и того же элемента справочника, первый пользователь внес
изменения без сохранения, в этот момент включилась пессимистическая
блокировка, теперь любые попытки второго пользователя на форме внести
изменения, будут блокироваться с выводом сообщения об ошибке: «Не удалось заблокировать запись». Нужно учитывать, что пессимистическая блокировка не мешает программно менять данные объекта.
Варианты установки пессимистической блокировки:
- Используя графические средства – включается для каждого реквизита отдельно с помощью свойства «Сохраняемые данные».
Блокировка, устанавливаемая формой объекта при начале редактирования его данных, держится до закрытия формы
- Используя встроенный язык – при программной работе с объектом, его можно заблокировать с помощью метода Заблокировать(). Снимается блокировка методом Разблокировать() или после окончания серверного вызова.
Нужно учитывать, если объект заблокирован с помощью метода Заблокировать(),
и система взаимодействия доступна, то в автоматически созданной
платформой форме объекта можно изменять данные, но при этом будут
утеряны изменения сделанные другим пользователем.
Если необходимо установить пессимистическую блокировку не на стороне сервера, где используются методы Заблокировать() и Разблокировать(), а на стороне клиента не в стандартной форме, то можно использовать метод формы ЗаблокироватьДанныеФормыДляРедактирования(). Блокировка установленная таким образом держится до закрытия формы или снятия блокировки методом РазблокироватьДанныеФормыДляРедактирования().
Метод объекта Заблокирован() позволяет получить информацию о блокировке объекта через объект, к которому этот метод был применен.
Для проверки заблокирован ли объект можно попробовать его заблокировать методом Заблокировать() или методом ЗаблокироватьДанныеФормыДляРедактирования().
Механизм транзакционных блокировок
Транзакция – это последовательность действий по
модификации данных приводящих из одного не противоречивого состояния в
другое не противоречивое состояние, при условии, что первоначально
данные были не в противоречивом состоянии.
Режим управления блокировкой данных
Для настройки режимов блокировки используется свойство «Режим управления блокировкой данных» у конфигурации и аналогичное свойство у прикладных объектов.
Для всей конфигурации можно установить один из трех режимов управления блокировкой данных:
- Автоматический – будет использоваться
автоматический режим для всех объектов конфигурации, независимо от
установленного режима в самом прикладном объекте. Блокировками будет
управлять СУБД, разработчик вмешаться в работу блокировок не сможет.
Устаревший метод. - Управляемый – будет
использоваться управляемый для всех объектов конфигурации, независимо от
установленного режима в самом прикладном объекте. Блокировками будет
управлять СУБД и менеджер блокировок на стороне сервера 1С:Предприятие,
данные блокировки настраивает разработчик. Современный метод. - Автоматический и управляемый
– для конкретного объекта, будет использоваться тот режим, который был
установлен у данного объекта: Автоматический или Управляемый. Переходный
метод.
При установке « Автоматический и управляемый» режима для
конфигурации нужно учитывать режимы у прикладных объектов, которые
обрабатываются в рамках одной транзакции. Например, при проведении
документа происходит запись движений в регистр и в зависимости от
установленного режима у объектов, система поведет себя по-разному.
- Если у документа установлен автоматический режим управления
транзакционными блокировками, а у регистра управляемый, то система
выполнит все операции в рамках одной транзакции в автоматическом режиме,
так как первоначально отработает блокировка документа, а у него
автоматический режим, то и блокировка регистра пройдет в автоматическом
режиме. Если были прописаны разработчиком управляемые блокировки, они не
будут выполнены, так как все выполнится в автоматическом режиме. - Если
у документа установлен управляемый режим управления транзакционными
блокировками, а у регистра автоматический, то система выдаст ошибку, так
как в рамках одной транзакции первоначально произойдет управляемая
блокировка документа, затем система будет ожидать блокировку регистра в
управляемом режиме, а у него установлен автоматический режим, которым
управлять нельзя.
Анализ данных и прогнозирование
Анализ данных и прогнозирование ‑ это механизм
системы 1С:Предприятие предназначенный для формирования экономической и
аналитической отчетности с целью получения неочевидных закономерностей.
Анализ данных
Типы анализа данных:
- Общая статистика – представляет собой механизм для сбора общей информации о данных, находящихся в полученном источнике
Общая статистика (источник: https://v8.1c.ru/platforma/analiz-dannykh-i-prognozirovanie/)
- Поиск ассоциаций – осуществляет поиск часто встречаемых вместе групп объектов или значений характеристик
Поиск ассоциаций (источник: https://v8.1c.ru/platforma/analiz-dannykh-i-prognozirovanie/)
- Поиск последовательностей – осуществляет поиск последовательных цепочек событий
Поиск последовательностей (источник: https://v8.1c.ru/platforma/analiz-dannykh-i-prognozirovanie/)
- Кластерный анализ – позволяет
разделить исходный набор данных на группы объектов, таким образом, чтобы
каждый объект был схож с объектами группы в которую входит
Кластерный анализ (источник: https://v8.1c.ru/platforma/analiz-dannykh-i-prognozirovanie/)
- Дерево решений – позволяет построить иерархическую структуру классифицирующих правил
Дерево решений (источник: https://v8.1c.ru/platforma/analiz-dannykh-i-prognozirovanie/)
Для получения прогноза данных используется код на встроенном языке
Прогноз данных
На основе анализа данных можно получить прогноз, для этого используется объект МодельПрогноза.
Модель прогноза – специальный объект, строящийся на
основе информации из результата анализа. Тип модели прогноза зависит от
типа результата анализа данных.
Для получения прогноза данных используется код на встроенном языке
Ваганов Сергей, эксперт в области разработки прикладных решений на платформе 1С:Предприятие, преподаватель-методист CORS Academy и автор курса «Разработчик 1С с нуля до профессионала».
Подписывайтесь:
CORS Клуб – сообщество и образовательная среда для специалистов из IT-сферы https://cors.su/klub/
АБП -Сообщество специалистов по автоматизации бизнес-процессов и по использованию ИТ технологий в бизнесе https://t.me/analitiki_1c
Канал руководителей IT компаний и подразделений, CIO, СDO, CDTO https://t.me/cio_channel
CIO. Сообщество IT руководителей https://vk.com/cio_club