Андрей Смирнов
Время чтения: ~6 мин.
Просмотров: 55

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

Интересное, Программирование

Сегодня встретил ‘самописную’ конфигурацию, где разработчик хранил настройки пользователей в регистре сведений. Не понятно зачем было так извращаться, при наличии стандартного хранилища настроек – ‘ХранилищеОбщихНастроек’. Почему-то многие даже не знают о таком механизме, который позволяет легко и просто записывать и извлекать общие настройки каждого пользователя для любого объекта системы.

‘ХранилищеОбщихНастроек’ – представляет собой объект глобального контекста, с помощью которого осуществляется управление общими настройками для отдельного взятого пользователя.

Попробуем реализовать простой пример общих настроек конфигурации ‘Футбольные клубы’. Допустим у нас есть 3 настройки:

  • Любимый клуб;
  • Обновлять статистику автоматически при загрузке системы;
  • Отображать панель отчетов.

Добавляем общую форму настроек и отображаем эти реквизиты на форме:

izobrazhenie-9.png
Настройки пользователя.

Теперь с помощью метода ‘хранилищеобщихнастроек.сохранить‘ реализуем их запись в конфигурацию:

Параметры метода ‘Сохранить’:

* <КлючОбъекта>(обязательный) / Тип: Произвольный / Ключ объекта настройки. Здесь мы можем указать значение любого типа, характеризующий наш объект. В нашем случае это общие настройки конфигурации – ‘Конфигурация’. Если это были бы настройки документа, то можно было бы указать к примеру ‘”Документ.БонусыИгрокам’ и т.д. * <КлючОбъекта>(обязательный) / Тип: Произвольный / Ключ объекта настройки. Здесь мы можем указать значение любого типа, характеризующий наш объект. В нашем случае это общие настройки конфигурации – ‘Конфигурация’. Если это были бы настройки документа, то можно было бы указать к примеру ‘”Документ.БонусыИгрокам’ и т.д. * <КлючНастроек> (необязательный) / Тип: Строка.  / Ключ сохраняемых настроек. У одного ключа объекта, может быть много настроек с разными ключами: ‘ОбщиНастройкиПользователя’, ‘НастройкиУсловногоОформления’, ‘НастройкиИнтерфейса’ и т.д. * <Настройки> (обязательный) / Тип: Произвольный.  / Содержит настройки, которые нужно сохранить в хранилище. Собственно это и есть наши с вами настройки. В данном примере я буду хранить настройки в универсальной коллекции ‘Структура’. * <ОписаниеНастроек> (необязательный) / Тип: ОписаниеНастроек. / Описание настроек. * <ИмяПользователя> (необязательный) / Тип: Строка.  / Имя пользователя, настройки которого сохраняются. Если не указан, то сохраняются настройки текущего пользователя. Важно заметить что в качестве параметра ‘ИмяПользователя‘ у нас ничего не передается, соответственно мы работаем с настройками текущего пользователя.

Далее с помощью метода ‘ хранилищеобщихнастроек.загрузить‘ реализуем получение наших настроек:

Здесь параметры аналогичные методу “Сохранить” – все понятно и просто. Если что F1!

С помощью данного метода ‘Загрузить’ мы можем использовать эти настройки в любых алгоритмах нашей конфигурации.

izobrazhenie-10.png
Настройки пользователя.

Так же стоит обратить внимание на еще два интересных метода:

  • ХранилищеОбщихНастроек.ПолучитьСписок – получаем список всех настроек пользователя по параметру ‘<КлючОбъекта>’;
  • ХранилищеОбщихНастроек.Удалить – удаляем настройки по параметрам ‘<КлючОбъекта>’ и ‘<КлючНастроек>’ пользователя.

В общем ‘ХранилищеОбщихНастроек‘ -это очень полезная штука для хранения информации о настройках пользователей. Пользуемся!

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

Решение

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

Ранее уже работал с хранилищем в статье 1С. Очистка произвольных настроек из хранилища системных настроек.

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

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

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

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

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

1c-sokhraneniye-nastroyek-obrabotki_01.png

Назначение объекта конфигурации «Хранилище настроек» понятно из названия — хранить различные пользовательские настройки. Область применения данного объекта широка — в любой, хоть сколь-нибудь серьезной конфигурации требуется хранить какие-либо пользовательские настройки.

Для удобства программистов в каждой конфигурации существует несколько стандартных хранилищ настроек, кроме этого есть возможность создать столько дополнительных хранилищ настроек, сколько будет нужно.

hranilishe-1.png
Хранилища настроек в конфигураторе

Сначала разберемся со стандартными хранилищами настроек, которые присутствуют в любой конфигурации 1С начиная с версии 8.2.

Стандартные хранилища настроек

Итак, по умолчанию, в конфигурации имеются следующие хранилища настроек:

  • ХранилищеВариантовОтчетов — для доступа к настройкам вариантов отчетов.
  • ХранилищеПользовательскихНастроекОтчетов — для доступа к пользовательским настройкам отчетов.
  • ХранилищеНастроекДанныхФорм — для доступа к пользовательским настройкам данных форм.
  • ХранилищеОбщихНастроек — для доступа к общим настройкам.
  • ХранилищеСистемныхНастроек — для доступа к системным настройкам.
  • ХранилищеПользовательскихНастроекДинамическихСписков — для доступа к пользовательским настройкам динамических списков.

К каждому из этих хранилищ можно обратиться как к свойству глобального контекста.

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

Для работы с хранилищами настроек (как со стандартными, так и с добавленными программистом) используются следующие методы.

Запись и получение настройки:

Удаление лишней/ненужной настройки:

Получение списка настроек:

Параметры «НазваниеОбъекта», «НазваниеНастройки» и «ИмяПользователя» должны строковой тип.

В базе данных, все настройки хранятся в отдельно таблице.

Хранилища настроек создаваемые программистом

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

  • необходимо перемещение настроек между базами данных;
  • необходим ссылочный контроль при хранении настроек;
  • требуется особая структура настроек 1С.

Хранилища настроек добавляют в соответствующем разделе конфигурации.

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

В остальном же, принципы работы с созданным хранилищем практически не отличается от работы со стандартными хранилищами настроек.

Доступ к созданному хранилищу можно получить таким образом:

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

hranilishe-2.png
Хранилища настроек в свойствах конфигурации
hranilishe-3.png
Хранилища настроек в свойствах отчета

Управляемые формы имеют два свойства:

  • Автоматическое сохранение данных — если выбрано значение «Использовать», то данные будут сохраняться автоматически в стандартное хранилище настроек данных форм;
  • Сохранение данных в настройках — если выбрано значение «Использовать список», то в окне реквизитов формы появится столбец «Сохранение», с помощью которого можно указать какие реквизиты формы должны сохраняться, а также появиться возможность выбрать хранилище настроек для этих данных.
hranilishe-4.png
Хранилище настроек в управляемых формах

На этом все, надеюсь данная статья Вам помогла.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Загрузка…Используемые источники:

  • https://craft1c.ru/khranilishheobshhikhnastroek/
  • https://guesto.ru/1c-sokhraneniye-nastroyek-obrabotki/
  • https://1c-programmer-blog.ru/programmirovanie/xranilishhe-nastroek-v-1s.html

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации