Товарищи. Такой вопрос. Я хочу вместо того, чтобы программа отчёты записывала в конкретный файл, создавала новый, с именем отчёта. Но дело в том, что выходит ошибка, что "Поле объекта (строки) не обнаружено". Что пропустил?
//ЗаписьXML.ОткрытьФайл("c:\test\file.xml");
// //
СтрокаПолучатель = ОпределитьСтрокуДереваДляПолучателя(ДеревоОтчетов, ПолучательСсылка, ПараметрыДоставки);
КаталогПолучателя = СтрокаПолучатель.Значение;
ДеревоОтчетов = Новый ДеревоЗначений;
//ДеревоОтчетов = СоздатьДеревоОтчетов();
СтрокаПолучатель = ДеревоОтчетов.Строки.Добавить();
СтрокаОтчет = СтрокаПолучатель.Строки.Добавить();
ПараметрыФормата = ПараметрыДоставки.ПараметрыФорматов.Получить(Формат);
ПолноеИмяФайла = КаталогПолучателя +
ПривестиИмяФайла(
СтрокаОтчет.Ключ
+ " "
+ ТекущаяДата()
+ ?(ПараметрыФормата.Расширение = "xml", "", ПараметрыФормата.Расширение));
НайтиСвободноеИмяФайла(ПолноеИмяФайла);
СтандартнаяОбработка = Истина;
ПутьXML = "C:\test\";
ЗаписьXML.СоздатьФайл(ПутьXML+ПолноеИмяФайла);
// //
ЗаписьXML.ЗаписатьОбъявлениеXML();
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, МойОтчёт, "XLStest", "http://www.samplepackage.org");
ЗаписьXML.Закрыть();
ПоказатьПо теме из базы знаний
- Электронная таблица средствами 1С (Версия 2.0)
- Сохранение печатной формы в файл для нескольких документов с заданным именем файла
- Резервное копирование и восстановление 1С баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика
- Библиотека процедур и функций для технологической платформы "1С: Предприятие 7.7"
- Загрузка изображений номенклатуры по артикулам из файлов. УТ 10.3
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) судя по этому коду, больше всего вопросов вызывает:
Откуда возьмется СтрокаОтчет.Ключ, если дерево только что создано пустое?
ДеревоОтчетов = Новый ДеревоЗначений;
СтрокаПолучатель = ДеревоОтчетов.Строки.Добавить();
СтрокаОтчет = СтрокаПолучатель.Строки.Добавить();
...
ПривестиИмяФайла(
СтрокаОтчет.Ключ
...
ПоказатьОткуда возьмется СтрокаОтчет.Ключ, если дерево только что создано пустое?
1. Точку отладки ставили?
2. По строкам после точки в режиме отладки пробегали?
3. В какой строке выскочила ошибка?
4. Какие значения передаются в эту строку и какие у них типы?
2. По строкам после точки в режиме отладки пробегали?
3. В какой строке выскочила ошибка?
4. Какие значения передаются в эту строку и какие у них типы?
(2) точка отладки не работает. Ничего не выдаёт.
(3) я пробовал и так, но тот же результат.
И вызовом функции
(3) я пробовал и так, но тот же результат.
ДеревоОтчетов = Новый ДеревоЗначений;
ДеревоОтчетов.Колонки.Добавить("Уровень", Новый ОписаниеТипов("Число"));
ДеревоОтчетов.Колонки.Добавить("Ключ");
ДеревоОтчетов.Колонки.Добавить("Значение");
ДеревоОтчетов.Колонки.Добавить("Настройки", Новый ОписаниеТипов("Структура"));
Возврат ДеревоОтчетов;
И вызовом функции
ДеревоОтчетов = СоздатьДеревоОтчетов();
(4) Не понял как это может не работать точка отладки? Какое конкретно действие отладки не получается выполнить:
1. Точку отладки ставите в начале данного куска кода
2. Запускаете 1с на исполнение из конфигуратора кнопкой "Начать отладку (F5)"
3. В запущенной 1с выполняете действия необходимые для того чтобы запустился ваш код
4. Когда исполнение кода дойдет до того места в котором точка отладки исполнение кода прервется и вас из 1с перебросит в конфигуратор на ту строку кода в которой сработала точка отладки
5. Нажимая кнопку "Шагнуть через (F10)" заставляете конфигуратор исполнять команды одну за другой пока не наткнетесь на ту команду которая вызовет ошибку (Напишите нам какая строчка выдает ошибку)
6. После этого запускаете отладку заново и кнопкой "Шагнуть через (F10)" доходите до той строки которая вызывает ошибку но не запускаете эту строку на исполнение а вместо этого изучаете какие параметры использует эта строка
7. Выделяете мышкой по очереди все параметры которые используются в этой строке (черным цветом нужно выделить название всего параметра) после чего щелкаете по выделению правой кнопкой мыши и выбираете пункт "Вычислить выражение (F9)" конфигуратор откроет отдельное окно в котором можно будет изучить что именно хранится в данном параметре и какой тип значения (Значения и тип параметров передающихся в строку пишете нам для того чтобы мы не гадали на кофейной гуще что происходит с вашим кодом)
1. Точку отладки ставите в начале данного куска кода
2. Запускаете 1с на исполнение из конфигуратора кнопкой "Начать отладку (F5)"
3. В запущенной 1с выполняете действия необходимые для того чтобы запустился ваш код
4. Когда исполнение кода дойдет до того места в котором точка отладки исполнение кода прервется и вас из 1с перебросит в конфигуратор на ту строку кода в которой сработала точка отладки
5. Нажимая кнопку "Шагнуть через (F10)" заставляете конфигуратор исполнять команды одну за другой пока не наткнетесь на ту команду которая вызовет ошибку (Напишите нам какая строчка выдает ошибку)
6. После этого запускаете отладку заново и кнопкой "Шагнуть через (F10)" доходите до той строки которая вызывает ошибку но не запускаете эту строку на исполнение а вместо этого изучаете какие параметры использует эта строка
7. Выделяете мышкой по очереди все параметры которые используются в этой строке (черным цветом нужно выделить название всего параметра) после чего щелкаете по выделению правой кнопкой мыши и выбираете пункт "Вычислить выражение (F9)" конфигуратор откроет отдельное окно в котором можно будет изучить что именно хранится в данном параметре и какой тип значения (Значения и тип параметров передающихся в строку пишете нам для того чтобы мы не гадали на кофейной гуще что происходит с вашим кодом)
А, стоп. Он жалуется не на мой код, а на другую функцию которую даже не трогал:
Он на 2 строчку жалуется. Видимо в параметрах функции чего-то не хватает.
Функция ОпределитьСтрокуДереваДляПолучателя(ДеревоОтчетов, ПолучательСсылка, ПараметрыДоставки)
СтрокаПолучатель = ДеревоОтчетов.Строки.Найти(ПолучательСсылка, "Ключ", Ложь);
Если СтрокаПолучатель = Неопределено Тогда
КаталогПолучателя = ПараметрыДоставки.КаталогВременныхФайлов;
Если ПолучательСсылка <> Неопределено Тогда
КаталогПолучателя = КаталогПолучателя
+ ПривестиИмяФайла(Строка(ПолучательСсылка))
+ " ("
+ Строка(ПолучательСсылка.УникальныйИдентификатор())
+ ")\";
СоздатьКаталог(КаталогПолучателя);
КонецЕсли;
СтрокаПолучатель = ДеревоОтчетов.Строки.Добавить();
СтрокаПолучатель.Уровень = 1;
СтрокаПолучатель.Ключ = ПолучательСсылка;
СтрокаПолучатель.Значение = КаталогПолучателя;
КонецЕсли;
Возврат СтрокаПолучатель;
КонецФункции
ПоказатьОн на 2 строчку жалуется. Видимо в параметрах функции чего-то не хватает.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот