Система типів (type system)
Система типів (Type System)
Система типів - це особлива система, по якій організовуються дані, які використовуються прикладними рішеннями. Система типів дозволяє представити інформацію реального світу в термінах, "зрозумілих" для 1С: Підприємство 8.
Система типів надає широкі можливості як для опису безпосередньо бізнес-логіки прикладних рішень, так і для виконання завдань тимчасової роботи даних.
Опис системи типів міститься в синтаксис-помічника, у вбудованій довідці та в документації.
Основною особливістю системи типів є те, що є типи, які існують в будь-якому прикладному рішенні. Самі ці типи визначені на рівні платформи і присутні завжди, незалежно від дій розробника. Поряд з ними в конкретному прикладному рішенні можуть існувати різні типи даних, притаманні саме цьому конкретному прикладному рішенню. Для таких типів даних на рівні платформи визначені лише загальні правила їх створення, шаблони. А конкретні типи даних створюються платформою вже виходячи з того, яким чином розробник формує і модифікує структуру прикладного рішення.
Типи даних, визначені на рівні платформи
Примітивні типи даних - це такі типи як Рядок. Число. Дата. Булево і інші. Ці типи не є чимось особливим для 1С: Підприємства 8. Як правило, такі типи даних існують і в інших програмних системах.
Значення примітивних типів є простими неподільними значеннями, в яких не можна виділити окремі складові. Наприклад, значеннями типу Число можуть бути 1, 8, 15 і ін. Щоб створити значення примітивного типу, в тексті програми потрібно вказати його буквальний - символьний ідентифікатор значення.
Також, існують більш складні типи даних. Наприклад, платформа підтримує цілий ряд типів, які є універсальними колекції значень: Масив. Структура. СпісокЗначеній і інші.
Крім цього в платформі реалізовані специфічні типи даних, що реалізують ту чи іншу функціональність прикладних рішень: ТекстовийДокумент. ТаблічнийДокумент. ХраніліщеЗначенія. ПостроітельЗапроса і інші.
Загальні типи називають також загальними об'єктами. Значення цих типів, на відміну від значень примітивних типів, представляють собою сукупність значень окремих властивостей об'єкта. Тому їх називають екземплярами об'єктів.
Примірники об'єктів створюються за допомогою спеціального оператора вбудованої мови - Новий.
Інтерфейсні типи дозволяють організовувати візуальне взаємодія прикладного рішення з користувачем. В основному це типи, пов'язані з роботою форм і їх елементів.
Типи даних, що утворюються в прикладному рішенні
Однак, поряд з типами даних, які визначені на рівні платформи, конкретне прикладне рішення може використовувати унікальні типи даних, що існують тільки в цьому конкретному прикладному рішенні. Причому платформа буде повністю підтримувати роботу з цими типами даних точно так же, як і з типами, які визначені на рівні самої платформи.
Як правило, поява нових типів даних в прикладному рішенні пов'язано з використанням прикладних об'єктів конфігурації. Тому такі типи називають ще прикладними типами або прикладними об'єктами.
На рівні платформи підтримується кілька класів (шаблонів) прикладних об'єктів, які самі по собі не можуть бути використані в конкретному прикладному рішенні. Наприклад, можна перерахувати такі класи прикладних об'єктів як Довідники. Документи. Регістри відомостей. Плани видів характеристик та ін.
Для кожного класу прикладних об'єктів визначена відповідна йому базова функціональність: типи таблиць бази даних, які повинні бути створені для зберігання даних, типові форми, типові об'єкти мови, набори прав та ін.
Розробник, створюючи прикладне рішення, не має можливості використовувати ці класи безпосередньо, проте може додати в своє прикладне рішення новий об'єкт конфігурації, що успадковує всю функціональність того чи іншого класу:
Наприклад, розробник може додати в своє прикладне рішення новий довідник Номенклатура. який буде наслідувати функціональність класу Довідники. або новий документ КассовийОтчет. який буде наслідувати функціональність класу Документи.
Відразу ж після такого додавання розробнику стають доступні нові типи даних, склад яких визначається приналежністю об'єкта конфігурації до того чи іншого класу прикладних об'єктів.
Наприклад, після створення нового довідника Номенклатура. стають доступні такі типи даних:
Система типів описує лише загальну "структуру" такого типу, правила, за якими будуть формуватися об'єкти цього типу. Конкретне ім'я типу, склад властивостей і методів об'єкта залежатимуть від того, як розробник назве об'єкт конфігурації і які, наприклад, реквізити, табличні частини він в нього додасть.
У той же час, після створення нового регістра накопичення ПродажіКомпаніі. склад нових типів даних буде вже іншим:
- РегістрНакопленіяМенеджер.ПродажіКомпаніі,
- РегістрНакопленіяВиборка.ПродажіКомпаніі,
- РегістрНакопленіяСпісок.ПродажіКомпаніі,
- РегістрНакопленіяНаборЗапісей.ПродажіКомпаніі,
- РегістрНакопленіяЗапісь.ПродажіКомпаніі,
- РегістрНакопленіяКлючЗапісі.ПродажіКомпаніі.
Слід ще раз відзначити, що ці типи даних не підтримуються платформою спочатку, і існують тільки в конкретному прикладному рішенні.
Ще один момент, на якому слід акцентувати увагу, найпростіше продемонструвати на прикладі.
Припустимо, в прикладному рішенні створені два нових довідника: Номенклатура і Ціни. Незважаючи на те, що обидва ці об'єкти успадкували функціональність відповідного класу Довідники. і для них в прикладному рішенні був створений один і той же склад типів даних, "однойменні" типи даних будуть різними типами даних. Наприклад, СправочнікОб'ект.Номенклатура і СправочнікОб'ект.Цени - це різні типи даних.
Так відбувається тому, що розробник може додатково до базової функціональності, успадкованої від відповідного класу, додати свою, особливу для кожного об'єкта конфігурації. Наприклад, обидва згаданих вище довідника можуть містити табличні частини (це успадковано від класу Довідники). Однак для довідника Ціни розробник не створить жодної табличній частині, в той час як для довідника Номенклатура він створить, наприклад, три табличні частини. Очевидно, що структура зберігання даних типу СправочнікОб'ект.Номенклатура буде значно відрізнятися від структури зберігання даних типу СправочнікОб'ект.Цени.