Меню Закрыть

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

Guesto notes

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

Решение

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

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

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

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

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

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

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

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

Сохранить( , , , , )

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

Читайте также:  Почему телефон не видит селфи палку

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

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

Загрузить( , , , )

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

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

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

1) Создание обработки "Блокировка работы пользователей" для запуска по расписанию

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

Для этого в модуле внешней обработки в процедуре СведенияОВнешнейОбработке добавляем команду с вариантом использования "ВызовСерверногоМетода"

Также добавляем в модуль процедуру "ВыполнитьКоманду(ИдентификаторКоманды)", которая будет обрабатывать вызов нашего серверного метода

В процедуре "ВыполнитьУстановку" будем заполнять необходимые реквизиты блокировки и затем вызывать процедуру глобального контекста "УстановитьБлокировкуСеансов".

Теперь все готово для того, чтобы зарегистировать нашу обработку в списке дополнительных отчетов и обработок и настроить расписание запуска

Итак, теперь у нас есть обработка, которая запускается по расписанию и устанавливает блокировку работы пользователей.
Все здорово, кроме одного: параметры нашей блокировки (время начала, время окончания, текст сообщения для пользователей и т.д.) нам пришлось прописать непосредственно в коде обработки, соответственно, когда появится необходимость эти параметры поменять — нам придется менять код обработки и заново регистрировать ее.
Не очень красивое решение. Для решения этой проблемы создадим механизм, который позволит сохранять для нашей обработки произвольный набор параметров.

Читайте также:  Z370 совместимость оперативной памяти

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

Для сохранения настроек воспользуемся объектом "ХранилищеОбщихНастроек" и его методом

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

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

Вот собственно и все. Теперь создаем еще одну внешнюю обработку "СохранениеНастроекДопОбработок" и делаем в ней удобную форму для работы с нашим методом "Сохранить".
На форме будем выбирать внешнюю обработку из списка зарегистрированных в базе, а в табличной части будем указывать настройки, которые хотим сохранить в виде "ИмяНастройки-ЗначениеНастройки".

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

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

В качестве примера реализации описанного выше подхода во вложении приведены обработки:

1. Внешняя обработка "Сохранение настроек доп.обработок" — сохраняет произвольный перечень параметров для выбранной на форме дополнительной обработки.

2. Внешняя обработка "Блокировка пользователей (автозапуск)" — позволяет запускать обработку блокировки по расписанию и считывать сохраненные для обработки настройки.

Рекомендуем к прочтению

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

Ваш адрес email не будет опубликован.