Рейтинг:  0 / 5

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

Доброго времени суток.

Сегодня поговорим о новшестве в платформе 8.3 касающегося предопределенных элементов.

Вступление

Напомню, что раньше на практике, очень часто хотелось глядя в элемент справочника узнать его предопределенное имя. Например Вы создали два предопределнных контрагента и назвали его ИПСидоров и ОООМетеор. И зашили на них некую логику.

Когда все отладили и отработали, выяснилось, что задача была поставлена наоборот и логика для ИП нужна для ООО, а логика ООО для ИП. "Нет проблем", говорим мы и в режиме предприятия переименовываем элементы. Ведь лезть в код гораздо сложнее. Проходит год и Вам поставлена новая задача: для ИП Сидорова настроить еще какую-то логику. Вы лезете в конфигуратор, пишите логику, начинаете проверять и ничего не работает, т.к. в конфигураторе ИПСидоров, а в предприятии - ОООМетеор. Мозг сломан и эти грабли хочется уничтожить. Самое простое и наглядное - это вывести имя предопределенного элемента в форму списка. Вот тут засада, получить имя предопределенного в 8.2 можно только методом. А метод это свои неудобства, его нельзя получить в запросе. Т.е. первое неудобство - получить имя предопределенного по ссылке на справочник.

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

Теперь по делу

Первое, это то, что у справочника появилось свойство "Обновление предопределенных данных".

Обновление предопределенных данных в 1С 8.3

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

Очень интересно, а зачем? Как же нам создать элемент в справочнике? А как хотите, можете создать, а можете и связать его с уже существующим. Теперь у справочника есть реквизит "ИмяПредопределенныхДанных". Мы создаем элемент справочника программно как обычно через "Справочники.Контрагенты.СоздатьЭлемент()" и заполняем его реквизит "ИмяПредопределенныхДанных" равным имени предопределенного элемента. Или же если элемент уже есть, получаем его объект и в нем опять таки заполняем "ИмяПредопределенныхДанных". Все.

И на последок немного сиропа

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

 

Спасибо за внимание.

 

 

Авторизуйтесь пожалуйста