Задание имени файла

1. Vhett 13.09.17 11:56 Сейчас в теме
Товарищи. Такой вопрос. Я хочу вместо того, чтобы программа отчёты записывала в конкретный файл, создавала новый, с именем отчёта. Но дело в том, что выходит ошибка, что "Поле объекта (строки) не обнаружено". Что пропустил?
//ЗаписьXML.ОткрытьФайл("c:\test\file.xml");    
	// //
	СтрокаПолучатель = ОпределитьСтрокуДереваДляПолучателя(ДеревоОтчетов, ПолучательСсылка, ПараметрыДоставки);
	КаталогПолучателя = СтрокаПолучатель.Значение;
	ДеревоОтчетов = Новый ДеревоЗначений;
	//ДеревоОтчетов = СоздатьДеревоОтчетов();
	СтрокаПолучатель = ДеревоОтчетов.Строки.Добавить();   
	СтрокаОтчет = СтрокаПолучатель.Строки.Добавить();   
	ПараметрыФормата = ПараметрыДоставки.ПараметрыФорматов.Получить(Формат);
	ПолноеИмяФайла = КаталогПолучателя + 
	ПривестиИмяФайла(
			СтрокаОтчет.Ключ                                  
			+ " "                                 
			+ ТекущаяДата()            
			+ ?(ПараметрыФормата.Расширение = "xml", "", ПараметрыФормата.Расширение));	
		НайтиСвободноеИмяФайла(ПолноеИмяФайла);	
		СтандартнаяОбработка = Истина;
	ПутьXML = "C:\test\";
	ЗаписьXML.СоздатьФайл(ПутьXML+ПолноеИмяФайла);
	// //	
	ЗаписьXML.ЗаписатьОбъявлениеXML();
	СериализаторXDTO.ЗаписатьXML(ЗаписьXML, МойОтчёт, "XLStest", "http://www.samplepackage.org");
	ЗаписьXML.Закрыть();  
Показать
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. spacecraft 13.09.17 19:55 Сейчас в теме
(1) судя по этому коду, больше всего вопросов вызывает:
ДеревоОтчетов = Новый ДеревоЗначений;
СтрокаПолучатель = ДеревоОтчетов.Строки.Добавить();   
СтрокаОтчет = СтрокаПолучатель.Строки.Добавить();
...
ПривестиИмяФайла(
            СтрокаОтчет.Ключ
...
Показать

Откуда возьмется СтрокаОтчет.Ключ, если дерево только что создано пустое?
+
2. YanTsys 12 13.09.17 19:42 Сейчас в теме
1. Точку отладки ставили?
2. По строкам после точки в режиме отладки пробегали?
3. В какой строке выскочила ошибка?
4. Какие значения передаются в эту строку и какие у них типы?
+
4. Vhett 14.09.17 09:41 Сейчас в теме
(2) точка отладки не работает. Ничего не выдаёт.
(3) я пробовал и так, но тот же результат.
ДеревоОтчетов = Новый ДеревоЗначений;
	ДеревоОтчетов.Колонки.Добавить("Уровень", Новый ОписаниеТипов("Число"));
	ДеревоОтчетов.Колонки.Добавить("Ключ");
	ДеревоОтчетов.Колонки.Добавить("Значение");
	ДеревоОтчетов.Колонки.Добавить("Настройки", Новый ОписаниеТипов("Структура"));
	Возврат ДеревоОтчетов;

И вызовом функции
ДеревоОтчетов  = СоздатьДеревоОтчетов();
+
5. spacecraft 14.09.17 09:55 Сейчас в теме
(4) полный текст ошибки?
+
6. YanTsys 12 14.09.17 10:09 Сейчас в теме
(4) Не понял как это может не работать точка отладки? Какое конкретно действие отладки не получается выполнить:
1. Точку отладки ставите в начале данного куска кода
2. Запускаете 1с на исполнение из конфигуратора кнопкой "Начать отладку (F5)"
3. В запущенной 1с выполняете действия необходимые для того чтобы запустился ваш код
4. Когда исполнение кода дойдет до того места в котором точка отладки исполнение кода прервется и вас из 1с перебросит в конфигуратор на ту строку кода в которой сработала точка отладки
5. Нажимая кнопку "Шагнуть через (F10)" заставляете конфигуратор исполнять команды одну за другой пока не наткнетесь на ту команду которая вызовет ошибку (Напишите нам какая строчка выдает ошибку)
6. После этого запускаете отладку заново и кнопкой "Шагнуть через (F10)" доходите до той строки которая вызывает ошибку но не запускаете эту строку на исполнение а вместо этого изучаете какие параметры использует эта строка
7. Выделяете мышкой по очереди все параметры которые используются в этой строке (черным цветом нужно выделить название всего параметра) после чего щелкаете по выделению правой кнопкой мыши и выбираете пункт "Вычислить выражение (F9)" конфигуратор откроет отдельное окно в котором можно будет изучить что именно хранится в данном параметре и какой тип значения (Значения и тип параметров передающихся в строку пишете нам для того чтобы мы не гадали на кофейной гуще что происходит с вашим кодом)
+
7. Vhett 14.09.17 10:10 Сейчас в теме
А, стоп. Он жалуется не на мой код, а на другую функцию которую даже не трогал:
Функция ОпределитьСтрокуДереваДляПолучателя(ДеревоОтчетов, ПолучательСсылка, ПараметрыДоставки)
	
	СтрокаПолучатель = ДеревоОтчетов.Строки.Найти(ПолучательСсылка, "Ключ", Ложь);
	Если СтрокаПолучатель = Неопределено Тогда
		
		КаталогПолучателя = ПараметрыДоставки.КаталогВременныхФайлов;
		Если ПолучательСсылка <> Неопределено Тогда
			КаталогПолучателя = КаталогПолучателя 
				+ ПривестиИмяФайла(Строка(ПолучательСсылка)) 
				+ " (" 
				+ Строка(ПолучательСсылка.УникальныйИдентификатор()) 
				+ ")\";
			СоздатьКаталог(КаталогПолучателя);
		КонецЕсли;
		
		СтрокаПолучатель = ДеревоОтчетов.Строки.Добавить();
		СтрокаПолучатель.Уровень  = 1;
		СтрокаПолучатель.Ключ     = ПолучательСсылка;
		СтрокаПолучатель.Значение = КаталогПолучателя;
		
	КонецЕсли;
	
	Возврат СтрокаПолучатель;
	
КонецФункции
Показать


Он на 2 строчку жалуется. Видимо в параметрах функции чего-то не хватает.
+
8. YanTsys 12 14.09.17 10:14 Сейчас в теме
(7) Ну тогда понятно почему у вас не срабатывала точка отладки ваш код просто вообще не выполнялся :)
+
Оставьте свое сообщение

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