Информационный поток
Задания вакансии материалы разработки сообщения форума
Рубрики статей и материалов
Яндекс-директ

Обычный и предопределенный элементы. Различие на стороне базы данных

  • Добавить свою публикацию
  • для этого требуется регистрация

Предисловие

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

Изображение

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

Изображение

Этот элемент используется во многих модулях конфигурации. Так в документе "Поступление товаров и услуг" при выполнении проведения во всех регистрах, где есть измерение "Качество", подставляется значение предопределенного элемента. Далее приведен листинг заполнения таблицы проведения по регистру "ТоварыОрганизаций":

 	// ТОВАРЫ ПО РЕГИСТРУ ТоварыОрганизаций.
	НаборДвижений = Движения.ТоварыОрганизаций;	Если ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад Тогда
		
		// Получим таблицу значений, совпадающую со структурой набора записей регистра.
		ТаблицаДвижений = НаборДвижений.Выгрузить();
		
		// Заполним таблицу движений.
		ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоТоварам, ТаблицаДвижений);
		
		// Недостающие поля.
		ТаблицаДвижений.ЗаполнитьЗначения(Организация, "Организация");
		ТаблицаДвижений.ЗаполнитьЗначения(Неопределено,"Комиссионер");
		ТаблицаДвижений.ЗаполнитьЗначения(Справочники.Качество.Новый, "Качество"); // Заполняем качество из предопределенного элемента

 Таким образом, характерные черты предопределенных элементов и их назначение достаточно просты. Рассмотрим способ их хранения в таблицах базы данных и его отличие от обычных элементов.

Различия

В тестовой конфигурации создан справочник "Товары". В нем создана группа "Тестовые элементы". Содержимое группы Вы могли видеть на скриншоте в начале статьи. Для справочника "Товары" в SQL-базе данных имеется соответствующая таблица "_Reference37" со следующей структурой:

Изображение

 Но как определить соответствие реквизитов дереве конфигурации и полей в SQL-таблице? 

 

Воспользуемся стандартным методом глобального контекста "ПолучитьСтруктуруХраненияБазыДанных()", который вернет нам таблицу значений с описанием струкутры таблиц. 

Изображение

В таблице значений "Поля" мы видим соответствие полей SQL-таблицы и реквизитов объекта в дереве метаданных. В нашем примере мы рассматриваем структуру справочника "Товары". У всех справочников есть стандартный реквизит "Предопределенный"булевого типа, который для предопределенных элементов установлен в ИСТИНА:

Изображение

По таблице со структурой хранения справочника в базе данных мы однозначно можем сказать, что поле "Предопределенный" соответствует полю "IsMetadata". Если мы просмотрим содержимое таблицы "_Reference37" в SQL-базе, то увидим следующее:

Изображение

В записи для предопределенного элемента значение поля "IsMetadata" установлено в "0x01", что соответствует флагу ИСТИНА. Для обычных элементов значение установлено в "0x00". В этом и заключается главное отличие предопределенных элементов от обычных. Все остальные поля хранятся в базе данных аналогично полям обычных элементов, добавленных пользователями.

Интересный момент

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

Изображение

Таким образом, предопределенные элементы делают группу, в которую они помещены, тоже "предопределенной".

Завершение

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

 
0
Читайте также
Что такое настройка 1С
Типовые конфигурации 1С не способны удовлетворить всем требованиям и решить все задачи- поэтому и нужна подстройка конфигурации в соответствии с требованиями клиента.
Внимание! Будь осторожен - "макет" возможен.
В 1С 8 есть полезная возможность сохранять в качестве макета сторонние файлы
Подчиненные справочники. Быстро.
Создание подчиненных справочников
Разработки
Дополнительное меню
Обработка для запуска внешних обработок, сохраненных в базе
Свободное проведение документов
Помощь в проведении документов
Универсальная замена значений для ЛЮБОЙ конфигурации
Замена объектов на новые или перенос данных по счету
Еще от автора
≡ к списку статей