Свои предопределенные элементы (новый подход)

01.11.14

Разработка - Механизмы платформы 1С

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

Скачать файлы

Наименование Файл Версия Размер
ПредопределенныеЭлементы
.zip 13,42Kb
4
.zip 0.1 13,42Kb 4 Скачать

В данной статье я расскажу, как  мы решили проблему предопределенных элементов (отказались от таких функций, как найтиПоКоду, НайтиПоНаименованию …). Скажу сразу, что в этой статье под предопределенным элементом подразумевается элемент справочника «ПредопределенныеЭлементы», далее ПЭ.

Сначала подумаем, зачем они вообще нужны, как мне кажется, это две функции

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

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

 

Итак, пойдем по пунктам

 

Легко получить значение (ссылки) в коде.

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

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

ОсновнойКонтрагент = ПредопределенныеЭлементы.ПолучитьПредопределенноеЗначение(«ОсновнойКонтрагент»);

 

Пользователь не может повлиять на значение

Права на изменение справочника «Предопределенные значения» есть только у роли полные права, все остальные имеют право «только чтение» и «Просмотр».

Так же добавлен реквизит «ЗапретРедактирования» который не даст пользователю менять объект являющимся предопределенным (Объяснить не элемент справочника «ПредопреденноеЗначение» а тот объект который вы указали в реквизите «Элемент»). ЗапретРедактирования реализован подпиской на событие по всем основным объектам которые мы можем сделать «предопределенными».

 

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

Система работает как в управляемом, так и в обычном приложении. Для внедрения добавляем подсистему в конфигурацию и радуемся жизни.

 Создание «предопределенного значения» справочники/ПредопределенныеЗначения/Добавить откроется форма, в которой мы должны заполнить основные параметры

  • Наименование (по нему мы сможем в дальнейшем получать значение Элемента)
  • Элемент (ссылку на элемент который мы хотим получать в коде)  
  • Запрет редактирования (если установить галку, то система не даст пользователю записать объект, указанный в поле Элемент).  

После того, как мы его запишем, можем использовать его в коде.

  https://vk.com/club71616023 автор igo1

Предопределенные Элементы

См. также

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    4512    dsdred    53    

71

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

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

24.01.2024    5289    YA_418728146    25    

63

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6408    dsdred    36    

111

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    18473    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12087    human_new    27    

74

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    8819    YA_418728146    6    

141

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    6279    sebekerga    54    

94

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    15984    SeiOkami    31    

103
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ekaruk 4896 01.11.14 17:02 Сейчас в теме
И в чем преимущество по сравнению с использованием обычных предопределенных элементов?
Конфигурация в любом случае изменена.
По скорости платформенная функция ПредопределенноеЗначение() в любом случае быстрее, чем обращение к модулю с повторным использованием. Работает на клиенте и сервере.
С 8.3.3 платформа позволяет без проблем переназначать предопределенные элементы в режиме пользователя.
Не вижу причин использования дополнительной прокладки между данными.
dj_serega; Stim213; +2 Ответить
2. igo1 266 01.11.14 19:10 Сейчас в теме
(1) ekaruk,
Если вы переносите свой код в другую конфигурацию можно перенести справочник, и не придется менять основные объекты (избегаем проблем если при обновлении появятся новые ПЭ). также можно заблокировать от изменений любые объекты не внося изменения в конфигурацию.
Например пишем вешнюю обработку и используем наши ПЭ и ни каких изменений в основной поставке.
По поводу быстродействия функции ПредопределенноеЗначение() не уверен, что она быстрее чтения из кэша.

Файл предоставлен в виде поставки и не вносит изменений в другую поставку, что не мешает обновлению.

Больше не придумал, но и этого достаточно.
cleaner_it; +1 1 Ответить
3. cleaner_it 220 02.11.14 07:29 Сейчас в теме
(2) всё верно, одно только "но" - сама тема заезжена до безобразия.
4. DAnry 8 05.11.14 13:49 Сейчас в теме
Согласен с ekaruk. В предложеном методе все равно необходимы внесения изменения в конфигурацию. В таком случае, на мой взгляд, лучше использовать стандартную методику предопределенных элементов. А "аккуратное" обновление для програмиста сделать не проблема...
5. igo1 266 06.11.14 11:31 Сейчас в теме
(4) DAnry,
В данном случае не надо вносить изменений в конфигурацию, файл устанавливается как отдельная конфигурация и ни как не влияет на основную, в плане данных и метаданных.
6. Stim213 415 07.11.14 09:29 Сейчас в теме
Хоть я не поддерживаю подобные костыли, но вынужден признать, что подобный подход с отдельным справочником гораздо лучше, чем использование обычных предопределенных элементов.
Разумеется, это касается только типовых баз на поддержке обновления.
Лучше добавить один справочник с ПЭ 10 различных типов справочников, чем изменять состав предопределенных элементов этих 10 справочников. Геморой, который настанет, когда с типовым обновлением придет изменение состава ПЭ или способа их отображения - не стоит этих удобств.

Рамзес; serg_infostart; +2 Ответить
7. Team leader 12 26.10.17 19:54 Сейчас в теме
8. igo1 266 27.10.17 15:59 Сейчас в теме
(7) тут только малая часть из того, что используем мы, легко добавляется любой тип, массив, структура, список и тд.
Очень удобно.
9. murat_ 33 15.02.19 17:00 Сейчас в теме
В запросе все же не получить предопределенное значение через ЗНАЧЕНИЕ().
Рамзес; +1 Ответить
10. igo1 266 15.02.19 18:10 Сейчас в теме
Почему нет, можно предварительно из справочника собрать временную таблицу, и стыковаться с ней.
в результате будет нечто похожее.
r.zdorkin; +1 Ответить
11. selez-a 17 12.09.19 10:35 Сейчас в теме
(9) Для получения значения в запросе с использованием конструкции ЗНАЧЕНИЕ() использовал конструкцию
ВЫРАЗИТЬ(ЗНАЧЕНИЕ(Справочник.ПредопределенныеЗначения.ПредопределенноеЗначение) Как Справочник.ПредопределенныеЗначения).Значение.
Оставьте свое сообщение