05.06.2022 Кирилл Пак 22334
Составные типы данных

Содержание:

1.       Что такое составной тип данных

2.       Недостатки составного типа данных

3.       Использование составного типа данных

   

1.     Что такое составной тип данных


Тип данных считается составным, если в Конфигураторе при выборе типа объекта метаданных (реквизита, измерения, ресурса и т.п.) в окне выбора типа данных:

  • выбрано более одного типа данных


Выбор более одного типа объекта метаданных

 

  • выбраны ссылки на объекты базы данных типов разного вида. Такие как: ДокументСсылка, ПеречислениеСсылка, ПланВидовХарактеристикСсылка, ПланСчетовСсылка, ПланВидовРасчетаСсылка, БизнесПроцессСсылка, ТочкаМаршрутаБизнесПроцессаСсылка, ЗадачаСсылка, ПланОбменаСсылка, ЛюбаяСсылка.


Выбор ссылки на объекты базы данных типов разного вида


Как же создаются составные типы данных? Для этого нужно в конфигураторе открыть свойства объекта, тип данных которого вы хотите задать и установить флажок - "Составной тип данных"



Создание составного типа данных в 1С   

 

2.     Недостатки составного типа данных


Удобно, не правда ли? Всего несколько галочек и вот уже в реквизит, переменную, ресурс и т.д. можно поместить какую угодно информацию. Если, к примеру, вам нужно, чтобы в реквизите документа можно было выбрать не из одного вида документов, а из нескольких – составной тип незаменим.


К сожалению все далеко не так просто… Составной тип данных – он как айсберг. Помимо того, что он огромен, а видна только верхушка (реальное представление составного типа нужно искать в глубинах СУБД), так еще и может не затопить, но уж точно сильно затормозить ваш корабль (базу), если обращаться с ним неосторожно.


Самым очевидным недостатком составного типа, конечно же, является размер. Для каждого простого типа данных, выбранного в составном, база выделяет отдельное поле. Так что составной тип в 1С может занимать в два, три и так далее больше раз места, чем простой.


Также составные типы данных отрицательно сказываются на производительности (в особенности, когда дело касается запросов). Самый простой пример –запрос к составному типу данных (без метода «ВЫРАЗИТЬ») вернет все простые типы, входящие в составной.

 

ВЫБРАТЬ
ОбъектКонфигурации.СоставнойТип КАК СоставнойТип
ИЗ
ОбъектКонфигурации КАК ОбъектКонфигурации

 

это тоже самое, что и

 
ВЫБРАТЬ
    ОбъектКонфигурации.СоставнойТип.Тип КАК СоставнойТипТип,
    ОбъектКонфигурации.СоставнойТип.Булево КАК СоставнойТипБулево, 
    ОбъектКонфигурации.СоставнойТип.Число КАК СоставнойТипЧисло,
    ОбъектКонфигурации.СоставнойТип.Дата КАК СоставнойТипДата,
    ОбъектКонфигурации.СоставнойТип.Строка КАК СоставнойТипСтрока,
    ОбъектКонфигурации.СоставнойТип.ВидСсылки КАК СоставнойТипСсылки,
    ОбъектКонфигурации.СоставнойТип.Ссылка КАК СоставнойТипСсылка
ИЗ
    ОбъектКонфигурации КАК ОбъектКонфигурации

 

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


Составной тип данных совсем не сложен. Он полезен и весьма удобен при разработке, но таит в себе множество опасностей. И чем объемнее и сложнее база, с которой вы работаете, тем больше (в том числе и достаточно серьезных) проблем принесет необдуманное использование составного типа данных.


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


3.     Использование составного типа данных

 

Но как же тогда работать с составными типами данных в 1С?


Самый простой и очевидный способ – не работать вовсе. Если задача требует использования составных типов, это повод проанализировать ее еще раз – может, есть другой способ?


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



Объект метаданных Определяемый тип


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


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


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


Теперь перейдем к Запросам – части 1С, которая больше всего страдает от Составных типов данных. Здесь тоже есть несколько методов, которые позволяют избежать просадок эффективности.


Во-первых, в Реквизиты Составных типов, участвующие в соединениях, отборах и упорядочивании, должны входить только Ссылочные типы данных. Использование любых других типов приведет к потере производительности. Причина этого кроется в особенностях их хранения в СУБД.


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


Кроме того, при всех отборах и соединениях Составных типов обязательно следует использовать метод ВЫРАЗИТЬ(). Если этого не сделать, реквизит соединится с Составным типом данных по всем таблицам, из которых этот тип состоит, после чего уже отсекаются ненужные. ВЫРАЗИТЬ() отсекает ненужные таблицы заранее, сильно влияя на эффективность Запроса.


Таким образом, даже с Составными типами данных в 1С можно работать. Только делать это нужно внимательно и осторожно.

 

Специалист компании «Кодерлайн»

Кирилл Пак

Наши проекты

Автоматизация контроля исполнительской дисциплины на базе ПП «1С:Документооборот 8 ПРОФ»
ООО «ФСК Лидер»

Отрасль:
Строительство и девелопмент

Внедренное типовое решение:
1С:Документооборот 8 ПРОФ

- Делопроизводство;
- Учет и хранение документов;
- Учет и контроль исполне...

Внедрение «1С:Бухгалтерия 8 ПРОФ» в компании «Мостехника»
ООО «Мостехника»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Бухгалтерия ПРОФ

Документооборот (ECM):
- Учет рабочего времени;
Управление персоналом и ка...

ОАО «Фаберлик»
ОАО «Фаберлик»

Отрасль:

Внедренное типовое решение:
1С:ERP. Управление производственным предприятием 2

- Регламентированный учет;
- Кадровый учет;...

АО «РЭП Холдинг»
АО «РЭП Холдинг»

Отрасль:
Энергомашиностроительный холдинг

Внедренное типовое решение:
«1С: Управление производственным предприятием» и «1С:Консолидация ПРОФ»

- Функциональный блок «Консолидированная отчетность РСБУ» - разработка час...

ООО «Лаборатория успеха»
ООО «Лаборатория успеха»

Отрасль:
Общественное и плановое питание, гостиничный бизнес, туризм

Внедренное типовое решение:
1С:Зарплата и управление персоналом 8. КОРП

Кадровый учет;
Расчет зарплаты;...

Автоматизация кадрового учета на базе ПП "1С:Зарплата и управление персоналом" в ТД НМК
ООО «Торговый дом Нальчикский молочный комбинат»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Кадровый учет;
- Расчет зарплаты;
- Регламентированная отчетность;
- А...

Апгрейд 1С:Бухгалтерия 8 ПРОФ (USB) до версии 1С:Бухгалтерия 8 КОРП (USB)
ООО «Ява Строй»

Отрасль:
Строительство

Внедренное типовое решение:
1С:Бухгалтерия 8 КОРП (USB)

- Создание чистых конфигураций. Внесение изменений в БД ЗУП и новая расчетна...

Внедрение ПП «1С:Предприятие 8. Аренда и управление недвижимостью на базе "1С:Бухгалтерия 8"» в компании «Бутово Молл»
ООО «Бутово Молл»

Отрасль:
Недвижимость

Внедренное типовое решение:
1С:Аренда и управление недвижимостью на базе «1С:Бухгалтерия 8»

Управление продажами, логистикой и транспортом (SFM, WMS, TMS):
- Оформление зак...

Госкорпорация «Ростех»
Госкорпорация «Ростех»

Отрасль:
Производство, ТЭК >> Машиностроение, приборостроение

Внедренное типовое решение:
1С:Управление холдингом 1.3.

Специалисты «Кодерлайн» помогли разработать и внедрить автоматизированную...

ХИТЕК-ГРУП
ХИТЕК-ГРУП

Отрасль:
Продажа парикмахерского инструмента и аксессуаров

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Документооборот (ECM)
• Делопроизводство
Управление бизнес-процессами и И...

МИР ХОББИ
МИР ХОББИ

Отрасль:
Торговля. Интернет магазин

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Оформление заказов поставщикам
Взаиморасчеты с покупателями
Оформление...

ООО ХДМ Рус
ООО ХДМ Рус

Отрасль:
Торговля

Внедренное типовое решение:
1С:Бухгалтерия ПРОФ

Бухгалтерский учет Банк и касса Расчеты с контрагентами Торговые операции ...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение