Сохранение данных формы

1. Drak0n 188 17.02.12 12:22 Сейчас в теме
Добрый день, подскажите как наименее затратно сохранять данные заполнения полей на управляемых формах.
Хочется что бы пользователю не приходилось перевыбирать значения реквизитов и устанавливать переключатели при каждом открытии формы.
Естественно для каждого пользователя будут свои сохраненные значения.

Заранее спасибо!
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alwiz3 17.02.12 12:26 Сейчас в теме
Конфигурация какая? Если нетиповая, наверное проще завести регистр сведений и там хранить
alex89marta88; +1 3 Ответить
3. znaher 17.02.12 12:36 Сейчас в теме
гм. Использовать методы в формах:
1) ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
2) ПриСохраненииДанныхВНастройкахНаСервере(Настройки)
Tatyana_012345; Alexwarsis; _7445_; Мах; Alchemist; +5 Ответить
4. Drak0n 188 17.02.12 12:54 Сейчас в теме
znaher, спасибо. то что нужно.
5. znaher 17.02.12 13:08 Сейчас в теме
Разработчик может управлять сохранением данных управляемых форм в настройках. Для этого при разработке формы ему необходимо воспользоваться следующими свойствами формы:
СохранениеДанныхВНастройках – при помощи данного свойства разработчик формы может включить возможность сохранения данных формы (с возможностью выбора настройки, в которую будут сохраняться данные). Если у формы включена необходимость сохранения, то форма предоставляет команды сохранения / загрузки настроек.
АвтоматическоеСохранениеДанныхВНастройках – указывает необходимость автоматического сохранения настроек при закрытии формы и восстановлении при открытии формы. При этом не важно, используется или нет список настроек.
ХранилищеНастроек – ссылка на хранилище настроек, в котором предполагается сохранение настроек. Если не указано, то используется хранилище сохранения настроек данных формы, указанное в конфигурации. А если и в конфигурации не указано хранилище, то настройки сохраняются в стандартное хранилище настроек.
Если для формы установлена возможность сохранения данных, то необходимо указать, какие реквизиты формы должны сохраняться (колонка Сохранение на закладке Реквизиты редактора формы).
При сохранении настроек в качестве ключа объекта используется полное имя формы. В настройках сохраняется объект типа Соответствие, в котором в качестве ключей находятся пути к сохраняемым реквизитам, а в качестве значений – их (реквизитов) значения.
Для дополнительной обработки сохранения и загрузки в форме имеются следующие обработчики:
ПриСохраненииДанныхВНастройкахНаСервере – в данный обработчик передается объект (типа Соответствие), в который будут сохраняться настройки. В объекте уже заполнены значения реквизитов, которые требовалось сохранять. В этом обработчике можно программно добавить в объект настроек дополнительную информацию. Например, поместить в реквизит настроек отбор.
ПриЗагрузкеДанныхИзНастроекНаСервере – в данный обработчик передается объект, из которого уже загружены настройки. Это соответствие, в котором находятся значения реквизитов. В этом обработчике можно будет загрузить собственные свойства из соответствия. Например, восстановить параметры отбора.
Varozh; nboris; marku; gluglugluglu; Rustavelli; veslav; user1033301; bymer; mvl_dimir; swimdog; Aleksandr_prof; criptid; NittenRenegade; alsan; DoReMu; veiuper; bo0s; st4rk; Ziggurat; Andy_NTG; neo-ti; T_Guest; Jeka44; Dragonim; IvanGorbunov; PLAstic; mark_oilbass; _7445_; vit00lya; Evilleo; YaroslavHolovatiy; Mingrel; RomanMartynenko; Teut_Vlad; ilya4; tdml; sim_ph3; COMPER; vvvalera; Lena272; Правдин; Deslime; asp-1c; Alien_job; Mahon83; IVershinin; t.kovrizhnyh; PhoenixAOD; ДАК1; kasper076; YNik; E-rsh-p; kogl208; dmbarchenkov; Srk47; markers; fuel56; Мах; Ганс; _Sedoy; qazwert; kuzyara; Insanity; Vostr; ValeryFT; TreeDogNight; ErrorEd88; adhocprog; rqz; Blind_Guardian; superkuzja; Pervuy; freeek; jmi; bahbah; Vodoley; Valerich; skyman2; Diamond_Angel; AndrewVVS; Froloid; Sottoz; dj_serega; Sanario; Bahyt; maraton1185; TbSasha; sanja; director04; RomanNogovitsin; AzagTot; odniv; Spacer; bird21; sapervodichka; nihfalck; SANILLA; Kom-off; brunen9; Dr_DelProg; ManyakRus; Maliwka; +102 Ответить
6. SANILLA 05.10.13 07:40 Сейчас в теме
(5) znaher, это всё конечно замечательно, а может кто-нибудь показать образец кода, как это всё можно сделать?
7. SANILLA 06.10.13 20:52 Сейчас в теме
(5) znaher, Благодарю. Наконец-то получилось.
Пытался сначала сам сохранять и восстанавливать с помощью:
СохранитьЗначение("ИмяФайлаВCSV", Диалог.ПолноеИмяФайла);
ИмяФайлаВCSV = ВосстановитьЗначение("ИмяФайлаВCSV");

Но эти методы работают только в толстом клиенте.
Потом попробовал Вашими методами:
изменил свойства формы СохранениеДанныхВНастройках, АвтоматическоеСохранениеДанныхВНастройках;
и поставил галочки у нужных реквизитов в колонке Сохранение на закладке Реквизиты редактора формы.
Всё классно отрабатывает :)
nboris; Hogyoku; Rega; irvin12345; SunnyGirl1412; zyama; +6 Ответить
19. victor_k 95 22.05.19 05:39 Сейчас в теме
(5)
При этом не важно, используется или нет список настроек.


"...При этом не важно, используется или нет список настроек. ...", у меня со списком только восстанавливается и НЕ СОХРАНЯЕТСЯ при закрытии формы
20. victor_k 95 22.05.19 05:57 Сейчас в теме
(19) блин передернул "..использовать список..." и заработало)
8. MsDjuice 114 20.11.14 12:16 Сейчас в теме
Для Таблиц сохраняются и загружаются данные стандартным механизмом (простой установкой галочек) или нужно юзать ПриСохраненииДанныхВНастройкахНаСервере и ПриЗагрузкеДанныхИзНастроекНаСервере. Если простой флажок или поле, то сохраняет, таблицу не хочет. Спасибо за ответ.
9. alexusiv 19.12.14 13:07 Сейчас в теме
Создать реквизит с типом таблица значений(поставить галочку сохранять), и уже при сохранении в нее выгружать свою таблицу
adhocprog; Eddy; +2 Ответить
10. fixin 4275 07.05.16 10:09 Сейчас в теме
(9) как вариант мой код для табличных частей отчета:

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
    
    СохранитьНастройки(Отказ, СтандартнаяОбработка);
КонецПроцедуры

&НаСервере
Процедура СохранитьНастройки(Отказ, СтандартнаяОбработка) Экспорт
    Настройки = Новый Соответствие;
    ТЗ = Отчет.ТабличнаяЧастьВидыНоменклатуры.Выгрузить();
    Настройки.Вставить("ТабличнаяЧастьВидыНоменклатуры", ЗначениеВСтрокуВнутр(ТЗ));
    ХранилищеНастроекДанныхФорм.Сохранить("Отчет.ОтчетПоПродажамОстаткамДляЗаказов", "НастройкиТаблицыВидовНоменклатуры", Настройки);
КонецПроцедуры


&НаСервере
Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки)
    ДопНастройки = ХранилищеНастроекДанныхФорм.Загрузить("Отчет.ОтчетПоПродажамОстаткамДляЗаказов", "НастройкиТаблицыВидовНоменклатуры");
    Попытка
        ТЗ = ЗначениеИзСтрокиВнутр(ДопНастройки["ТабличнаяЧастьВидыНоменклатуры"]);
        Отчет.ТабличнаяЧастьВидыНоменклатуры.Загрузить(ТЗ)
    Исключение
    КонецПопытки;
КонецПроцедуры
Показать
vadim.semyonov.rzn; marku; zqzq; Maindevice; hiduk; nporrep; adhocprog; Lena272; smit1c; myoker; AndrewVVS; +11 Ответить
12. natarezn 18.06.16 15:56 Сейчас в теме
работает вот так :
&НаСервере
Процедура СохранитьНастройки() Экспорт
    Настройки = Новый Соответствие;
    ТЗ = Объект.ТоварыЗаказа.Выгрузить();
    Настройки.Вставить("ЗагрузкаПрайсаТабличнаяЧасть", ЗначениеВСтрокуВнутр(ТЗ));
    ХранилищеНастроекДанныхФорм.Сохранить("Объект.Товары", "ЗагрузкаПрайсаТабличнаяЧасть", Настройки);
	ХранилищеНастроекДанныхФорм.Сохранить("Объект", "НомерПервойСтроки", ЭтаФорма.НомерПервойСтроки);

КонецПроцедуры
Показать
13. natarezn 18.06.16 15:56 Сейчас в теме
&НаСервере
  Процедура ПриЗакрытииНаСервере()
	   СохранитьНастройки();
  КонецПроцедуры
22. DELOVOYDOM 20.01.24 12:18 Сейчас в теме
(13)
СохранитьНастройки();

Это не работает, зачем вы это написали?
23. DELOVOYDOM 20.01.24 12:20 Сейчас в теме
(22) Пардон только прочитал ниже сколько вы кода написали, вместо того, чтобы поставить галочку автосохранения
24. user1880116 20.01.24 21:26 Сейчас в теме
(22)
зачем вы это написали?
С разморозкой! Мы тут 8 лет тебя ждали, а ты всё не приходил.
14. natarezn 18.06.16 16:09 Сейчас в теме
вот окончательный вариант
&НаСервере
Процедура СохранитьНастройки() Экспорт
    Настройки = Новый Соответствие;
    ТЗ = ЭтаФорма.ТоварыЗаказа.Выгрузить();
    Настройки.Вставить("ЗагрузкаПрайсаТабличнаяЧасть", ЗначениеВСтрокуВнутр(ТЗ));
    ОбщегоНазначения.ХранилищеНастроекДанныхФормСохранить("Объект.Товары", "ЗагрузкаПрайсаТабличнаяЧасть", Настройки);
	ОбщегоНазначения.ХранилищеНастроекДанныхФормСохранить("Объект.НомерПервойСтроки", "НомерПервойСтроки", ЭтаФорма.НомерПервойСтроки);
	ОбщегоНазначения.ХранилищеНастроекДанныхФормСохранить("Объект.файл", "файл", ЭтаФорма.файл);

КонецПроцедуры


&НаСервере
Процедура ПередЗагрузкойДанныхИзНастроекНаСервере()
    ДопНастройки = ОбщегоНазначения.ХранилищеНастроекДанныхФормЗагрузить("Объект.Товары", "ЗагрузкаПрайсаТабличнаяЧасть");
    Попытка
        ТЗ = ЗначениеИзСтрокиВнутр(ДопНастройки["ЗагрузкаПрайсаТабличнаяЧасть"]);
         ЭтаФорма.ТоварыЗаказа.Загрузить(ТЗ);
		 ЭтаФорма.НомерПервойСтроки=ОбщегоНазначения.ХранилищеНастроекДанныхФормЗагрузить("Объект.НомерПервойСтроки", "НомерПервойСтроки");
         ЭтаФорма.файл=ОбщегоНазначения.ХранилищеНастроекДанныхФормЗагрузить("Объект.файл", "файл");
 		 ЭтаФорма.НомерПервойСтроки=ОбщегоНазначения.ХранилищеНастроекДанныхФормЗагрузить("Объект.НомерПервойСтроки", "НомерПервойСтроки");

		 
		 

    Исключение
    КонецПопытки;
КонецПроцедуры
Показать
marku; aleksae; nikakoy; +3 Ответить
21. 7OH 70 02.06.23 11:30 Сейчас в теме
(14) а как программно определить - надо сохранять данный реквизит или нет ?
15. natarezn 18.06.16 16:10 Сейчас в теме
вообще это зависит от 1с платформы
16. natarezn 18.06.16 16:10 Сейчас в теме
// Сохраняет настройку в хранилище настроек данных форм.
//
// Параметры:
//   КлючОбъекта       - Строка - Ключ объекта настройки.
//   КлючНастроек      - Строка - Ключ сохраняемых настроек.
//   Значение          - Произвольный     - Настройки, которые нужно сохранить в хранилище. 
//   ОписаниеНастроек  - ОписаниеНастроек - Вспомогательная информация о настройке.
//   ИмяПользователя   - Строка - Имя пользователя, настройки которого сохраняются.
//       Если не указано, то сохраняются настройки текущего пользователя.
//   НужноОбновитьПовторноИспользуемыеЗначения - Булево - Сбросить кэши модулей ПовтИсп.
//
// См. также:
//   "СтандартноеХранилищеНастроекМенеджер.Сохранить" в синтакс-помощнике.
//
Процедура ХранилищеНастроекДанныхФормСохранить(КлючОбъекта, КлючНастроек, Значение,
	ОписаниеНастроек = Неопределено, ИмяПользователя = Неопределено, 
	НужноОбновитьПовторноИспользуемыеЗначения = Ложь) Экспорт
	
	ХранилищеСохранить(
		ХранилищеНастроекДанныхФорм, 
		КлючОбъекта, 
		КлючНастроек, 
		Значение,
		ОписаниеНастроек, 
		ИмяПользователя, 
		НужноОбновитьПовторноИспользуемыеЗначения);
	
КонецПроцедуры
Показать
YaroslavHolovatiy; nikakoy; jmi; igormiro; +4 Ответить
17. newvideo 27.04.19 15:35 Сейчас в теме
РегистрСведенийНаборЗаписей таблица прямо на форме имеет галку "Сохраняемые данные". При этом у формы нет галки сохранять настройки и у конфигурации нет хранилища. Сам набор записей данные в регистр не пишет, а видимо сохраняет куда-то во временные файлы/хранилище. Как можно вытащить данные от туда?
18. newvideo 27.04.19 18:42 Сейчас в теме
(17) После десятикратного пинка регистр всё же начал писать данные формы, первый раз с таким глюком встретился, короче ребят, перезапускайте конфы, чистите кеш, иначе вот такие глюки, просто пол дня потерял.
25. slaviksoft 75 24.10.24 10:50 Сейчас в теме
Автосохранение табличной части

&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)

	Выборка = ХранилищеНастроекДанныхФорм.Выбрать(Новый Структура("КлючОбъекта", "Автосохранение"));
	Если Выборка.Следующий() Тогда
		
		ТЗ = Выборка.Настройки["ТаблицаРасхождений"];
		Если ТЗ <> Неопределено Тогда
			Объект.ТаблицаРасхождений.Загрузить(ТЗ);
		КонецЕсли;	
		
	КонецЕсли;	
		
КонецПроцедуры

&НаСервере
Процедура ПриЗакрытииНаСервере()
	
	Настройки = Новый Соответствие;
    Настройки.Вставить("ТаблицаРасхождений", Объект.ТаблицаРасхождений.Выгрузить());
	    
    ХранилищеНастроекДанныхФорм.Сохранить("Автосохранение", "", Настройки);
    	
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	
	ПриЗакрытииНаСервере();
	
КонецПроцедуры
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот