Аналог сохранить значение управляемая форма 1с
Стандартные механизмы сохранения пользовательских данных ("настроек") имеют недостатки:
1. Работают только на компьютере пользователя (т.к. хранятся в папке пользователя, а не в базе)
2. Настройки теряются при динамическом обновлении или смене компьютера
в 8.2 эта проблема решена механизмом платформы
для 8.1 используются встроенные в типовые конфигурации механизмы хранения (регистр сведений "СохраненныеНастройки") для создания более универсальных функций сохранения настроек и сохранения универсальности приходится проверять, какие методы доступны и использовать оптимальные (код ниже)
Интерфейсы использования функций такие же, как и у СохранитьЗначение/ВосстановитьЗначение принцип действия прост, если доступны методы сохранения типовых конфигураций 1С используются они иначе платформенные
Фунции гл_ВосстановитьЗначение; гл_СохранитьЗначение - замена СохранитьЗначение;ВосстановитьЗначение, ТекущийПользовательВСправочникеПользователи; НеДоступныМеханизмыСохраненияНастроекВКонфигурации - вспомогательные
Процедура гл_СохранитьЗначение ( ИмяНастройки , ЗначениеНастройки ) Экспорт
Если НедоступныМеханизмыСохраненияНастроекВКонфигурации () Тогда
СохранитьЗначение ( ИмяНастройки , ЗначениеНастройки );
Иначе
НаименованиеНастройки = "Основная" ;
ТекПользовательВСправочнике = ТекущийПользовательВСправочникеПользователи ();
НаборЗаписей = РегистрыСведений . СохраненныеНастройки . СоздатьНаборЗаписей ();
//Установка отборов
НаборЗаписей . Отбор . Пользователь . Установить ( ТекПользовательВСправочнике );
НаборЗаписей . Отбор . ИмяОбъекта . Установить ( ИмяНастройки );
//Добавление записи настройки в регистр
НоваяЗапись = НаборЗаписей . Добавить ();
НоваяЗапись . ИмяОбъекта = ИмяНастройки ;
НоваяЗапись . Пользователь = ТекПользовательВСправочнике ;
НоваяЗапись . СохраненнаяНастройка = Новый ХранилищеЗначения ( ЗначениеНастройки );
НоваяЗапись . НаименованиеНастройки = НаименованиеНастройки ;
НаборЗаписей . Записать ();
КонецЕсли;
Функция гл_ВосстановитьЗначение ( ИмяНастройки ) Экспорт
Если НедоступныМеханизмыСохраненияНастроекВКонфигурации () Тогда
Возврат ВосстановитьЗначение ( ИмяНастройки );
Иначе
Запрос = Новый Запрос ( "ВЫБРАТЬ ПЕРВЫЕ 1
| СохраненныеНастройки.СохраненнаяНастройка
|ИЗ
| РегистрСведений.СохраненныеНастройки КАК СохраненныеНастройки
|ГДЕ
| СохраненныеНастройки.Пользователь = &Пользователь
| И СохраненныеНастройки.ИмяОбъекта = &ИмяОбъекта
| И СохраненныеНастройки.НаименованиеНастройки = ""Основная""" );
Запрос . УстановитьПараметр ( "Пользователь" , ТекущийПользовательВСправочникеПользователи ());
Запрос . УстановитьПараметр ( "ИмяОбъекта" , ИмяНастройки );
Результат = Запрос . Выполнить ();
Если Результат . Пустой () Тогда
Возврат Неопределено;
Иначе
СохраненноеЗначениеХранилище = Результат . Выгрузить ()[ 0 ]. СохраненнаяНастройка ;
Возврат СохраненноеЗначениеХранилище . Получить ();
КонецЕсли;
КонецЕсли;
ТекущийПользователь = ПользователиИнформационнойБазы . ТекущийПользователь ();
ИмяТекущегоПользователя = ? ( ПустаяСтрока ( ТекущийПользователь ), "НеАвторизован" , ТекущийПользователь );
Возврат Справочники . Пользователи . НайтиПоКоду ( ИмяТекущегоПользователя );
//Для доступности сохранения в конфигурация. должны присутствовать регистр сведений СохраненныеНастройки и справочник Пользователи
Возврат ( Метаданные . РегистрыСведений . Найти ( "СохраненныеНастройки" ) = Неопределено ИЛИ
Метаданные . Справочники . Найти ( "Пользователи" ) = Неопределено);
p.s. Приходилось не раз использовать т.к. стадартные функции не сохраняют в ИБ, а механизмы типовых не универсальны
Захотелось мне сохранить некоторые значения в форме сразу для ВСЕХ ПОЛЬЗОВАТЕЛЕЙ и не "где-то на компе" а в моей базе.
Я хочу совместными усилиями упростить код.
Вариант с добавлением кнопок на форму "СохранитьЗначения / Восстановить значения" не предлагать, так не интересно, хочется "покрутить ручки".
Хороший вариант //infostart.ru/public/22132/ но там надо заводить регистр сведений "СохраненныеНастройки"
Итак вот мой код:
Процедура ПриОткрытии ()
// из "Хранилища" справочника "СохраненныеДанные" вытаскиваем значения некоторых полей и восстановим их на этой форме
//Находим строку для текущего документа.
Поиск= СпрСохранениеНастроек.НайтиПоРеквизиту("НастраиваемыйОбъект" , СокрЛП ( "ОтчетОбъект." + ЭтаФорма . Метаданные (). Имя ) );
Хранилище = Поиск . ХранилищеНастроек . Получить ();
// Присвоим полям формы данные из Хранилища (если данных еще нет, то "молчим" )
Если Хранилище <>НЕОПРЕДЕЛЕНО Тогда
//Находим строку для текущего документа. Если такой записи еще нет, то создаем
Поиск= СпрСохранениеНастроек.НайтиПоРеквизиту("НастраиваемыйОбъект" , СокрЛП ( "ОтчетОбъект." + ЭтаФорма . Метаданные (). Имя ) );
Если ПустаяСтрока ( Поиск ) Тогда
НоваяЗапись = СпрСохранениеНастроек . СоздатьЭлемент ();
НоваяЗапись . НастраиваемыйОбъект = "ОтчетОбъект." + ЭтаФорма . Метаданные (). Имя ;
//Узнаем имя как заданно в конфигураторе;
НоваяЗапись.Описание = "Храним данные для моей формы" ; // краткое описание строки, на какой хрен она нужна
// Запишем в табличную часть "Пользователи" всего одну строку для "Всех пользователей"
// снова ищем строку, она уже записанна, и становимся на нее.
Поиск= СпрСохранениеНастроек.НайтиПоРеквизиту("НастраиваемыйОбъект" , СокрЛП ( "ОтчетОбъект." + ЭтаФорма . Метаданные (). Имя ) );
Элемент = Поиск . ПолучитьОбъект (); // выбираем по этой строке
НоваяСтрока.Пользователь=Справочники.ГруппыПользователей.ВсеПользователи; // в Справ "ГруппыПользователей" есть строка "Все пользователи", ее и берем
НоваяСтрока . ПравоИзменения =Истина;
// Для "Хранилища" справочника "СохраненныеНастройки" укажем какие поля сохранять
СтруктураНастроек = Новый Структура;
// запишем в "Хранилище" справочника "СохраненныеНастройки" указанные данные ( это штатная функция ! )
У управляемой формы реквизиты заведенные как реквизиты формы, при закрытии и открытии ее заново могут сохраняться и восстанавливаться, достаточно только поставить напротив галочку сохранять и в свойствах формы выбрать "АвтоматическоеСохранениеДанныхВНастройках" - Использовать.
Подробнее в этой статье Как сохранять и восстанавливать значения реквизитов на форме? и там же пример для обычных форм.
А что же делать с реквизитами, которые выступают в роли реквизитов объектов ?
у них такой настройки нет нет - напишем:
Открыв обработку и заполним поля закрываем ее, при следующем открытии все поля заполнены из сохраненных настроек:
Похожие FAQ
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 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 Посмотреть все результаты поиска похожих
Еще в этой же категории
Как в Управляемом Приложении настроить автосохранение значений полей формы?
Заходим в свойства формы и для значения АвтоматическоеСохранениеДанныхВНастройках устанавливаем значение "Использовать":
Затем переходим к реквизитам формы и устанавливаем флажки напротив реквизитов, которые необходимо сохранять:
Похожие FAQ
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем 1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое Посмотреть все результаты поиска похожих
Еще в этой же категории
Как обновить динамический список или реквизит на форме клиента? 22
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Динамический список ~ Как на управляемой форме разместить список регистра сведений с отбором? 18
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Как установить параметр динамического списка? 16
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма ~ Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора ~ Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип - Произвольный, Использование - Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами
Как сохранить Значения элементов при закрытии формы и восстановить их при открытии формы?
Это можно сделать через СохранитьЗначения(), ВосстановитьЗначение():
Код 1C v 8.х
Но у этого способа, одно НО - Сохраненые значения будут доступны только на там компьютере, на котором их сохранили!
А чтобы эти значения были доступны с любого компьютера, их нужно хранить в базе, например в константах с типом Хранилище значения:
Перебирая все элементы формы, выбрать только поля ввода и записать их значения в структуру.
Потом структуры записываем в константу:
Код 1C v 8.х
Как сохранять и восстанавливать значения реквизитов на форме?
Похожие FAQ
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 10060 (0x0000274C): Попытка установить соединение была безуспешной 19
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1C медленно работает по сети с базой на SQL Server 20
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П Посмотреть все результаты поиска похожих
Еще в этой же категории
Как обновить динамический список или реквизит на форме клиента? 22
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Динамический список ~ Как на управляемой форме разместить список регистра сведений с отбором? 18
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Как установить параметр динамического списка? 16
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма ~ Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора ~ Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип - Произвольный, Использование - Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами
Читайте также: