1с хранилищеобщихнастроек метод объекта не обнаружен сохранить
Совсем недавно передо мной встала задача, сделать внешнюю обработку в УТ11, которая как известно работает полностью на управляемых формах. Какое же было мое удивление, когда я обнаружил, что у управляемой формы реквизиты заведенные как реквизиты формы, при закрытии и открытии ее заново могут сохраняться и восстанавливаться, точно так же как это было в 8.1, достаточно только поставить напротив галочку сохраненять и в свойствах формы выбрать "АвтоматическоеСохранениеДанныхВНастройках" - Использовать. А что же делать с реквизитами, которые выступают в роли реквизитов объектов ? Погуглив и так ничего толком не найдя, я приступил к экспериментам. Делюсь полученнными результатами.
Поскольку в платформе (8.2.16.362) механизим сохранения реквизитов объектов так и не был найден, осталось только одно - это програмное сохранение настроек при закрытии обработки и программное восстановление при открытии.
За основу примера была взята обработка с конкурса БиТа отсюда Результаты конкурса для участников INFOSTART EVENT 2012 от Первого Бита. за что им кстати огромное спасибо.
К обработке, для наглядности, я еще добавил 2 реквизита. Реквизит1 - тип строка и Реквизит2 -тип "Произвольный", чтобы было еще что-то, кроме "таблицы значений".
Итак, обо всем по порядку:
I. Было создано две процедуры:
&НаСервере
Процедура СохранитьНастройки ()
КлючНастроек = "Обработка.ЗадачаПоУТ_11_шаблон" ;
Настройки = Новый Соответствие ;
Настройки . Вставить ( "ТаблицаЗначений" , Объект . Свойства . Выгрузить ());
Настройки . Вставить ( "Реквизит1" , Объект . Реквизит1 );
Настройки . Вставить ( "Реквизит2" , Объект . Реквизит2 );
ОбщегоНазначения . ХранилищеОбщихНастроекСохранить ( "Обработка.ЗадачаПоУТ_11_шаблон" , КлючНастроек , Настройки );
&НаСервере
Процедура ВосстановитьНастройки ()
ЗначениеНастроек = ОбщегоНазначения . ХранилищеОбщихНастроекЗагрузить ( "Обработка.ЗадачаПоУТ_11_шаблон" , КлючНастроек );
Если ТипЗнч ( ЗначениеНастроек ) = Тип ( "Соответствие" ) Тогда
ЗначениеИзНастройки = ЗначениеНастроек . Получить ( "ТаблицаЗначений" );
Объект . Реквизит1 = ЗначениеНастроек . Получить ( "Реквизит1" );
Объект . Реквизит2 = ЗначениеНастроек . Получить ( "Реквизит2" );
Объект . Свойства . Загрузить ( ЗначениеИзНастройки );
II. Затем эти процедуры были прописаны в соответствующих процедурах, выполняющихся при открытии и закрытии формы
&НаСервере
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка )
&НаКлиенте
Процедура ПриЗакрытии ()
Если же по каким то причинам планируется использовать не типовую или не основанную на БСП конфигурацию, то можно заменить текст процедур ВосстановитьНастройки () и СохранитьНастройки () так :
&НаСервере
Процедура ВосстановитьНастройки ()
КлючОбъекта = "Обработка.ЗадачаПоУТ_11_шаблон" ;
КлючНастроек = "Обработка.ЗадачаПоУТ_11_шаблон" ;
ОписаниеНастроек = "Обработка.ЗадачаПоУТ_11_шаблон" ;
Значение = "" ;
ИмяПользователя = "" ;
//ЗначениеНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("Обработка.ЗадачаПоУТ_11_шаблон", КлючНастроек);
ЗначениеНастроек = ХранилищеОбщихНастроек . Загрузить ( КлючОбъекта , КлючНастроек , ОписаниеНастроек , ИмяПользователя );
Если ТипЗнч ( ЗначениеНастроек ) = Тип ( "Соответствие" ) Тогда
ЗначениеИзНастройки = ЗначениеНастроек . Получить ( "ТаблицаЗначений" );
Объект . Реквизит1 = ЗначениеНастроек . Получить ( "Реквизит1" );
Объект . Реквизит2 = ЗначениеНастроек . Получить ( "Реквизит2" );
Объект . Свойства . Загрузить ( ЗначениеИзНастройки );
&НаСервере
Процедура СохранитьНастройки ()
КлючОбъекта = "Обработка.ЗадачаПоУТ_11_шаблон" ;
КлючНастроек = "Обработка.ЗадачаПоУТ_11_шаблон" ;
ОписаниеНастроек = "Обработка.ЗадачаПоУТ_11_шаблон" ;
Значение = "" ;
ИмяПользователя = "" ;
Настройки = Новый Соответствие ;
Настройки . Вставить ( "ТаблицаЗначений" , Объект . Свойства . Выгрузить ());
Настройки . Вставить ( "Реквизит1" , Объект . Реквизит1 );
Настройки . Вставить ( "Реквизит2" , Объект . Реквизит2 );
//ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("Обработка.ЗадачаПоУТ_11_шаблон", КлючНастроек, Настройки);
ХранилищеОбщихНастроек . Сохранить ( КлючОбъекта , КлючНастроек , Настройки , ОписаниеНастроек , ИмяПользователя );
Как это все работает, можно посмотреть скачав приложенную к статье обработку.
Задача: Необходим механизм, позволяющий сохранять произвольные пользовательские данные (настройки). Настройки относятся к внешней обработке, вариант с изменением конфигурации не рассматривается. План видов характеристик трогать тоже нет желания.
В рамках заметки предложено два вариант работы с настройками пользователя.
Мануал для новичков, лучше их лишний раз не путать :) байт; magv; 3sf; adhocprog; bendarik; jif; D_e_X_T_e_R; user832369; tuprikov; json; + 10 – Ответить (3) MaxS, Да и так можно. Настройки будут сохранены / восстановлены по имени текущего пользователя.
Обязательными являются только параметры " КлючОбъекта " и " Настройки ".
(3) Если сохранять настройки по такому принципу, то в роли имени настройки и значения что выступают?? Имени настройки и Значению настройки просто придумать строковые значения? Типа:
(19) Да, можно так, там ещё есть ключ настройки, можно в параметрах процедуры глянуть назначение.В качестве ИмяНастройки желательно уникальное значение, например "МояОбработка.МояФорма"
(3) Спасибо помогло, у меня такой вариант:
в УПП есть очень удобный механизм, реализованный через регистр сведений Сохраненные настройки, пользуюсь им, очень доволен. Вызов выглядит примерно так:
УниверсальныеМеханизмы.СохранениеНастроек(СтруктураНастройки);
УниверсальныеМеханизмы.ВосстановлениеНастроек(СтруктураНастройки);
Есть еще справочник Сохраненные настройки, но мне РС показался более удобным.
Плюсы: - можно сохранять для пользователей, для групп пользователей
- настройка прав, например, для групп сохранять настройки могут только Полные права
- легко посмотреть какие настройки есть в регистре и редактировать некоторые поля из записей регистра. (наименование, пользователь)
- есть флажки автосохранения и автозагрузки настроек, правда придется вызов соответствующих процедур прописывать явно в отчете.
- ключом является имя объекта, так что можно подменить один отчет другим, внешним например, лишь бы имена совпадали, они будут делить настройки. (с другой стороны это может быть минусом)
Объект 1С "Хранилище настроек" - это общий объект конфигурации 1С, который позволяет разработчику создавать собственные механизмы хранения настроек в тех случаях, когда возможности стандартного механизма хранения настроек недостаточны.
Хранилища настроек позволяют разработчику хранить пользовательские настройки не в системных таблицах информационной базы, а в объектах конфигурации (например, в специальных справочниках или в регистрах сведений). Благодаря этому разработчик может реализовать собственный формат хранения этих настроек и собственные алгоритмы работы с этими настройками в случаях:
- когда требуется особенная структура хранения настроек;
- когда необходимо обеспечить передачу настроек в пределах распределенной информационной базы;
- когда существуют особенные требования к администрированию настроек и т.д.
Создание своих настроек может понадобиться в том случае, если:
- необходима миграция настроек между базами данных;
- необходим ссылочный контроль настроек.
В свойствах конфигурации, отчетов, обработок или форм можно переопределить сохранение настроек в хранилище, добавленное разработчиком. А в формах загрузки и сохранения настроек описать алгоритмы, в соответствии с которыми настройки будут сохраняться/восстанавливаться.
Использование стандартных хранилищ настроек 1С
Стандартное хранилище настроек 1С используется платформой по умолчанию в тонком клиенте для сохранения настроек 1С пользователя в следующих механизмах платформы:
- командный управляемый интерфейс; ;
- настройки и варианты отчетов.
По умолчанию в конфигурации имеются следующие хранилища настроек:
- ХранилищеВариантовОтчетов — для доступа к настройкам вариантов отчетов.
- ХранилищеПользовательскихНастроекОтчетов — для доступа к пользовательским настройкам отчетов.
- ХранилищеНастроекДанныхФорм — для доступа к пользовательским настройкам данных форм.
- ХранилищеОбщихНастроек — для доступа к общим настройкам.
- ХранилищеСистемныхНастроек — для доступа к системным настройкам.
- ХранилищеПользовательскихНастроекДинамическихСписков — для доступа к пользовательским настройкам динамических списков.
К каждому из этих хранилищ можно обратиться как к свойству глобального контекста.
Стандартные хранилище разработчик может использовать для своих нужд, сохраняя различные настройки в разрезе пользователя, объекта и самой настройки.
У управляемой формы реквизиты заведенные как реквизиты формы, при закрытии и открытии ее заново могут сохраняться и восстанавливаться, достаточно только поставить напротив галочку сохранять и в свойствах формы выбрать "АвтоматическоеСохранениеДанныхВНастройках" - Использовать.
Подробнее в этой статье Как сохранять и восстанавливать значения реквизитов на форме? и там же пример для обычных форм.
А что же делать с реквизитами, которые выступают в роли реквизитов объектов ?
у них такой настройки нет нет - напишем:
Открыв обработку и заполним поля закрываем ее, при следующем открытии все поля заполнены из сохраненных настроек:
Похожие FAQ
Как заполнить табличную часть формы программно? 6Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 42
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора База 1С при запуске уходит в дамп и вылетает 1
В последнее время частенько обращаются пользователи у которых после замены или ремонта компьютера 1С не запускается, а точнее при открытии уходит в dump и вылетает. Как правило, решение одно: Отключить аппаратное ускорение видеокарты В Window Посмотреть все результаты поиска похожих
Еще в этой же категории
Как обновить динамический список или реквизит на форме клиента? 19Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Как установить параметр динамического списка? 14
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Список НЕ модальных методов в 1С 4
Найдено в интернете но говорят что с диска ИТС. Табличная часть
Читайте также: