В данной статье я расскажу, как мы решили проблему предопределенных элементов (отказались от таких функций, как найтиПоКоду, НайтиПоНаименованию …). Скажу сразу, что в этой статье под предопределенным элементом подразумевается элемент справочника «ПредопределенныеЭлементы», далее ПЭ.
Сначала подумаем, зачем они вообще нужны, как мне кажется, это две функции
- Легко получить значение (ссылки) в коде.
- Пользователь не может повлиять на значение (не на те данные которые он видит, а на значение по которому мы получаем элемент).
В нашем случае мы еще реализовали блокировку изменения значений элемента(данные которые видит пользователь), блокировка устанавливается по желанию создателем ПЭ. Так же можно использовать вместо добавления констант, которые влияют на наши доработки, или просто блокировать некоторые элементы для редактирования.
Итак, пойдем по пунктам
Легко получить значение (ссылки) в коде.
Создан общий модуль, где параметр «повторное использование возвращаемых значений» установлен в «На время сеанса», и небольшая функция получавшая значение по наименованию справочника «ПредопределенныеЭлементы». Таким образом в рамках одного сеанса нам не придется делать повторные запросы к БД при повторном вызове нашей функции, что конечно значительно увеличит скорость работы (даже по сравнению с платформенными ПЭ). Значением элемента может быть любая ссылка или простой тип данных.
Пример получения предопределенного элемента
ОсновнойКонтрагент = ПредопределенныеЭлементы.ПолучитьПредопределенноеЗначение(«ОсновнойКонтрагент»);
Пользователь не может повлиять на значение
Права на изменение справочника «Предопределенные значения» есть только у роли полные права, все остальные имеют право «только чтение» и «Просмотр».
Так же добавлен реквизит «ЗапретРедактирования» который не даст пользователю менять объект являющимся предопределенным (Объяснить не элемент справочника «ПредопреденноеЗначение» а тот объект который вы указали в реквизите «Элемент»). ЗапретРедактирования реализован подпиской на событие по всем основным объектам которые мы можем сделать «предопределенными».
Как внедрить и работать с подсистемой «Предопределенные значения»
Система работает как в управляемом, так и в обычном приложении. Для внедрения добавляем подсистему в конфигурацию и радуемся жизни.
Создание «предопределенного значения» справочники/ПредопределенныеЗначения/Добавить откроется форма, в которой мы должны заполнить основные параметры
- Наименование (по нему мы сможем в дальнейшем получать значение Элемента)
- Элемент (ссылку на элемент который мы хотим получать в коде)
- Запрет редактирования (если установить галку, то система не даст пользователю записать объект, указанный в поле Элемент).
После того, как мы его запишем, можем использовать его в коде.
https://vk.com/club71616023 автор igo1