В помощь разработчику и не только. Хранение констант, периодических констант, "динамических" констант - условно постоянных значений

Публикация № 962639

Программирование - Инструментарий

константы динамические программирование

0
Настройка для хранения периодических условно постоянных значений. Удобное получение при помощи метода общего модуля с различными вариациями параметров. Настройка основана на регистре сведений и плане видов характеристик.

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

Постановка задачи:

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

  • Ссылки - искать по коду или по наименованию?
  • Примитивные типы - например, строка текста в печатной форме - прописывать в коде?

А если эти значения ещё и периодические? А если у ссылочного значения поменяют наименование или код? А может сделать элемент предопределённым?

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

Для чего это:

  • Чтобы проще обновлять типовые конфигурации - не нужно добавлять предопределённые элементы в типовые объекты
  • Чтобы  при изменении наименования, кода ссылочного типа настройка неожиданно не рухнула
  • Чтобы добавить "периодичность" Константам
  • ........

Ранее я использовал настройку основанную на одном регистре со строковым измерением и ресурсом составного типа. Сейчас реализация немного более гибкая - кто хочет использует предопределённые элементы ПВХ, кто хочет создаёт их в Предприятии.

Итак. Реализация.

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

В общем то для минимального исполнения - всё. Можно заходить в предприятие и заполнять регистр. В коде можно получать значения запросом или объектно - ПолучитьПоследнее(..).

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

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

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

И... Обязательно надо установить права на новые объекты!

Настройка создана на платформе 8.3.12.1714. Будет работать начиная с платформы 8.3.5.1068, т.к. испольуется объект "Схема запроса".

0

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

Наименование Файл Версия Размер
Подсистема хранения констант
.cf 15,36Kb
12.12.18
1
.cf 1.0.0 15,36Kb 1 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. triviumfan 10 13.12.18 17:15 Сейчас в теме
Видел подобно https://infostart.ru/public/868392/
И там много "холивара" по этому поводу.
В общем, разница лишь в используемом хранилище. Там автору регистр не понравился.
antonio_i; +1 Ответить
2. antonio_i 35 13.12.18 20:58 Сейчас в теме
(1)
Да, тоже видел.
Для меня удобнее, возможно, просто привычнее - хранить в регистре. Плюс - периодичность.
Судя по наличию таких публикаций механизм хранения доп. констант - полезный инструмент!.
Как хранить - выбирает каждый под свои нужды и для своего удобства.
по сути ведь можно выделить несколько направлений:
- Объект константы
- Справочник
- ПВХ (реквизит значение)
- Регистр
- Макет кто-то предлагал даже
3. triviumfan 10 13.12.18 23:56 Сейчас в теме
(2)
Макет кто-то предлагал даже

Ага, Рарус ещё 10 лет назад со своей Альфой :)
antonio_i; +1 Ответить
4. pm74 123 14.12.18 10:07 Сейчас в теме
(1) было такое
(0) про сабжу , сам использую ПВХ + справочник
выбор такой связки обоснован тем , что помимо просто констант очень часто нужно хранить списки или таблицы произвольного вида
Прикрепленные файлы:
5. antonio_i 35 14.12.18 12:57 Сейчас в теме
(4) Так периодичности нет. Мне она нужна.
Как вариант, думаю, можно добавить такой справочник, чтобы в нём хранить всё, что нельзя в регистре, при этом доработать функцию получения самой константы. Ссылку на справочник хранить в регистре.
Т.е. "скрестить" эти два решения. Тогда будет всё в одном.
6. pm74 123 14.12.18 13:37 Сейчас в теме
(5)
Так периодичности нет.
Добавьте дату в тч , вот вам и периодичность
7. antonio_i 35 14.12.18 13:46 Сейчас в теме
Оставьте свое сообщение