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

10.03.20

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Универсальное хранилище настроек:
.cf 11,71Kb
1
1 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

Код

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

 

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

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

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

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

Код формы:

 

 

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

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

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

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

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

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

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

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

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

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

См. также

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

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

21.05.2024    24938    dimanich70    81    

149

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

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

1 стартмани

18.03.2024    4485    3    John_d    11    

57

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

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

12.02.2024    25150    atdonya    25    

58

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

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

30.11.2023    6036    ke.92@mail.ru    17    

65

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

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

28.08.2023    16475    YA_418728146    8    

170

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

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

2 стартмани

22.08.2023    4218    72    progmaster    9    

4

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 1C:Бухгалтерия 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    19103    179    sapervodichka    112    

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


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

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

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

Можно очевидные минусы?
6. herfis 514 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 514 11.03.20 17:22 Сейчас в теме
(7) Без админских прав или без переопределения хранилища их между пользователями не пошаришь. Ну и настройки настройкам рознь. Некоторые все же лучше хранить таблично.
10. alex15650 213 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 749 11.03.20 20:23 Сейчас в теме
Мне больше нравится для хранения настроек обменов разных использовать план обмена "Обмен с сайтом", а там тоже есть реквизит типа "Хранилище". Вот здесь пример использования.
Общее хранилище я почему-то недолюбливаю. То ли руки кривые, то ли еще что, но с ним периодически проблемы возникают.
13. ixijixi 1979 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 311 13.03.20 08:38 Сейчас в теме
Тут уже писали. Использовать ХранилищеОбщихНастроек и не изобретать велосипед.
Оставьте свое сообщение