Сохранение значений реквизитов формы обработки

1. Asenka 108 07.03.17 15:54 Сейчас в теме
Обработка УФ подключена через расширение.
В форме обработки есть 3 реквизита:
Организация - СправочникСсылка.Организации
СтатьяЗатрат1 - Строка
СтатьяЗатрат2 - Строка

Нужно, чтобы при нажатии кнопки "Сохранить реквизиты", данные куда-то сохранялись, а при изменении организации СтатьяЗатрат1 и СтатьяЗатрат2 заполнялись сохраненными значениями для выбранной Организации.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SP17081992 5 07.03.17 16:53 Сейчас в теме
(1)
СохранитьЗначение (SaveValue)
Синтаксис:

СохранитьЗначение(<Имя>, <Значение>)
Параметры:

<Имя> (обязательный)

Тип: Строка.
Имя, с которым сохраняется значение, используется для идентификации сохраняемых значений.
<Значение> (обязательный)

Тип: Произвольный.
Сохраняемое значение.
Описание:

Сохраняет значение для использования не только в текущем, но и в последующих сеансах работы с программой. Значение хранится индивидуально для каждой пары информационная база - пользователь. Например, можно сохранять значения по умолчанию, используемые данным пользователем.

Доступность:

Толстый клиент.
Пример:

СохранитьЗначение("СрокИсполненияЗаказа", СрокИсполнения);
СохранитьЗначение("СкладПоУмолчанию", МестоХранения);

Показать


и

ВосстановитьЗначение (RestoreValue)
Синтаксис:

ВосстановитьЗначение(<Имя>)
Параметры:

<Имя> (обязательный)

Тип: Строка.
Имя сохраненного значения.
Возвращаемое значение:

Тип: Произвольный.
Восстановленное значение. Если восстановить не удалось, возвращает Неопределено.
Описание:

Получает значение, сохраненное ранее с помощью метода СохранитьЗначение.

Доступность:

Толстый клиент.
Пример:

СрокИсполнения = ВосстановитьЗначение("СрокИсполненияЗаказа"));
ДатаИсполнения = ДатаДокумента + Макс(СрокИсполнения, 5);

Показать
3. Asenka 108 07.03.17 17:04 Сейчас в теме
(2) Если просто реквизиты формы сохранять понятно как использовать СохранитьЗначение и ВосстановитьЗначение.

А в данном случае нужно сохранить одни и те же реквизиты для каждой Организации.

В форме обработки есть 3 реквизита:
Организация - СправочникСсылка.Организации
СтатьяЗатрат1 - Строка
СтатьяЗатрат2 - Строка

Например,
Выбираем Организация1, заполняем СтатьиЗатрат: ОплатаТруда, СтраховыеВзносы. Нажимаем кнопку Сохранить,
затем выбираем Организация2, заполняем СтатьиЗатрат: ОплатаТрудаЕНВД, СтраховыеВзносыЕНВД. Нажимаем кнопку Сохранить.

При изменении элемента формы Организация на Организацию1 должны заполниться СтатьиЗатрат1 и СтатьиЗатрат2 : ОплатаТруда и СтраховыеВзносы.

При изменении элемента Организация на Организацию2 должны заполниться СтатьиЗатрат1 и СтатьиЗатрат2 : ОплатаТрудаЕНВД и СтраховыеВзносыЕНВД.

Данные значения должны восстанавливаться и после закрытия формы, программы.
4. SP17081992 5 07.03.17 19:50 Сейчас в теме
(2) 1. С помощью "СохранитьЗначение" и "ВосстановитьЗначение" можно решить вашу задачу. Например:
Сохранение

СтатиЗатрат = Новый Структура("СтатьяЗатрат1, СтатьяЗатрат2", ЗначениеЗатрат1, ЗначениеЗатрат2);
СохранитьЗначение("Организация1", СтатиЗатрат );


Восстановление


СтатиЗатрат = ВосстановитьЗначение("Организация1");
ЗначениеЗатрат1 = СтатиЗатрат.СтатьяЗатрат1;
ЗначениеЗатрат2 = СтатиЗатрат.СтатьяЗатрат2;


2. Если этот вариант не устраивает можешь в конфигураторе добавить регистр сведенный (если нужна история) или добавить два реквизита в справочнике Организации.

3. Если вариант 2 не устраивает, можешь например в блокноте сохранить свои данные, а потом читать из файла.
5. Asenka 108 07.03.17 20:29 Сейчас в теме
(4) Спасибо! Попробую 1 и 3 варианты.
2 вариант был бы самым оптимальным, но конфигурация на замке, а в расширение регистр сведений не добавить.
7. Asenka 108 07.03.17 21:10 Сейчас в теме
(4) В УФ нет СохранитьЗначение и ВосстановитьЗначение.
Текстовый файл нежелательно использовать.
6. sjobnmru 07.03.17 20:57 Сейчас в теме
через файл в обычном txt сохранять, потом восстанавливать.
8. Asenka 108 07.03.17 22:08 Сейчас в теме
Решено
&НаСервере
Процедура ВосстановитьСтатьиЗатратНаСервере()
	//Восстановление статей затрат в зависимости от организации	
	//При отсутствии сохраненных данных оставлять пустые значения
	КлючОбъекта  = Организация.Наименование;
    КлючНастроек = "СтатьиЗатрат";
    // Для восстановления настроек необходимо воспользоваться функцией Загрузить
    СтруктураНастроек = Неопределено;
    Попытка
        СтруктураНастроек = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта,КлючНастроек,);
		// если настроек нет, то будет возвращено значение "Неопределено"
    Исключение
        Сообщить("Нет прав на восстановление настроек.");
    КонецПопытки;

	Если НЕ СтруктураНастроек = Неопределено Тогда
		СтатьяЗатратОплатаТруда = СтруктураНастроек.СтатьяЗатратОплатаТруда;
		СтатьяЗатратСтраховыеВзносы = СтруктураНастроек.СтатьяЗатратСтраховыеВзносы;
		СтатьяЗатратНСиПЗ = СтруктураНастроек.СтатьяЗатратНСиПЗ;
	Иначе
		СтатьяЗатратОплатаТруда = "";
		СтатьяЗатратСтраховыеВзносы = "";
		СтатьяЗатратНСиПЗ = "";
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ВосстановитьСтатьиЗатрат()
	ВосстановитьСтатьиЗатратНаСервере();
КонецПроцедуры

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

&НаКлиенте
Процедура СохранитьСтатьиЗатрат(Команда)
	
	СохранитьСтатьиЗатратНаСервере()

КонецПроцедуры
Показать
dseg; AlbertZ; Pete; antonius888; +4 Ответить
Оставьте свое сообщение

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