Восстановить настройки для Построителя

1. Nastya-chajkovskaya 22.07.18 13:54 Сейчас в теме +2 $m
Здравствуйте! Подскажите пожалуйста, я сохраняю НЕСКОЛЬКО вариантов отчетов в файлы. И делаю несколько вариантов настроек для пастроителя.
Процедура ПередСохранениемЗначений(Отказ)

	СохраненныеНастройки = Новый Структура;
	СохраненныеНастройки.Вставить("НастройкиПостроителя", 
       ПостроительОтчета.ПолучитьНастройки());
	
	Диалог = Новый 
       ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
	Диалог.Заголовок = "Выберите имя файла для сохранения";
	Диалог.МножественныйВыбор = Ложь;	
	Диалог.Фильтр = "Прайс(*.CSV)|*.CSV";
	Если Диалог.Выбрать() Тогда 
		ИмяФайла = Диалог.ПолноеИмяФайла;
		ЗначениеВФайл(ИмяФайла,СохраненныеНастройки);
	КонецЕсли;	

КонецПроцедуры // ПередСохранениемЗначений()
Показать



Каким образом я могу восстановить эти настройки в построитель, файлы я получаю, но в построитель передается только один вариант.

Процедура ПослеВосстановленияЗначений()
	
	СписокФайлов = Новый СписокЗначений;

	Если ТипЗнч(СохраненныеНастройки) = Тип("Структура") Тогда
	ЗаполнитьПостроительОтчетаПоЦенамНоменклатуры();

	ДиалогОткрытияФайла  = Новый ДиалогВыбораФайла (РежимДиалогаВыбораФайла.ВыборКаталога);
	ДиалогОткрытияФайла.Каталог= "\\tsclient\E\1С\Прайс";  
	
	НайденныеФайлы = НайтиФайлы(ДиалогОткрытияФайла.Каталог, "*.xls"); //Тут одну надо оставить * 	
	Для Каждого ИмяФайла Из НайденныеФайлы Цикл
		СписокФайлов.Добавить(ИмяФайла.ПолноеИмя);
	КонецЦикла;
	НайденныеФайлы = НайтиФайлы(ДиалогОткрытияФайла.Каталог, "*.xlsx"); 	
	Для Каждого ИмяФайла Из НайденныеФайлы Цикл
		СписокФайлов.Добавить(ИмяФайла.ПолноеИмя);
	КонецЦикла;
	НайденныеФайлы = НайтиФайлы(ДиалогОткрытияФайла.Каталог, "*.xlsm"); 	
	Для Каждого ИмяФайла Из НайденныеФайлы Цикл
		СписокФайлов.Добавить(ИмяФайла.ПолноеИмя);
	КонецЦикла;
	НайденныеФайлы = НайтиФайлы(ДиалогОткрытияФайла.Каталог, "*.ODS"); 	
	Для Каждого ИмяФайла Из НайденныеФайлы Цикл
		СписокФайлов.Добавить(ИмяФайла.ПолноеИмя);
	КонецЦикла;
	НайденныеФайлы = НайтиФайлы(ДиалогОткрытияФайла.Каталог, "*.CSV"); 	
	Для Каждого ИмяФайла Из НайденныеФайлы Цикл
		СписокФайлов.Добавить(ИмяФайла.ПолноеИмя);
	КонецЦикла;	
	
	Для Каждого ИмяФайла Из СписокФайлов Цикл
		ФайлПутьКФайлу = ИмяФайла.Значение;
		
		//ПРОВЕРКА НОВОГО ФАЙЛА
		ФайлНаДиске = Новый Файл(ФайлПутьКФайлу);
		ВремяИзмененияФайла = ФайлНаДиске.ПолучитьВремяИзменения();
		РазмерФайла = ФайлНаДиске.Размер();
		ИдентификаторПрайса = ""+РазмерФайла+"/"+ВремяИзмененияФайла;
		СтруктураЭлементов = ЗначениеИзФайла(ФайлПутьКФайлу);
		
		ПостроительОтчета.УстановитьНастройки(СохраненныеНастройки.НастройкиПостроителя);

		ОбновитьОтчет();

	КонецЦикла;
	    
	КонецЕсли;


КонецПроцедуры // ПослеВосстановленияЗначений()
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
9. qazaas 24.07.18 09:29 Сейчас в теме
(1) Методы ПолучитьНастройки() и УстановитьНастройки() работают с настройками самого построителя отчета, такими как "Отбор", "Порядок", "Измерения", "ВыбранныеПоля" и "УсловноеОформление". При изменении варианта отчета настройки пишутся в построитель отчета или они где-то в другом месте хранятся (ну мало ли)?
2. amaksimov 23.07.18 08:37 Сейчас в теме
Анастасия, добрый день,

а нет ли ошибки в коде?

Вы получаете настройки из файла в структуру

СтруктураЭлементов = ЗначениеИзФайла(ФайлПутьКФайлу);


но не используете их:

УстановитьНастройки(СохраненныеНастройки.НастройкиПостроителя);


Возможно следовало попробовать:

УстановитьНастройки(СтруктураЭлементов.НастройкиПостроителя);
Прикрепленные файлы:
3. Nastya-chajkovskaya 23.07.18 08:56 Сейчас в теме
мною было переделано
Процедура ПередСохранениемЗначений(Отказ)

    Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    Диалог.Заголовок="Сохранение настроек построителя отчета в файл";
    Диалог.Каталог="\\tsclient\E\1С\Прайс";
    Диалог.Расширение="set";
    Диалог.Фильтр="Настройки посторителя отчета (*.set)|*.set";
    Если Диалог.Выбрать() Тогда
        ЗначениеВФайл(Диалог.ПолноеИмяФайла, ПостроительОтчета.ПолучитьНастройки());
    КонецЕсли;
		
КонецПроцедуры // ПередСохранениемЗначений()
Показать



Процедура ВосстановитьНастройки() Экспорт
	
	СписокФайлов = Новый СписокЗначений;
    //проверим как это будет работать
	Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	Диалог.Заголовок="Выбор файла настроек построителя отчета";
	Диалог.Каталог="\\tsclient\E\1С\Прайс"; 
	Диалог.Расширение="set";
	Диалог.Фильтр="Настройки посторителя отчета (*.set)|*.set";
	
	НайденныеФайлы = НайтиФайлы(Диалог.Каталог, "*.set"); 	
	Для Каждого ИмяФайла Из НайденныеФайлы Цикл
		СписокФайлов.Добавить(ИмяФайла.ПолноеИмя);
	КонецЦикла;
	Для Каждого ИмяФайла Из СписокФайлов Цикл
        Файл = ИмяФайла.Значение;
		Попытка
			НастройкиПостроителя=ЗначениеИзФайла(Файл);
			ПостроительОтчета.УстановитьНастройки(НастройкиПостроителя);
		Исключение
			Сообщить("Не удалось загрузить настройки построителя отчета.", СтатусСообщения.Внимание);
		КонецПопытки;
		ОбновитьОтчет();
		
		
	КонецЦикла;	
	Сообщить("Все СДелано!");
Показать


он теперь берет настройки мои, но только один файл, хотя в цикла проходит два раза,т.к. у меня два файла. Может надо очистить элементы формы?
4. amaksimov 23.07.18 13:59 Сейчас в теме
хотите, чтобы он суммировал настройки? или как это должно действовать?
5. Nastya-chajkovskaya 23.07.18 14:22 Сейчас в теме
(4) он находит в папке мои файли с настройками . Начинает в цикле обходить, сначала первый файлик (восстанавливает настройки - формирует) , потом далее повторяет цикл, но уже берет второй файлик (восстанавливает настройки - формирует) . Вот как-то так
6. amaksimov 23.07.18 14:45 Сейчас в теме
(5)
восстанавливает настройки - формирует

На форме при этом отображается отчёт?

потом далее повторяет цикл, но уже берет второй файлик (восстанавливает настройки - формирует) . Вот как-т

Должен прошлый результат (таб.док) на форме перезатереться сверху новым результатом?

А сейчас на форме не перезатирает? Остаётся прежний табдок?
7. Nastya-chajkovskaya 23.07.18 15:20 Сейчас в теме
(6)
Должен прошлый результат (таб.док) на форме перезатереться сверху новым результатом?

А сейчас на форме не перезатирает? Остаётся прежний табдок?


Неа не перезатирает, я думала попробовать ЭлементыФормы.Очистить(), но не уверена, что получиться.
8. amaksimov 23.07.18 21:40 Сейчас в теме
Настя, а конечная цель какая?
Я так понимаю на форме есть ТабДок, в него результат отчета при формировании отчета выдаётся.
Если цикл две итерации делает, то отчет формируется два раза (с разными настройками), и табдоку присваивается сначала один результат отчета, потом сразу же второй результат отчета. Или как это сейчас происходит? Что видит на форме пользователь? Результат отчета для первой настройки?
10. Nastya-chajkovskaya 24.07.18 10:01 Сейчас в теме
Закрываю тему, буду переделывать вообще по другому
Оставьте свое сообщение

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