Перейти к содержимому

1с как обработке сохранить настройки

  • автор:

1с как обработке сохранить настройки

Добрый день.
Подскажите пож-та, как лучше всего организовать сохранение настроек внешней обработки, не зависимо от пользователя?
Регистра сохраненные настройки нет. Управляемые формы.

На нет и суда нет.

Сделай регистр, в чём вопрос?

в бсп в справочнике внешних обработок хранится

(2) тогда сами придумайте справочник ДополнительныеОтчетыИОбработки, добавьте в него реквизит ХранилищеНастроек с типом ХранилищеЗначения и храните там для каждой внешней обработки структуру с настройками

Ну, для конкретной базы можно в ХранилищеОбщихНастроек писать/читать.

Сохранение произвольных параметров для внешней обработки

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

В предыдущих версиях типовых (УТ10.3, БП 2.0, ЗУП 2.5) никаких проблем с этим не было, т.к. был механизм Дополнительных параметров, позволяющий сохранять и использовать произвольные параметры при работе с внешней обработкой, однако, в новых версиях (УТ11, БП 3.0, ЗУП 3.1 и т.д.) нас лишили этого удобного механизма.

Ниже предлагается описание одного из способов сохранения и использования произвольных доп.параметров для внешних обработок. Для этой цели воспользуемся объектом «ХранилищеОбщихНастроек».

У этого объекта есть метод

По умолчанию (если параметр не задан) настройки сохраняются для текущего пользователя. Важно понимать, что во-первых, это просто строка, а во-вторых, в случае если у пользователя, вызвашего этот метод есть право «АдминистрированиеДанных» он может работать с настройками других пользователей и мы можем сохранить общие настройки для некого виртуального «пользователя» ВнешниеОбработки, естественно, никакого пользователя ВнешниеОбработки у нас в базе нет, это просто ключ, в разрезе которого мы будем хранить настройки для всех внешних обработок.

в нашем случае ключом будет Имя внешней обработки для которой сохраняем настройки, а — строка «ДополнительныеПараметры»(имя можно придумать любое).
Сами настройки передаются в параметре тип параметра произвольный. Удобнее всего для наших целей использовать структуру.

Вот собственно и все. Далее в самой внешней обработке мы сможем считать настройки с помощью метода

Для удобства работы с доп.параметрами можно создать отдельную обработку с помощью которой устанавливать/копировать настройки для любой внешней обработки из тех, что используются в нашей базе.

Буду рад, если кому-то пригодится этот прием в работе. Также,если после прочтения остались вопросы с удовольствием отвечу на них в комментариях.

Как сохранить настройки во внешней обработке для всех пользователей?

Используется облачная 1сfresh со своими ограничениями.
Как сохранить настройки во внешней обработке для всех пользователей?
Использовал уже ХранилищеСистемныхНастроек и ХранилищеОбщихНастроек, но настройки сохраняются и показываются только на тех пользователях, на которых сохранили.

ХранилищеОбщихНастроек.Сохранить("1СНАСТРОЙКИ", "Аккаунт", Объект.Аккаунт, "НастройкиДляВсех"); ХранилищеОбщихНастроек.Загрузить("1СНАСТРОЙКИ", "Аккаунт", "НастройкиДляВсех");
  • Вопрос задан более года назад
  • 564 просмотра

Комментировать
Решения вопроса 1
помогло? отметь решением!

Если это фреш, значит используется скорее всего подсистема Дополнительные отчеты и обработки из БСП, там это делается так:
https://its.1c.ru/db/bsp316doc#content:4:1:issogl3.

Ответ написан более года назад
Нравится 2 1 комментарий
Vadik7777 @Vadik7777 Автор вопроса

Спасибо большое!
Все работает отлично, сохраняется все для всех пользователей!

ХранилищеНастроек = ОбщегоНазначения.ЗначениеРеквизита(ОбработкаСсылка,"ХранилищеНастроек"); НастройкиСтруктура = ХранилищеНастроек.Получить();

Для записи:

ДополнительнаяОбработкаОбъект = Параметры.ДополнительнаяОбработкаСсылка.ПолучитьОбъект(); ДополнительнаяОбработкаОбъект.ХранилищеНастроек = НовыйХранилищеЗначения(НастройкиСтруктура); ДополнительнаяОбработкаОбъект.Записать();

1С. Сохранение настроек обработки

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

Решение

Для сохранения настроек воспользуемся хранилищем настроек. Если конфигурация позволяет, то можно создать свое хранилище, или же воспользоваться одним из системных. Считаем, что конфигурация типовая(не редактируется), в качестве хранилища будем использовать ХранилищеНастроекДанныхФорм.

В форме определим команду Сохранить настройки, в которой вызовем метод Сохранить() указав ключ объекта, ключ настроек, сами настройки и пользователя:

&НаКлиенте Процедура СохранитьНастройки(Команда) СохранитьНастройкиНаСервере(); КонецПроцедуры &НаСервере Процедура СохранитьНастройкиНаСервере() // Подготовка структуры настроек для сохранения НастройкиОбработки = Новый Структура(); НастройкиОбработки.Вставить("Реквизит1", Объект.Реквизит1); НастройкиОбработки.Вставить("Реквизит2", Объект.Реквизит2); НастройкиОбработки.Вставить("Реквизит3", Объект.Реквизит3); НастройкиОбработки.Вставить("ТабличнаяЧасть1", Объект.ТабличнаяЧасть1.Выгрузить()); // Сохранение настроек в хранилище ХранилищеНастроекДанныхФорм.Сохранить("Обработка_1", "НастройкиЗаполнения", НастройкиОбработки, , ПараметрыСеанса.ТекущийПользователь); КонецПроцедуры 

В форме определим команду Восстановить настройки, в которой спросим про восстановление(пример с вопросом в режиме без модальных вызовов разбирал здесь) и при утвердительном ответе вызовем метод Загрузить() указав ключ объекта, ключ настроек и пользователя:

&НаКлиенте Процедура ВосстановитьНастройки(Команда) Оповещение = Новый ОписаниеОповещения("ВосстановитьНастройкиПродолжение", ЭтаФорма); ТекстВопроса = НСтр("ru = 'Настройки будут замещены сохраненными ранее. Продолжить?'"); ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет); КонецПроцедуры &НаКлиенте Процедура ВосстановитьНастройкиПродолжение(Ответ, ДополнительныеПараметры) Экспорт Если Ответ = КодВозвратаДиалога.Да Тогда ВосстановитьНастройкиНаСервере(); КонецЕсли; КонецПроцедуры &НаСервере Процедура ВосстановитьНастройкиНаСервере() НастройкиОбработки = ХранилищеНастроекДанныхФорм.Загрузить("Обработка_1", "НастройкиЗаполнения", , ПараметрыСеанса.ТекущийПользователь); Если НастройкиОбработки = Неопределено Тогда Возврат; // Нет сохраненных настроек КонецЕсли; // Восстановление настроек из хранилища Объект.Реквизит1 = НастройкиОбработки.Реквизит1; Объект.Реквизит2 = НастройкиОбработки.Реквизит2; Объект.Реквизит3 = НастройкиОбработки.Реквизит3; Объект.ТабличнаяЧасть1.Загрузить(НастройкиОбработки.ТабличнаяЧасть1); КонецПроцедуры 

В итоге у каждого пользователя есть возможность сохранить определенные настройки и при необходимости восстановить их. Можно реализовать сохранение нескольких настроек, если дать возможность указания имени настройки и передавать его при сохранении/восстановлении как ключ настроек.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

https://kodirovanie.vyvod-iz-zapoya-na-domu-moskva-snp.ru/