1с как создать предопределенный элемент справочника
Перейти к содержимому

1с как создать предопределенный элемент справочника

  • автор:

1С, что такое предопределенный элемент, как создать?

Предопределенный элемент в 1С — это запись справочника заранее созданная в конфигураторе. К предопределенным элементам можно обращаться программно, при этом не используя запросы к базе данных. Данные элементы помечены желтым кружком и их нежелательно редактировать в пользовательском режиме, их нельзя удалить.

Пример создания предопределенного элемента:

Допустим нам необходимо, чтобы в базе изначально присутствовал объект справочника «Договор», а именно «Договор подряда».

  • Заходим в конфигуратор;
  • Открываем справочник договоры -> Прочее -> Предопределенные
  • Нажимаем кнопку «Создать» (зеленый круг с плюсом), затем заполняем «Имя», без пробелов.
  • Обновляем базу;
  • Затем в пользовательском режиме открываем справочник «Договоры». Видим, что уже есть 1 элемент справочника, созданный нами в конфигураторе. Договор помечен желтым кружком, что говорит нам о том, что он предопределенный.

Пример программного обращения к предопределенному элементу

Создадим обработку, с формой, на форму выведем кнопку. При нажатии на кнопку организуем вывод сообщения с наименованием договора созданного в конфигураторе.

Пример процедуры:

&НаСервере Процедура СообщитьНаименованиеПредопределенногоЭлементаНаСервере() // Пример обращения с помощью встроенного языка Сообщить(Справочники.Договоры.ДоговорПодряда); Сообщить(Справочники.Договоры.ДоговорПодряда.Наименование); Сообщить(Справочники.Договоры.ДоговорПодряда.Код); КонецПроцедуры 

Пример использования предопределенных элементов в СКД

  • Данные элементы мы можем использовать при отборе, в схеме компоновки данных. Создадим отчет СКД, с текстом запроса:
ВЫБРАТЬ ЗаказПокупателя.Ссылка КАК Ссылка, ЗаказПокупателя.ВерсияДанных КАК ВерсияДанных, ЗаказПокупателя.ПометкаУдаления КАК ПометкаУдаления, ЗаказПокупателя.Номер КАК Номер, ЗаказПокупателя.Дата КАК Дата, ЗаказПокупателя.Проведен КАК Проведен, ЗаказПокупателя.Контрагент КАК Контрагент, ЗаказПокупателя.Договор КАК Договор ИЗ Документ.ЗаказПокупателя КАК ЗаказПокупателя
  • Далее в форме СКД переходим на вкладку Настройки -> Отбор -> Договор, переместить в правую область -> Выбрать «Договор подряда» из доступных значений;
  • Результат запроса будет отфильтрован по договору подряда.

Предопределенные элементы справочников 1С 8.3

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

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

К примеру, мы в нашей конфигурации для целей учета создали справочник Валюты, поскольку мы живем в Российской федерации, то валюта Рубль всегда будет в нашей конфигурации, которая используется на территории РФ. Поэтому наиболее логичнее её сделать в виде предопределенного элемента. Поэтому создадим для справочника Валюты предопределенный элемент Рубль. Для того, чтобы добавить предопределенный элемент необходимо выделить нужный справочник, вызвать контекстное меню и выбрать в этом меню команду «Открыть предопределенные данные».

Открыть список предопределенных элементов справочников 1С

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

Список предопределенных элементов справочников 1С

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

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

Список предопределенных элементов иерархического справочника 1С

Если мы зайдем в форму списка справочника Страны в пользовательском режиме «1С: Предприятия», то обнаружим, что уже имеются группы и элементы с точкой внизу. Так платформа помечает предопределенные элементы и группы.

Предопределенные элементы и группы в справочнике 1С

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

Реквизит предопределенного элемента

Получить предопределенный элемент справочника 1С

Используя менеджер справочника, можно обратиться к предопределенному элементу. Делается это следующим образом.

ЭлементКитай = Справочники.Страны.Китай; 

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

ЭлементКитай = ПредопределенноеЗначение("Справочник.Страны.Китай"); 

Имейте в виду, что и при помощи метода ПредопределенноеЗначение и при помощи прямого обращения посредством менеджера объекта мы получим ссылку на элемент, с которой можем работать как с обычной ссылкой на элемент справочника: присваивать её какому-нибудь реквизиту, получать объект из этой ссылки и т.д.

Ссылка на предопределенный элемент справочника

Создать предопределенный элемент справочника 1С

Мы уже научились создавать предопределенные элементы справочника в конфигураторе, но можно ли создать предопределенный элемент программно? И да, и нет.

Мы можем из простого элемента сделать предопределенный, и наоборот предопределенный элемент сделать простым.

Для этих целей у справочников имеется стандартный реквизит ИмяПредопределенныхДанных.

Реквизит ИмяПредопределнныхДанных справочника 1С

Если мы получим ссылку на предопределенный элемент, то этот реквизит заполнен.

Реквизит ИмяПредопределнныхДанных у предопределенного элемента справочника 1С

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

Реквизит ИмяПредопределнныхДанных у простого элемента справочника 1С

Если мы этому реквизиту присвоим какое-нибудь имя (помня об уникальности имен предопределенных элементов в контексте конкретного справочника), то мы программно «создадим» предопределенный элемент, но только в том случае если это имя уже существует в списке предопределенных элементов справочника, которые были заданы в конфигураторе 1С!

Например, тот же элемент «Тунис» справочника «Страны» у нас простой.

Простой элемент справочника 1С

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

&НаСервере Процедура СоздатьНаСервере() ЭлТунис = Справочники.Страны.НайтиПоНаименованию("Тунис"); ОбТунис = ЭлТунис.ПолучитьОбъект(); ОбТунис.ИмяПредопределенныхДанных = "Тунис"; ОбТунис.Записать(); КонецПроцедуры &НаКлиенте Процедура Создать(Команда) СоздатьНаСервере(); КонецПроцедуры 

Если мы попытаемся его сейчас выполнить, то у нас возникнет ошибка «Предопределенный элемент не существует».

Предопределенный элемент не существует

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

Если же мы у предопределенного элемента реквизиту ИмяПредопределенныхДанных присвоим пустую строку, то такой элемент станет простым, если же этому реквизиту обратно присвоим имя предопределенного элемента, то простой элемент станет предопределенным.

Сделаем на обработке две команды. Первая будет снимать предопределенность у элемента справочника с именем «Китай», а вторая устанавливать.

&НаСервере Процедура ОтсоединитьНаСервере() ЭлементКитай = Справочники.Страны.Китай; ОбЭлКитай = ЭлементКитай.ПолучитьОбъект(); ОбЭлКитай.ИмяПредопределенныхДанных = ""; ОбЭлКитай.Записать(); КонецПроцедуры &НаКлиенте Процедура Отсоединить(Команда) ОтсоединитьНаСервере(); КонецПроцедуры 

Теперь обратно установим.

&НаСервере Процедура ПрисоединитьНаСервере() ЭлКитай = Справочники.Страны.НайтиПоНаименованию("Китай"); ОбЭлКитай = ЭлКитай.ПолучитьОбъект(); ОбЭлКитай.ИмяПредопределенныхДанных = "Китай"; ОбЭлКитай.Записать(); КонецПроцедуры &НаКлиенте Процедура Присоединить(Команда) ПрисоединитьНаСервере(); КонецПроцедуры 

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

Имя предопределенного элемента справочника

У нас до снятия элемент «Китай» был предопределенным.

Предопределенный элемент справочника 1С

А после снятия это стал простой элемент.

Элемент справочника 1С

Удалить предопределенный элемент справочника 1С

Начиная с платформы 1С 8.3 предопределенные элементы можно удалять в пользовательском режиме.

Установка пометки на удаление предопределенного элемента справочника 1С

Пометка на удаление предопределенного элемента справочника 1С

Если сейчас этот элемент удалить через стандартную обработку «Удаление помеченных объектов», то он исчезнет из базы.

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

Права на удаление предопределенного элемента

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

Остальные статьи по теме конфигурирования:

Более подробно и основательно работа со справочниками, документами и другими объектами метаданных дается в моей книге:

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Вступайте в мои группы:

3 Replies to “Предопределенные элементы справочников 1С 8.3”

Дотошный :

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

Signum :
Спасибо, подправил!
Алексей :

Автор. Вы морочите голову. Вы пишете, можно ли создать предопределённый программно. Отвечаете и Да и нет. Затем играетесь с реквизитом Предопределенный устанавливая его в значение ложь и обратно в истина. Где программное создание предопределенного элемента? Если нет, то так и пишите ЭТО НЕ ВОЗМОЖНО. И не надо будет разгадывать ваш витиеватый ребус в течение полутора часов. Вот за такие статьи я и не люблю 1С.

