Универсальное хранилище настроек

10.03.20

Разработка - Универсальные функции

Универсальная константа для хранения любых настроек, например интеграции с API. Легко вносить новые настройки без "ломания" выполнения кода в модулях.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Универсальное хранилище настроек:
.cf 11,71Kb
1 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

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

В качестве реквизитов настройки используются значения любых типов. Я для примера сделал ссылку на справочник, Число, Строку, Булево, Дату и Таблицу значений. Любые другие типы легко добавляются.

Код

Создаем константу, назвал ее УниверсальнаяКонстанта, тип ХранилищеЗначения, в модуль менеджера помещаем код:

 

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

Необходимо создать произвольную общую форму и назначить ее константе. Вид формы:

Форма контсанты

Каждый реквизит настройки вынесен как реквизит формы. Реквизитам указано в свойствах "Сохраняемые данные".

Код формы:

 

 

Использование

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

Настройки = Константы.УниверсальнаяКонстанта.СоздатьМенеджерЗначения().ПолучитьДанные();

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

Для сохранения можно передавать часть настроек, при этом все остальные значения сохранятся:

Параметры = Новый Структура("ЗначениеКонтрагент", КакойтоКонтрагент);
Константы.УниверсальнаяКонстанта.СоздатьМенеджерЗначения().УстановитьДанные(Параметры);

Дополнительно

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

К публикации прикрепил cf где добавлены константа и форма описанные выше. Тестировалось на платформе 8.3.10.2375, стоит режим совместимости 8.3.9.

Вступайте в нашу телеграмм-группу Инфостарт

Универсальное хранилище

См. также

Загрузка и выгрузка в Excel Универсальные функции Программист 1С:Предприятие 8 Россия Бесплатно (free)

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    2536    Abysswalker    7    

41

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

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

14.05.2025    5538    DeerCven    15    

57

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

21.05.2024    46716    dimanich70    83    

165

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    6896    6    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    57945    atdonya    31    

68

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

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

30.11.2023    8674    ke.92@mail.ru    17    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. info1i 244 10.03.20 18:28 Сейчас в теме
Оно, конечно, хорошо, но только до определенного момента, пока количество и размеры хранимых параметров относительно малы и не придают нагрузку при каждом чтении этой константы, потом проблемы с производительностью. А по-хорошему нужно создавать разные константы или регистры в соответствии со спецификой бизнес-процессов. Я, например, делю по бизнес-процессам.
Alien_RS_Forever; ef42; PLAstic; opx; CyberCerber; igormiro; izidakg; wowik; +8 Ответить
2. dsdred 4141 11.03.20 13:42 Сейчас в теме
Если у Вас система на базе БСП (Дополнительные отчеты и обработки) есть вариант хранить данные не создавая константу, соответственно можно дорабатывать не снимая с поддержки при этом можно еще и форму добавить.


вот тут третий пример https://infostart.ru/public/827126/
3. herfis 520 11.03.20 13:47 Сейчас в теме
Легко вносить новые настройки без "ломания" выполнения кода в модулях

Не очень понял, выполнение какого кода и в каких модулях "ломается" при добавлении новых настроек "традиционными" методами.
Плюсы сомнительны, минусы очевидны.
5. v.krivenko 52 11.03.20 14:51 Сейчас в теме
(3) вам надо в настройку добавить любой реквизит, например ЗначениеХ, соответственно меняете код в функции ПолучитьДанные() и процедуре УстановитьДанные() модуля менеджера константы.

В коде, где используете настройку используете: Настройка.ЗначениеХ, при этом не надо заботится о том что настройку пересохранили в предприятии, она будет в любом случае и нужного типа.

Можно очевидные минусы?
6. herfis 520 11.03.20 15:07 Сейчас в теме
(5) То есть из плюсов только отсутствие структурных изменений. Плюс сомнительный, т.к. изначально структурные изменения все равно требуются для добавления константы (т.е. полную поддержку все равно отключать).
Очевидные минусы: мусорная корзина, отсутствие поддержки ссылочной целостности, при сбое можно потерять сразу все значения, тормоза работы с "разбухающим" хранилищем значений, узкое место по блокировкам, невозможность обратиться из запроса. Это навскидку.
Bassgood; +1 Ответить
4. VmvLer 11.03.20 14:24 Сейчас в теме
лениво прочитал (0).
Немного покоробило от категоричности абсолюта: любых, любой...
задал себе вопрос - зачем вникать в этот восторженный костыль?
ответа не получил(
djan; itoptimum; +2 1 Ответить
7. skeptik2105 11.03.20 15:46 Сейчас в теме
Автор в курсе про ХранилищеОбщихНастроек ?


ХранилищеОбщихНастроек.Сохранить("Ключ1", "Ключ2", Значение,,"Ключ3");
Значение = ХранилищеОбщихНастроек.Загрузить("Ключ1", "Ключ2",,"Ключ3");
murat_; Alien_RS_Forever; alexey.kutya; CyberCerber; +4 Ответить
9. herfis 520 11.03.20 17:22 Сейчас в теме
(7) Без админских прав или без переопределения хранилища их между пользователями не пошаришь. Ну и настройки настройкам рознь. Некоторые все же лучше хранить таблично.
10. alex15650 228 11.03.20 18:23 Сейчас в теме
(7) Давно используем такой принцип в системах компании. Есть общая форма настроек с нужными реквизитами, и все реквизиты автоматически сохраняются в хранилище общих настроек и восстанавливаются из него. Админские права не нужны, сохранение и чтение делать в привилегированном режиме.
8. pm74 203 11.03.20 16:37 Сейчас в теме
если нужно, есть универсальное расширение с хранением ,выполнением ... , Б и Ш. лежит на гитхабе
11. uaz.dba 11.03.20 19:16 Сейчас в теме
14. pm74 203 11.03.20 20:55 Сейчас в теме
(11) https://infostart.ru/public/728511/
ссылка на гитхаб в конце публикации
12. Kutuzov 755 11.03.20 20:23 Сейчас в теме
Мне больше нравится для хранения настроек обменов разных использовать план обмена "Обмен с сайтом", а там тоже есть реквизит типа "Хранилище". Вот здесь пример использования.
Общее хранилище я почему-то недолюбливаю. То ли руки кривые, то ли еще что, но с ним периодически проблемы возникают.
13. ixijixi 2070 11.03.20 20:33 Сейчас в теме
Не костыль, а КОСТЫЛИЩЕ! Нагиев.жпг
alexey.kutya; +1 Ответить
15. andreich_ru 12.03.20 01:11 Сейчас в теме
При хранении ссылочных типов данных, как решается проблема с поиском ссылок? Например, если захотим удалить объект, поиск ссылок же не обнаружит его в хранилище значений.
16. v.krivenko 52 12.03.20 08:38 Сейчас в теме
(15)никак.
Это хранилище значения и вы сами должны решить что вы можете в него положить, а что нет.
17. alexey.kutya 314 13.03.20 08:38 Сейчас в теме
Тут уже писали. Использовать ХранилищеОбщихНастроек и не изобретать велосипед.
Для отправки сообщения требуется регистрация/авторизация