0
1С 8.3 : Реквизит ~ Как сохранять и восстанавливать значения Объектов и Реквизитов на форме УП?
У управляемой формы реквизиты заведенные как реквизиты формы, при закрытии и открытии ее заново могут сохраняться и восстанавливаться, достаточно только поставить напротив галочку сохранять и в свойствах формы выбрать «АвтоматическоеСохранениеДанныхВНастройках» — Использовать.
Подробнее в этой статье Как сохранять и восстанавливать значения реквизитов на форме? и там же пример для обычных форм.
А что же делать с реквизитами, которые выступают в роли реквизитов объектов ?
у них такой настройки нет нет — напишем:
Код 1C v 8.3
&НаСервере
Процедура ВосстановитьНастройки()
КлючОбъекта = "ЗагрузкаИЗPDF_All4CF.ru";
КлючНастроек = "ЗагрузкаИЗPDF_All4CF.ru";
ОписаниеНастроек = "ЗагрузкаИЗPDF_All4CF.ru";
ИмяПользователя = "";
ЗначениеНастроек = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта, КлючНастроек, ОписаниеНастроек, ИмяПользователя);
Если ТипЗнч(ЗначениеНастроек) = Тип("Соответствие") Тогда
Объект.Склад = ЗначениеНастроек.Получить("Склад");
Объект.Организация = ЗначениеНастроек.Получить("Организация");
Объект.ПутьКPDF2TXT = ЗначениеНастроек.Получить("ПутьКPDF2TXT");
Объект.ПутьКPDF = ЗначениеНастроек.Получить("ПутьКPDF");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ВосстановитьНастройки();
КонецПроцедуры
&НаСервере
Процедура СохранитьНастройки()
КлючОбъекта = "ЗагрузкаИЗPDF_All4CF.ru";
КлючНастроек = "ЗагрузкаИЗPDF_All4CF.ru";
ОписаниеНастроек = "ЗагрузкаИЗPDF_All4CF.ru";
ИмяПользователя = "";
Настройки = Новый Соответствие;
Настройки.Вставить("ПутьКPDF2TXT", Объект.ПутьКPDF2TXT);
Настройки.Вставить("ПутьКPDF", Объект.ПутьКPDF);
Настройки.Вставить("Склад", Объект.Склад);
Настройки.Вставить("Организация", Объект.Организация);
ХранилищеОбщихНастроек.Сохранить(КлючОбъекта, КлючНастроек, Настройки, ОписаниеНастроек, ИмяПользователя);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
СохранитьНастройки();
КонецПроцедуры
Открыв обработку и заполним поля закрываем ее, при следующем открытии все поля заполнены из сохраненных настроек:
18.10.11 — 11:13
САБЖ
1 — 18.10.11 — 11:15
КНОПКОЙ
2 — 18.10.11 — 11:15
в настройках пользователей
3 — 18.10.11 — 11:15
(1) Какой?:)
4 — 18.10.11 — 11:17
(2) А это как? Можешь дать пример кода?
5 — 18.10.11 — 11:21
а форма-то какая?
6 — 18.10.11 — 11:21
Вот простейший пример
Процедура ПриОткрытии()
// Восстанавливаем значение
ЗапрашиватьЦену = ВосстановитьЗначение(«ЗапрашиватьЦенуПриПодборе»);
…
Процедура ПриЗакрытии()
// Сохраняем значение
Если ЭлементыФормы.ЗапрашиватьЦену.Доступность Тогда
СохранитьЗначение(«ЗапрашиватьЦенуПриПодборе», ЗапрашиватьЦену);
КонецЕсли;
7 — 18.10.11 — 11:22
(5) Управляемая конечно
8 — 18.10.11 — 11:23
(7) А ты когда об этом собирался рассказать?
9 — 18.10.11 — 11:24
(6) В управляемых такого нет
(8) тупанул чуток)
Написал 8.2 а дальше не сообразил)))
10 — 18.10.11 — 11:24
чё-то старички сегодня жгут
11 — 18.10.11 — 11:25
(10) /потупив взор ковыряю ножкой в полу/
12 — 18.10.11 — 11:26
св-ва формыСохранениеДанныхВНастройках, АвтоматическоеСохранениеДанныхВНастройках
13 — 18.10.11 — 11:32
(12) Дык в том то и дело что не работает ни черта эта настройка)
Я наверное её не правильно готовлю.
Включил:
ПутьКИнформационнойБазе «Использовать»
СохранениеДанныхВНастройках «Использовать список»
Что там ещё надо настраивать?
14 — 18.10.11 — 11:34
у мну работает
15 — 18.10.11 — 11:35
(14) Только с такими настройками и все? Или создавал хранилище настроек?
16 — 18.10.11 — 11:35
без хранилища работает, со списком
17 — 18.10.11 — 11:36
(16) Млять, что же блин ни так.
18 — 18.10.11 — 11:36
а что за ПутьКИнформационнойБазе — я у себя такого не наблюдай в палитре св-в
19 — 18.10.11 — 11:38
(18) Да это я вставил то что было в буфере)
там должно было быть написано «АвтоматическоеСохранениеДанныхВНастройках»
)))
Скачу между мониторами тут, запутался.
20 — 18.10.11 — 11:39
ну у тебя хоть настройка твоя в списке появляется, или нет?
галочки на реквизитах нажал?
21 — 18.10.11 — 11:41
(20) Всё понял в чем косяк.
У меня все реквизиты это реквизиты Объекта.
Вынес эти реквизиты как реквизиты формы и стало сохраняться.
А реквизиты объекта получается не сохранить.
22 — 18.10.11 — 11:43
+ 21 нихрена. Галку на реквизите формы ставлю.
Все одно блин не сохраняет.
23 — 18.10.11 — 11:44
(20) «галочки» ты имел ввиду «Сохранять данные»?
24 — 18.10.11 — 11:44
(21) у мну сохраняет
25 — 18.10.11 — 11:45
(23) второе ТП, сверху справа
колонка «Сохранение»
26 — 18.10.11 — 11:46
(24) Всё. Теперь и у меня пошло.
27 — 18.10.11 — 11:46
(25) Да, а я ставил в самом реквизите.
Спасибо, разобрался)
28 — 18.10.11 — 11:47
а где в реквизите объекта галка сохранения?
29 — 18.10.11 — 11:49
(28) В реквизите формы
30 — 18.10.11 — 11:49
+ 29 «сохраняемые данные»
31 — 18.10.11 — 11:53
(30) дык это, батенька, совсем на другую тему песня
модифицированность, только просмотр и т.д.
32 — 18.10.11 — 11:54
(31) Уже понял)))))
33 — 18.10.11 — 11:55
советую учесть сразу
//
// Некоторые элементы формы, например ТаблицаФормы могут не восстанавливаться и даже блокировать вызов ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки),
// если с момента последнего сохранения они изменили свой тип или состав, т.е. в случае таблицы формы есть сохраненное значение с одним составом колонок,
// а после добавления или переименования колонки с установленным признаком «Сохранять» для таблицы уже не вызывается ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки).
// В этом методе можно модифицировать состав колонок сохраненной таблицы в соотвевествии с текущим составом.
//
Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки)
Aswed
34 — 18.10.11 — 11:56
(33) Спасибо, пригодится.
Для сохранения значений реквизитов управляемой формы в 1С нужно включить свойство управляемой формы СохранениеДанныхВНастройках. После этого в окне реквизитов формы появится дополнительная колонка Сохранять данные в настройках. В этой колонке нужно поставить флаг у тех реквизитов, значения которых нужно сохранять.
После этого на форме появятся стандартные кнопки Сохранить параметры и Восстановить параметры (возможно, они будут скрыты под кнопкой Еще).
Однако, автоматическое сохранение значений доступно только для реквизитов формы. Для табличных частей флаг Сохранять данные в настройках не предусмотрен. Однако, табличные части можно преобразовать, например, в массивы и уже их сохранить в настройках формы.
Рассмотрим эту процедуру на примере формы с двумя табличными частями: ТипыЦен и ГруппыНоменклатуры. В каждой табличной части по одной колонке.
Для сохранения значений табличной части управляемой формы нам потребуется создать процедуру для события формы ПриСохраненииДанныхВНастройкахНаСервере. Как следует из названия, это событие возникает при сохранении значений реквизитов формы. И тут то мы и сможем добавить к реквизитам нашу табличную часть, предварительно преобразованную в массив.
Процедура ПриСохраненииДанныхВНастройкахНаСервере(Настройки)
//Создаем массивы из табличных частей
МассивГрупп=новый массив;
Для каждого Строка из Объект.Группы Цикл
МассивГрупп.Добавить(Строка.Группа);
КонецЦикла;
МассивЦен=новый массив;
Для каждого Строка из Объект.ТипыЦен Цикл
МассивЦен.Добавить(Строка.ТипЦены);
КонецЦикла;
//Добавляем полученные массивы в сохраняемые настройки с соответствующими именами
Настройки.Вставить(«Группа», МассивГрупп);
Настройки.Вставить(«ТипыЦен», МассивЦен);
КонецПроцедуры
Теперь осталось восстановить табличные части из массивов при загрузке настроек управляемой формы. Для этого нам потребуется процедура для события ПриЗагрузкеДанныхИзНастроекНаСервере.
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
//Очищаем табличные части, чтобы избежать дублей
Объект.Группы.Очистить();
Объект.ТипыЦен.Очистить();
//Получаем массивы из настроек по тому имени, по которому сохраняли и заносим в табличные части
Для каждого Строка из Настройки.Получить(«Группа») Цикл
НС=Объект.Группы.Добавить();
НС.Группа=Строка;
КонецЦикла;
Для каждого Строка из Настройки.Получить(«ТипыЦен») Цикл
НС=Объект.ТипыЦен.Добавить();
НС.ТипЦены=Строка;
КонецЦикла;
КонецПроцедуры
Сохранение реквизитов объектов обработки. Обычное приложение
16.05.2017
Универсальный механизм позволяющий сохранять все реквизиты обработки (даже те которые будут изменены или добавлены). Механизм простой и универсальный
Сохранение реквизитов объектов обработки. Обычное приложение
Для пользователей создается множество обработок которые загружают/исправляют какие то данные, создают объекты и пр. Для удобства работы пользователей приходилось каждый раз прописывать сохранение ключевых реквизитов и их восстановление при открытии. Постепенно создал универсальный механизм — удобный и простой. Вроде аналога я не нашел, поэтому решил выложить здесь.
Суть механизма в том что все реквизиты обрабтки сохраняются в структуру методом СохранитьЗначение() и потом при открытии формы заполняются из структуры методом ВосстановитьЗначение(). Ничего нового я не выдумывал — взял стандартные методы.
ЭТАП 1.
В модуле объекта обработки создаем строковую переменную для сохранения настроек. Я использую имя обработки.
Перем ИмяОбработки Экспорт;
ИмяОбработки = ЭтотОбъект.Метаданные().ПолноеИмя();
ЭТАП 2.
При закрытии формы обработки вызываем метод сохранения настроек СохранитьРеквизиты(). В котором циклом проходим реквизиты обработки, сохраняем их в структуру и потом сохраняем структуру методом СохранитьЗначение() .
Процедура СохранитьРеквизиты()
СтруктураРеквизитов = Новый Структура;
Для Каждого текРеквизит из ЭтотОбъект.Метаданные().Реквизиты Цикл
СтруктураРеквизитов.Вставить(текРеквизит.Имя, ЭтотОбъект[текРеквизит.Имя]);
КонецЦикла;
СохранитьЗначение(ИмяОбработки, СтруктураРеквизитов);
КонецПроцедуры
Этап 3.
При открытии формы вызываем процедуру ВосстановитьРеквизиты() которая восстанавливает структуру реквизитов и заполняет из структуры реквизиты обработки
Процедура ВосстановитьРеквизиты()
СтруктураРеквизитов = ВосстановитьЗначение(ИмяОбработки);
Если ТипЗнч(СтруктураРеквизитов) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект, СтруктураРеквизитов);
КонецЕсли;
КонецПроцедуры
Для проверки работоспособности добавляю обработку с кодом. В обработке указано два реквизита: Организация, Склад (реквизиты текстовые). При первом открытии нужно заполнить реквизиты, при повторном открытии рекзвиты восстановлятся из последних указанных значений. Обработка на обычной форме, на управляемых работать не будет. Обработка будет работать на любой конфигурации с обычными формами.
Как в Управляемом Приложении настроить автосохранение значений полей формы?
Заходим в свойства формы и для значения АвтоматическоеСохранениеДанныхВНастройках устанавливаем значение «Использовать»:
Затем переходим к реквизитам формы и устанавливаем флажки напротив реквизитов, которые необходимо сохранять:
Код 1C v 8.х
// Сохранение и восстановление настроек формы
Процедура ПриОткрытии()
// Восстанавливаем сохраненные значения реквизитов
Значение = ВосстановитьЗначение("Обработка_Кодировка");
Если ЗначениеЗаполнено(Значение) Тогда
Кодировка = Значение;
Иначе
Кодировка = 2;
КонецЕсли;
Значение = ВосстановитьЗначение("Обработка_КаталогИмпорта");
Если Значение <> Неопределено Тогда
КаталогИмпорта = Значение;
КонецЕсли;
КонецПроцедуры
Код 1C v 8.х
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
// Сохраним значения указанные в реквизитах
СохранитьЗначение("Обработка_Кодировка", Кодировка);
СохранитьЗначение("Обработка_КаталогИмпорта", КаталогИмпорта);
КонецПроцедуры
Информация взята с сайта http://helpf.pro
Хотите узнать больше по этому вопросу?
Подпишитесь на нашу рассылку новостей
Подписаться
Чтобы задать вопрос или предложить тему статьи, нажмите на кнопку ниже:
Предложить статью
В этой статье разберем, как работать с сохранением данных на форме в 1С 8.3.
Сохраняемые данные формы 1С
У любой управляемой формы можно настроить сохранение данных реквизитов формы. Это значит, что форма сохранит данные введенные в поля, которые соответствуют реквизитам, при закрытии формы, а при последующем открытии формы информация в этих полях восстановятся автоматически.
Например, у меня на форме обработки имеются поля, данные в которых сохраняются при закрытии формы и восстанавливаются при последующем открытии.
Это поля Контрагент и Цена.
Для того, чтобы на управляемой форме данные из соответствующих реквизитов сохранялись, необходимо выполнить следующие действия.
Первое. У свойства формы «Автоматическое сохранение данных в настройках» установить значение «Использовать».
Второе. После того, как будет установлено значение в свойство, которое упоминали выше, у реквизитов формы появится колонка «Сохранение». Именно в этой колонке и нужно поставить флажки рядом с теми реквизитами, значения которых мы хотим сохранять при закрытии формы.
После этих действий, данные у отмеченных реквизитов будут сохраняться.
Хранилище настроек в 1С
Вышеприведенный способ позволяет сохранять последние данные, с которыми работали на форме. Но, могут возникнуть ситуации, когда нужно будет сохранять какую-то произвольную комбинацию значений реквизитов, а потом восстановить её. Если рассматривать ситуацию выше, то это может быть комбинация контрагента и цены: для одного контрагента одна цена, для другого другая и т.д.
Для того, чтобы такая возможность имелась, необходимо в свойстве «Хранилище данных настроек» управляемой формы установить значение «Использовать список».
А потом, у нужных реквизитов формы следует установить флаг у свойства «Сохраняемые данные».
После таких изменений, у формы в группе Ещё появятся команды «Сохранить параметры» и «Восстановить параметры».
Теперь мы можем сохранить любую комбинацию реквизитов Контрагент – Цена.
И можем восстановить нужную комбинацию в любой момент работы с формой, а не только при открытии.
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы:
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009
Сохранение значений реквизитов форм.
Posted: 26 октября, 2017 in Введение в конфигурирование в системе «1с:Предприятие 8» .
Частенько приходится делать некий отчёт или обработку и затем проверять её работу. При этом постоянно вводить значение каких-нибудь отборов.
Между тем в типовых формах существуют кнопки «сохранить значение», «восстановить значение».
Конечно можно прописывать подстановку просто в коде типа:
Процедура ПриОткрытии()
Склад=Справочники.Склады.НайтиПоНаименованию(«НаименованиеКакое нить»);
КонецПроцедуры
Но можно задействовать уже существующий механизм. Для этого в свойствах формы поставить галочку «Сохранять значение», в поле «Сохраняемые значения» выбрать необходимые реквизиты, и поставить галочку «ВосстанавливатьЗначенияПриОткрытии»
В результате увидим две кнопки как в типовом отчёте:
Легко. Просто где вот простому смертному это увидеть. Типа учитесь… Было бы чему!