Код Икс Пи ☆ Центр автоматизации, сопровождения и поддержки

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

Во встроенном языке существуют методы для поиска данных, например, НайтиПоКоду() или НайтиПоНаименованию().

Однако алгоритмы, опирающиеся на код или наименование, зачастую являются ненадежными.

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

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

Таким образом, у предопределенных данных есть две “стороны”: во-первых, существует список предопределенных элементов, созданный в конфигураторе, а, во-вторых, для данных информационной базы указывается, является ли конкретный элемент предопределенным.

Предопределенные элементы могут быть созданы у:

  • справочников;
  • планов счетов;
  • планов видов характеристик;
  • планов видов расчета.

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

Пиктограмма в списке изменилась:

Чтобы связать предопределенный элемент с новой записью, нужно присвоить свойству ИмяПредопределенныхДанных имя предопределенного элемента:

&НаКлиенте Процедура Привязать(Команда) ПривязатьНаСервере(); КонецПроцедуры &НаСервереБезКонтекста Процедура ПривязатьНаСервере() НайденнаяСсылка = Справочники.Организации.НайтиПоНаименованию(“ООО “”Товары”””); ОбъектДанных = НайденнаяСсылка.ПолучитьОбъект(); ОбъектДанных.ИмяПредопределенныхДанных = “ОсновнаяОрганизация”; ОбъектДанных.Записать(); КонецПроцедуры 

Теперь с пиктограммой предопределенного элемента выводится другой элемент справочника:

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

Если параметр запроса ИмяПредопределенныхДанных принимает значение “ОсновнаяОрганизация”, запрос выполняется без ошибок.

Если используется любое другое значение, не указанное в конфигураторе, то во время выполнения произойдет исключение:

ОбъектДанных= Метаданные.Справочники.Организации; ТекстЗапроса = “ |ВЫБРАТЬ | ИмяОбъекта.Ссылка |ИЗ | “ + ОбъектДанных.ПолноеИмя() + ” КАК ИмяОбъекта | |ГДЕ | ИмяОбъекта.Предопределенный; Запрос = Новый Запрос(ТекстЗапроса); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ИмяПредопределенного = Справочники[ОбъектДанных.Имя].ПолучитьИмяПредопределенного (Выборка.Ссылка); Сообщить(ИмяПредопределенного); КонецЦикла;​

Получение списка предопределенных элементов, заданных в метаданных, при помощи встроенного языка – невозможно.

Однако начиная с платформы 8.3.3, метод ПолучитьИмяПредопределенного() является устаревшим и поддерживается для совместимости, поэтому даже в Синтакс-помощнике платформы 8.3.4 он не отображается.

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

Теперь в платформе присутствуют новые права доступа, определяющие возможность редактирования предопределенных данных:

  • ИнтерактивноеУдалениеПредопределенныхДанных,
  • ИнтерактивнаяПометкаУдаленияПредопределенныхДанных,
  • ИнтерактивноеСнятиеПометкиУдаленияПредопределенныхДанных,
  • ИнтерактивноеУдалениеПомеченныхПредопределенныхДанных.

Однако “интерактивные” права на просмотр и редактирование стандартных реквизитов Предопределенный и ИмяПредопределенныхДанных можно установить по отдельности:

Для корректного функционирования системы необходимо, чтобы предопределенные элементы не только были созданы в конфигураторе, но и в данных информационной базы существовали связанные с ними элементы.

Для указания стратегии создания или изменения предопределенных данных было реализовано системное перечисление ОбновлениеПредопределенныхДанных, содержащее следующие значения:

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

Чтобы принять решение, нужно ли создавать и обновлять предопределенные данные, система последовательно анализирует следующие значения:

  • значение, установленное для объекта в данных;
  • значение, установленное для объекта метаданных в конфигураторе;
  • значение, установленное в целом для информационной базы;
  • вид информационной базы – центральная (либо не распределенная база) или периферийная база.

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

Подробнее будет рассмотрено ниже.

Такое большое количество анализируемых значений было реализовано для возможности полноценно управлять созданием и обновлением предопределенных данных.

Например, в периферийной базе предопределенные данные не должны создаваться автоматически, а в случае отключения базы от РИБа нельзя допустить автоматического создания элементов.

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

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

1. Если для объекта метаданных в информационной базе (т.е. в данных) установлен режим обновления, отличный от Авто, то используется это значение.

Получить и установить значение этого свойства для каждого объекта метаданных в пользовательском режиме можно с помощью методов ПолучитьОбновлениеПредопределенныхДанных() и
УстановитьОбновлениеПредопределенныхДанных().

Эти методы доступны у объектов типа СправочникМенеджер, ПланСчетовМенеджер, ПланВидовХарактеристикМенеджер, ПланВидовРасчетаМенеджер.

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

2. Иначе если для объекта метаданных в конфигурации установлен режим обновления, отличный от Авто, то используется это значение.

3. Иначе если для информационной базы установлен режим обновления, отличный от Авто, то используется это значение.

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

4. Иначе анализируется вид узла распределенной базы. Если это периферийный узел, то предопределенные данные не будут обновлены (соответствует значению НеОбновлятьАвтоматически).

Если проверка выполняется для центрального узла распределенной базы или для базы, не являющейся распределенной, обновление предопределенных данных будет выполнено (соответствует значению ОбновлятьАвтоматически).

Если база находится в режиме совместимости “Версия 8.3.3”, то алгоритм определения необходимости обновления предопределенных данных выглядит немного по-другому.

Обновление не будет производиться:

  • если в метаданных или в данных установлено НеОбновлятьАвтоматически;
  • если в метаданных или в данных установлено Авто и текущий узел является периферийным.

В противном случае предопределенные данные будут обновлены.

Создание в информационной базе данных, связанных с предопределенными, может быть выполнено следующими способами:

1. При реструктуризации информационной базы в случае, когда разрешено автоматическое создание и обновление предопределенных данных, а также предопределенные данные ранее создавались в этой области данных или информационной базе.

2. При первом обращении к таблице с данными объекта конфигурации. Создание предопределенных элементов будет выполняться при условии, что их создание не запрещено.

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

Обновление данных, связанных с предопределенными, будет выполняться, если:

  • разрешено автоматическое обновление предопределенных данных;
  • предопределенные данные связаны с данными информационной базы;
  • предопределенные данные изменены в конфигураторе.

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

Если в конфигураторе удалить предопределенный элемент, то будут выполнены следующие действия:

  • элемент данных, связанный с предопределенным элементом, будет помечен на удаление;
  • в списке субконто элемента плана счетов будут удалены соответствующие записи;
  • в списках ведущих, базовых и вытесняющих видов расчета будут удалены соответствующие записи.

Установим для справочника Организации в конфигураторе свойство ОбновлениеПредопределенныхДанных в НеОбновлятьАвтоматически и удалим предопределенный элемент ОсновнаяОрганизация.

В пользовательском режиме у элемента справочника, связанного с предопределенным, значение свойства ИмяПредопределенныхДанных стало равным #708c7031-c7bd-45d4-a8c9-65b2fecfde62, где символы после знака “#” – это уникальный идентификатор удаленного элемента метаданных.

При использовании распределенной информационной базы предопределенные элементы из конфигурации передаются вместе с сообщением, содержащим изменения конфигурации.

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

Автоматического создания предопределенных данных в периферийной базе не происходит.

В распределенной базе иногда могут возникать ошибки, которые исправляются после отключения от РИБа, загрузки в периферийную базу конфигурации центральной базы и дальнейшего подключения к распределенной базе.

При работе на платформе 8.3 следует учитывать следующую особенность.

База, у которой главный узел стал не установлен (базу отключили от РИБа), не является периферийной, поэтому при запуске этой базы в пользовательском режиме может произойти обновление предопределенных данных согласно алгоритму, описанному выше.

Чтобы не допустить такого поведения, можно использовать метод глобального контекста УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы() или использовать параметр командной строки в пакетном режиме запуска конфигуратора /SetPredefinedDataUpdate, который предназначен для указания режимов обновления предопределенных данных.

Этот параметр может принимать одно из трех значений:

    • UpdateAutomatically – при реструктуризации информационной базы будет выполняться автоматическое создание предопределенных элементов и обновление существующих значений;
    • DoNotUpdateAutomatically – при реструктуризации информационной базы не будет выполняться автоматическое создание новых предопределенных элементов и обновление их значений;
    • Auto – фактическое значение вычисляется автоматически. Для главного узла информационной базы значение будет равно UpdateAutomatically, для периферийного узла информационной базы будет равно DoNotUpdateAutomatically.

    Командная строка запуска конфигуратора с этим параметром будет выглядеть следующим образом:

    “C:\Program Files\1cv8\8.3.4.437\bin\1cv8.exe DESIGNER /F”ПутьКБазе” /N”Администратор” /P”Пароль” /SetPredefinedDataUpdate -DoNotUpdateAutomatically”

    Таким образом возможно задавать признак обновления предопределенных данных, когда информационная база отключается от РИБ, например, для восстановления работоспособности.

    Так же можно поступить в случае, если с помощью обмена без использования РИБ взаимодействуют две конфигурации, где предопределенные данные задаются в одной базе, а в другую они должны попасть после обмена.

    Для информационной базы, где создаются предопределенные элементы, следует использовать значение UpdateAutomatically, а для второй информационной базы – DoNotUpdateAutomatically.

    В платформе 8.3 для объектов конфигурации, которые могут содержать предопределенные данные (справочники, планы счетов, планы видов характеристик, планы видов расчета), реализована возможность устанавливать свойство ИмяПредопределенныхДанных в значение специального вида, состоящее из символа “#” и текстового представления уникального идентификатора.

    Таким образом можно создавать обработки загрузки предопределенных данных из файла.

    В платформе 8.2.14 появился механизм разделения данных. При использовании разделенной базы предопределенные элементы создавали ряд ограничений.

    Так, было невозможно использовать предопределенные данные для объектов конфигурации, входящих в состав разделителя в режиме “Независимо и совместно”.

    Теперь в платформе 8.3 предопределенные данные можно использовать для объектов, входящих в состав любых разделителей.

    Ссылки на предопределенные элементы более не являются одинаковыми, в том числе и в различных областях (даже для объектов, входящих в состав разделителя в режиме Независимо).

    Например, рассмотрим предопределенный элемент ОсновнаяОрганизация в справочнике Организации.

    Пусть в базе есть две области: с кодами 01 и 02.

    Значит, уникальный идентификатор элемента данных, связанного с элементом ОсновнаяОрганизация в области с кодом 01, не будет равен уникальному идентификатору элемента данных, связанного с элементом ОсновнаяОрганизация в области 02.

    Подведем итоги. Рассмотрим, для чего было внесено столько нововведений в работу с предопределенными данными.

    Прежний вариант использования предопределенных элементов накладывал ограничения при работе в режиме разделенной информационной базы.

    Так, невозможно было использовать предопределенные данные для объектов конфигурации, входящих в состав разделителя в режиме “Независимо и совместно”. Невозможно было связать существующий объект данных с предопределенными данными.

    Один предопределенный элемент имел одинаковую ссылку во всех областях данных.

    При обмене данными с использованием РИБа предопределенные данные передавались только с изменениями конфигурации прикладного решения. Управлять созданием и обновлением предопределенных данных было невозможно.

    Таким образом, рассмотренные нововведения направлены на развитие возможностей платформы по работе в режиме разделенной информационной базы, что особенно актуально в рамках модели SaaS (“программы как сервис”), которую также называют работой “в облаке”.

    You have no rights to post comments

    Предопределенные элементы справочников

    Предопределенные элементы справочников создаются в режиме конфигуратора. В режиме «1С:Конфигуратор» определяются имена предопределенных элементов. Сами элементы, которые хранятся в базе данных, создаются в режиме «1С:Предприятие». Таким, образом предопределенный элемент — это метаданные (имя предопределенного элемента) и данные (сам элемент справочника).

    1С:Предприятие 8.2

    В 1С:Предприятии 8.2 предопределенные элементы добавленные или удаленные в конфигураторе, автоматически добавляются или удаляются в базе данных.

    1С:Предприятие 8.3

    В этой версии платформы, каждый справочник содержит стандартный реквизит «ИмяПредопределенныхДанных». Он создан для хранения предопределенного имени и доступен для программного изменения. При добавлении нового элемента в конфигураторе, этот элемент может быть создан в базе данных или нет — это зависит от свойства справочника «Обновление предопределенных данных». Если установлено значение «Обновлять автоматически», то созданные предопределенные элементы в конфигураторе, автоматически добавятся в базу. Если свойство установлено в значение «Не обновлять автоматически», элементы в базу не добавятся. В таком случае их нужно создать самостоятельно и программно привязать к предопределенным элементам справочника, установив реквизит «ИмяПредопределенныхДанных».

    Комментарии (0)

    О сайте Обратная связь Правила Новости 1С Copyright © 2024
    Цитирование материалов (тексты, изображения, программный код) допускается только с размещением активной ссылки на сайт 1CLenta.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *