Имя: Пароль:
1C
1С v8
Как сохранить таб. часть в настройках отчета?
0 lirt82
 
25.09.25
12:30
Всем привет, есть самописный отчет (не СКД) в отчете на форме есть закладка "НастройкиВыгрузки" в ней расположена таб. часть "СписокКлиентовДляВыгрузки" эта таб. часть реквизит объекта отчета. Пользователь ее (таб. часть заполняет) и сохраняет по кнопке "СохранитьНастройкиВыгрузки". Необходимо реализовать сохранение данных таб. части отчета и при открытии восстановить данные в таб. части. Код из формы отчета.

&НаКлиенте
Процедура СохранитьНастройкиВыгрузки(Команда)
	СохранитьНастройкиВыгрузкиНаСервере();
КонецПроцедуры

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

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


Код модуля объекта отчета.

Процедура СохранитьНастройкиВыгрузки(ПутьДляСохранения, СписокКлиентов) Экспорт 
	
	Ключ = ПолучитьКлючОбъекта();
	
	НастройкиВыгрузки = Новый Структура;
	НастройкиВыгрузки.Вставить("ПутьДляСохранения", ПутьДляСохранения);
	НастройкиВыгрузки.Вставить("СписокКлиентов", СписокКлиентов);
	
	УстановитьПривилегированныйРежим(Истина);	
	ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(Ключ, ПолучитьКлючНастроекВыгрузки(), НастройкиВыгрузки,, Ключ);
	УстановитьПривилегированныйРежим(Ложь);
	
КонецПроцедуры

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

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


при таком коде выходит ошибка:
Ошибка при установке значения атрибута контекста (СписокКлиентовДляВыгрузки)
по причине:
Нельзя изменять поле, содержащее объект данных формы
1 Asmody
 
25.09.25
08:04
Потому что нельзя присвоить значение  таб.части.
Загрузить() можно
2 lirt82
 
25.09.25
08:20
(1) СписокКлиентов = НастройкиВыгрузки.СписокКлиентов.Загрузить();
Метод объекта не обнаружен (Загрузить)
Хотя тип НастройкиВыгрузки.СписокКлиентов ТаблицаЗначений
3 Chameleon1980
 
25.09.25
08:31
Список.загрузить
4 Мультук
 
гуру
25.09.25
08:32
(2)
Кэп имел в виду


ПутьДляСохранения = НастройкиВыгрузки.ПапкаДляСохранения;
СписокКлиентов.Загрузить(НастройкиВыгрузки.СписокКлиентов);
5 Chameleon1980
 
25.09.25
08:33
(4) не вник в название метода :)
6 lirt82
 
25.09.25
12:21
(4) Ошибка при вызове метода контекста (Загрузить)
по причине:
Несоответствие типов (параметр номер '1')
7 Волшебник
 
25.09.25
12:29
СписокКлиентов.Загрузить(НастройкиВыгрузки.СписокКлиентов.Выгрузить());
8 Мультук
 
гуру
25.09.25
12:35
(7)

ТС утверждает что

ТипЗнч(НастройкиВыгрузки.СписокКлиентов) = Таблица значений
9 Волшебник
 
25.09.25
12:44
(8) это вряд ли... Как говорит Доктор Хаус, все врут.
10 lirt82
 
25.09.25
13:21
(7) Значение не является значением объектного типа (Выгрузить)
11 Мультук
 
гуру
25.09.25
13:35
(10)

1) Вы выгружаете из
НастройкиВыгрузки.СписокКлиентов.Выгрузить()
Но показываете не эту переменную,  а вовсе другую

2) показываете вы
СписокКлиентов (который Процедура ВосстановитьНастройкиВыгрузки(ПутьДляСохранения, СписокКлиентов) )
Эта переменная  ожидаемо должна быть табличной частью, а у вас неопределено.
Что вы собираетесь загрузить в неопределено я без понятия

3) Зачем нужно передавать туда (в ВосстановитьНастройкиВыгрузки) табличную часть я не знаю.
Я бы просто вернул из ВосстановитьНастройкиВыгрузки(..) "НастройкиВыгрузки" и дальше в форме рассовал был всё по своим местам
12 Fish
 
гуру
25.09.25
13:50
(2) "Хотя тип НастройкиВыгрузки.СписокКлиентов ТаблицаЗначений"

А на картинке (10) тип Неопределено.
13 Chameleon1980
 
25.09.25
16:28
при сохранении

НастройкиВыгрузки.Вставить("СписокКлиентов", СписокКлиентов.Выгрузить());
14 Chameleon1980
 
25.09.25
16:29
расскоментируй тут

ОтчетОбъект.СохранитьНастройкиВыгрузки(Отчет.АдресДляВыгрузки, Отчет.СписокКлиентовДляВыгрузки); //.Выгрузить());
Основная теорема систематики: Новые системы плодят новые проблемы.