1с сохранение настроек внешней обработки
Настройки пользователя в 1С обычно разделены на три части.
Во-первых, платформа 1С позволяет каждому пользователю делать свои собственные настройки 1С для удобства. Например, настройки 1С отчетов СКД.
Во-вторых, в каждой типовой и не типовой конфигурации обычно есть много обработок, которые выполняют сервисные действия. Обработки требуют настройки. Жалко терять время, заново вводя настройки при каждом открытии обработки.
И наконец в-третьих, самому программисту, чтобы программа была универсальна, некоторые значения по-умолчанию лучше не прописывать в коде программы, а хранить в каких-либо настройках.
Где хранить все эти настройки в 1С?
Как настройки 1С сохраняли раньше
В толстом клиенте 1С платформа предлагала следующий стандартный вариант:
- Когда требуется запомнить настройку 1С, программист использует функцию
СохранитьЗначение(«ИмяНастройки», Значение); - Чтобы прочитать настройку 1С, используется функция
Значение = ВосстановитьЗначение(«ИмяНастройки», Значение);
Соответственно программист создает кнопки сохранения и восстановления настроек 1С, а пользователь использует этот механизм (ну или программист сохраняет их автоматически).
В качестве значения можно использовать не только число или строку, но и например Структуру – тип, который позволяет хранить в себе множество значений с их наименованиями, например:
Настройки = Новый Структура();
Настройки.Вставить(«ИмяНастройки», Значение);
Значение = Настройки.ИмяНастройки;
Настройка 1С сохраняется для того пользователя, который нажал разработанную программистом кнопку сохранения настроек 1С (или под которым эти действия выполнились автоматически). Настройки 1С хранятся при этом в текстом файле в папке с базой данных (при использовании файловой базы данных).
Также программист был волен разрабатывать свои произвольные методы хранения настроек 1С с использованием обычных методов – например, с помощью работы с текстовыми и XML файлами – сохранять настройки 1С произвольным образом в файл.
В типовых конфигурациях настройки 1С отчетов сохранялись в регистр сведений. А настройки 1С отчетов СКД можно сохранить в файл XML.
Стандартное хранилище настроек 1С
Все эти возможности остались и в новой платформе 8.2, но появился наконец некий «стандартный метод» сохранения настроек – Хранилище настроек 1С.
Механизм делится на две части – стандартные и пользовательские хранилища настроек 1С. Стандартное реализовано в платформе 1С, пользовательские – это объект 1С, который создает и программирует программист.
Стандартное хранилище настроек 1С используется платформой по умолчанию в тонком клиенте для сохранения настроек 1С пользователя в следующих механизмах платформы:
- Командный управляемый интерфейс
- Формы
- Настройки и варианты отчетов.
Программист может использовать стандартное хранилище настроек 1С из кода программ на языке 1С способом, подобным тому, что был раньше:
- Когда требуется запомнить настройку
ХранилищеОбщихНастроек.Сохранить("ИмяОбъекта", "ИмяНастроек", Значение); - Чтобы прочитать настройку
Значение = ХранилищеОбщихНастроек.Загрузить("ИмяОбъекта", "ИмяНастроек", Значение); - Чтобы получить список настроек
Список = ХранилищеОбщихНастроек.ПолучитьСписок("ИмяОбъекта");
Настройки 1С сохраняются непосредственно в базе данных, в специальных таблицах.
Как видно, по сравнению со старым механизмом, добавился дополнительный разрез – имя объекта. Платформа, при автоматическом сохранении используется имя объекта 1С в метаданных с указанием вида, например:
Отчет.Продажи
Также появилась возможность управлять именем пользователя, для которого будут сохранены настройки 1С, указав его последним параметром.
Существуют следующие стандартные хранилища настроек 1С:
- ХранилищеСистемныхНастроек
- ХранилищеОбщихНастроек
- ХранилищеНастроекДанныхФорм
- ХранилищеПользовательскихНастроекОтчетов и ХранилищеВариантовОтчетов.
Хранилище настроек 1С
Программист может создать собственные хранилища настроек – в конфигураторе.
Это предполагается делать в следующих случаях:
- Ссылочный контроль при хранении настроек 1С
- Миграция настроек 1С при использовании УРБД
- Специальная структура настроек 1С (для автоматического ее соблюдения)
- Переопределение стандартных хранилищ.
Для создания собственного хранилища настроек 1С – необходимо добавить таковое в конфигураторе в окне конфигурации в ветке Общие/Хранилища настроек 1С.
Переопределить стандартные хранилища настроек 1С, используемые платформой можно в свойствах конфигурации (корневой ветки конфигурации, которую программисты обычно называют Корень или Голова).
Если в свойствах пустая строка – используется стандартное хранилище настроек 1С, иначе – используется выбранное, а стандартное не используется.
В тонком управляемом клиенте 1С использование хранилища возможно автоматически:
-
В управляемой форме есть два параметра
o Автоматическое сохранение данных – будет проводиться автоматически, в стандартное хранилище настроек форм
o Сохранение данных в настройках 1С – использовать список – в списке реквизитов формы появится колонка Сохранение, в которой можно проставить галочки, который будут сохраняться, а также можно указать созданное хранилище настроек
В толстом клиенте для использования требуется в коде на языке 1С прописывать непосредственный вызов сохранения настроек 1С:
ХранилищаНастроек.ИмяХранилища.Сохранить();
При добавлении в конфигурацию собственного хранилища настроек 1С требуется на языке 1С прописать обработчики загрузки и сохранения значений, иначе хранилище работать не будет.
Собственно в этих функциях Вы самостоятельно пишете код сохранения значения (в стандартное хранилище или в файл или в справочник или в регистр сведений и т.п.), и загрузки значения.
Использование объекта ХранилищеОбщихНастроек. Считаю этот вариант наиболее удобным и гибким.
Объект доступен в глобальном контексте. Содержит следующие методы:
Сохранение настроек:
// ключи могут быть произвольными строками
КлючОбъекта = " MIKO " ;
КлючНастроек = "ПанельТелефонии" ;
// настройки могут быть произвольного типа
Настройки = Новый Структура ( "Это настройки произвольного типа, к примеру структура" , "" );
ИмяПользователя = ИмяПользователя ();
// имя пользователя - пользователь владелец настроек, если параметр не указать,
// то настройки будут сохранены для ТЕКУЩЕГО пользователя
ИмяПользователя = ИмяПользователя ();
ХранилищеОбщихНастроек .C охранить ( КлючОбъекта , КлючНастроек , Настройки , , ИмяПользователя );
Под пользователем понимается именно пользователь информационной базы! Пример получения имени текущего пользователя:
// получим имя
ИмяТекущегоПользователя = ИмяПользователя ();
// в типовых конфигурация используется справочник "Пользователи"
// в этом справочнике в стандартном реквизите "Код" обычно
// хранят информацию по имени пользователя, пример получения имени:
ИмяПользователя = Справочники . Пользователи . НайтиПоНаименованию ( "Администратор" ). Код ;
// обычно "Код", для этого справочника - строка фиксированной длинны, потому вероятно разумно обрезать пробелы справа:
ИмяПользователя = СокрП ( ИмяПользователя );
Восстановление настроек:
КлючОбъекта = " MIKO " ;
КлючНастроек = "ПанельТелефонии" ;
ВладелецНастроек = ИмяПользователя ();
// Для восстановления настроек необходимо воспользоваться функцией Загрузить
СтруктураНастроек = Неопределено;
Попытка
СтруктураНастроек = ХранилищеОбщихНастроек . Загрузить ( КлючОбъекта , КлючНастроек ,, ВладелецНастроек );
// если настроек нет, то будет возвращено значение "Неопределено"
Исключение
Сообщить ( "Нет прав на восстановление настроек." );
КонецПопытки;
Если СтруктураНастроек = Неопределено Тогда
Сообщить ( "Не вышло восстановить настройки!" );
КонецЕсли;
ВладелецНастроек - это имя пользователя, владельца настроек. Параметр очень важный.
Настройки других пользователей могут получать ТОЛЬКО пользователи с расширенными правами.
Необходимо право "АдминистрированиеДанных".
Пробелы справа игнорируются!
Плюсы
- Возможно работать со значениями настроек других пользователей.
- Доступность: Сервер, толстый клиент, внешнее соединение.
Получение всех ключей настроек по ключу объекта
// Пример получения всех настроек по ключу объекта
КлючОбъекта = "MIKO" ;
ВладелецНастроек = ИмяПользователя ();
Попытка
// возвращает список значений
// элементы списка - ключи настроек
СтруктураНастроек = ХранилищеОбщихНастроек . ПолучитьСписок ( КлючОбъекта , ВладелецНастроек );
Исключение
Сообщить ( "Нет прав на восстановление настроек." );
КонецПопытки;
Подведем итог
В рамках этой заметки я рассказал о двух вариантах работы с настройками пользователя. Пробуйте :).
При работе с программой 1C пользователь может настраивать огромное количество разных вещей. Причем начать можно с настройки сервисной обработки, а закончить формированием разных отчетов и прочего. Для того, чтобы не тратить свое время на постоянную настройку и нудные, повторяющиеся действия, любой параметр можно сохранить. Это позволяет экономить время и силы.
1С: Предприятие имеет весь необходимый функционал, который позволяет сохранять, а в случае необходимости и восстанавливать все заданные параметры. При этом не нужно быть каким-то специалистом и знать уйму команд – все делается короткими командами, которые можно найти в инструкции, интернете или разделе помощи программы.
Приобретя для фирмы программу «1С: Бухгалтерия» и при правильной установке настроек вы сможете сэкономить свое время работая с данной программой. Мы подготовили для вас простую инструкцию, позволяющую самостоятельно быстро настроить программу.
Все хранилища делятся на два вида. Давайте рассмотрим примеры их использования на программе 1С: Бухгалтерия 3.0.
Стандартное хранилище настроек пользователя 1С
В программе есть специальная функция стандартного хранения, которая предустановлена еще на стадии разработки. Если вы выбираете такой вариант, то все установки, которые вы сделаете, будут храниться в таблице ИБ.
Администратор сможет это поменять. Достаточно задать новое место для хранения и определить это место в конфигурации. Особо актуально это, когда нужен контроль ссылочной целостности, перемещение настроек между двумя базами или если нужна конкретная структура хранения ваших настроек.
Стандартное хранилище системой используется в том случае, если поля будут пустыми.
Ниже представлены примеры параметров и кодов, которые может использовать администратор при указании нового места хранилища:
Механизм работы
Как работает «Хранилище настроек»? Оно является объектом метаданных, который пописывает порядок хранения установленных настроек у некоторых объектов. Так, для примера мы откроем программу, «1C: Бухгалтерия», перейдем в конфигурационный режим и развернем дерево данных. Нам понадобится узел, который находится по следующему пути:
Таким образом, разработчик может организовать хранение параметров. Можно указать в свойствах объекта или в свойствах конфигурации о том, что данное место будет использоваться для того, чтобы хранить установленные формы.
Как использовать в обработках и отчетах
Когда мы открываем свойства любого отчета в режиме конфигурирования, то на вкладке «прочее» можем увидеть параметр, который определяет заданное хранилище для сохранения и восстановления установок конкретного отчета.
Для управляемых форм есть два варианта:
- Сохранить параметры в хранилище, которое уже было установлено при закрытии отчета или формы, а также восстановить при новом открытии;
- Восстановление и сохранение в настройках. Для этого нужно зайти в список реквизитов и напротив каждого реквизита, который нужно сохранить ставим галочку в соответствующей колонке.
Формы отчета и реквизиты
Благодаря способу, который мы описали выше, вы можете сохранять данные не в таблицах системы, а выбирать отдельные объекты конфигурации. Для того, чтобы реализовать такой механизм, программист использует специальные описанные алгоритмы, которые и отвечают за сохранение/восстановление настроек.
Благодаря хранилищу настроек, можно не только сохранить, но и просмотреть и настроить параметры отчетов, которые вы формируете. Это позволяет в автоматическом режиме заполнить форму настройки и оптимизировать работу.
Если есть какие-то вопросы, связанные с настройкой, то всегда можно обратиться к специалистам, готовым помочь в этом вопросе.
В работе службы сопровождения 1С нередко возникают ситуации, когда нужно обеспечить отсутствие пользователей в базе для проведения каких-то регламетных процедур или сервисных работ. Некоторые такие процедуры должны выполняться регулярно, и было бы удобно настроить расписание установки блокировки на вход в информационную базу.
1) Создание обработки "Блокировка работы пользователей" для запуска по расписанию
Не секрет, что с некоторых пор в типовых конфигурациях 1С появилась возможность запуска дополнительных обработок по расписанию.
Для этого в модуле внешней обработки в процедуре СведенияОВнешнейОбработке добавляем команду с вариантом использования "ВызовСерверногоМетода"
Также добавляем в модуль процедуру "ВыполнитьКоманду(ИдентификаторКоманды)", которая будет обрабатывать вызов нашего серверного метода
В процедуре "ВыполнитьУстановку" будем заполнять необходимые реквизиты блокировки и затем вызывать процедуру глобального контекста "УстановитьБлокировкуСеансов".
Теперь все готово для того, чтобы зарегистировать нашу обработку в списке дополнительных отчетов и обработок и настроить расписание запуска
2) Сохранение произвольных параметров для дополнительных обработок
Для сохранения настроек воспользуемся объектом "ХранилищеОбщихНастроек" и его методом
Сохранить(<КлючОбъекта>, <КлючНастроек>, <Настройки>, <ОписаниеНастроек>, <ИмяПользователя>)
По умолчанию (если параметр <ИмяПользователя> не задан) настройки сохраняются для текущего пользователя. Однако, если у пользователя, вызвашего этот метод
есть права "АдминистрированиеДанных" он может работать с настройками других пользователей и к тому же ИмяПользователя это просто строка - этим-то мы и воспользуемся для решения своей задачи:
мы будем сохранять настройки для "пользователя" ДополнительныеОбработки(естественно никакого пользователя ДополнительныеОбработки у нас в базе нет, это просто ключ, в разрезе которого мы будем хранить настройки для внешних обработок)
<КлючОбъекта> в нашем случае ключом будет Имя внешней обработки для которой сохраняем настройки, а <КлючНастроек> - строка "ДополнительныеНастройки"(имя можно придумать любое).
Сами настройки передаются в параметре <Настройки> тип параметра произвольный. Для нашей задачи мы будем использовать, структуру.
Теперь остается в обработке блокировки пользователей считать сведения о настройках для нашей обработки
прочитать настройки на основании полученных сведений и заполнить реквизиты обработки полученными значениями
В качестве примера реализации описанного выше подхода во вложении приведены обработки:
1. Внешняя обработка "Сохранение настроек доп.обработок" - сохраняет произвольный перечень параметров для выбранной на форме дополнительной обработки.
2. Внешняя обработка "Блокировка пользователей (автозапуск)" - позволяет запускать обработку блокировки по расписанию и считывать сохраненные для обработки настройки.
Читайте также: