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

10.03.20

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

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

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

Наименование Файл Версия Размер
Универсальное хранилище настроек:
.cf 11,71Kb
1
.cf 11,71Kb 1 Скачать

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

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

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

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

Код

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

 

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

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

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

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

Код формы:

 

 

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

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

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

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

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

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

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

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

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

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

См. также

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

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

18.03.2024    2670    0    John_d    8    

54

GUID в 1С 8.3 - как с ними быть

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

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

12.02.2024    4608    atdonya    22    

45

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

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

30.11.2023    3961    ke.92@mail.ru    16    

61

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

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

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

28.08.2023    8822    YA_418728146    6    

141

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2071    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16144    133    sapervodichka    112    

129

Система контроля ведения учета [БСП]

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

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7243    quazare    8    

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


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

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

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

Можно очевидные минусы?
6. herfis 498 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 498 11.03.20 17:22 Сейчас в теме
(7) Без админских прав или без переопределения хранилища их между пользователями не пошаришь. Ну и настройки настройкам рознь. Некоторые все же лучше хранить таблично.
10. alex15650 211 11.03.20 18:23 Сейчас в теме
(7) Давно используем такой принцип в системах компании. Есть общая форма настроек с нужными реквизитами, и все реквизиты автоматически сохраняются в хранилище общих настроек и восстанавливаются из него. Админские права не нужны, сохранение и чтение делать в привилегированном режиме.
8. pm74 199 11.03.20 16:37 Сейчас в теме
если нужно, есть универсальное расширение с хранением ,выполнением ... , Б и Ш. лежит на гитхабе
11. uaz.dba 11.03.20 19:16 Сейчас в теме
14. pm74 199 11.03.20 20:55 Сейчас в теме
(11) https://infostart.ru/public/728511/
ссылка на гитхаб в конце публикации
12. Kutuzov 736 11.03.20 20:23 Сейчас в теме
Мне больше нравится для хранения настроек обменов разных использовать план обмена "Обмен с сайтом", а там тоже есть реквизит типа "Хранилище". Вот здесь пример использования.
Общее хранилище я почему-то недолюбливаю. То ли руки кривые, то ли еще что, но с ним периодически проблемы возникают.
13. ixijixi 1775 11.03.20 20:33 Сейчас в теме
Не костыль, а КОСТЫЛИЩЕ! Нагиев.жпг
alexey.kutya; +1 Ответить
15. andreich_ru 12.03.20 01:11 Сейчас в теме
При хранении ссылочных типов данных, как решается проблема с поиском ссылок? Например, если захотим удалить объект, поиск ссылок же не обнаружит его в хранилище значений.
16. v.krivenko 51 12.03.20 08:38 Сейчас в теме
(15)никак.
Это хранилище значения и вы сами должны решить что вы можете в него положить, а что нет.
17. alexey.kutya 301 13.03.20 08:38 Сейчас в теме
Тут уже писали. Использовать ХранилищеОбщихНастроек и не изобретать велосипед.
Оставьте свое сообщение