Не определена структура базы при сохранении в DBF

1. user1619761 20.12.21 16:06 Сейчас в теме
Здравствуйте. Столкнулся с такой проблемой : есть запрос, в цикле по обходу результата запроса создается дбф файл, когда первый раз проходит цикл то все ок, а при втором заходе вылетает с ошибкой на строке ФайлДБФ.СоздавтьФайл(Имяфайла); по причине : не определена структура базы. Подскажите, пожалуйста, с чем может быть связана ошибка?
ФайлДБФ= Новый XBase;
	ФайлДБФ.Кодировка = КодировкаXBase.ANSI;
	
	ФайлДБФ.поля.Добавить("Date","D");
	ФайлДБФ.поля.Добавить("Number","S",25);
	ФайлДБФ.поля.Добавить("ProdCode","S",20);
	ФайлДБФ.поля.Добавить("Amount","N",20,8);
	
	
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
	Диалог.Заголовок = "Путь для сохранения:";
	Диалог.ПолноеИмяФайла = "РТ";
	Диалог.ПредварительныйПросмотр = Ложь;
	
	Если Диалог.Выбрать() Тогда
		ИмяФайла= Диалог.ПолноеИмяФайла;
	Иначе
		Возврат;
	КонецЕсли;	
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("НачалоПериода", НачПериода);
	Запрос.УстановитьПараметр("КонецПериода", КонПериода);
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	РеализацияТоваровУслуг.Ссылка КАК СсылкаДокумента
	|ИЗ
	|	Документ.РеализацияТоваровУслуг.ТоварыКАК РеализацияТоваровУслугТовары
	|ГДЕ
	|	РеализацияТоваровУслуг.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
	|	И РеализацияТоваровУслуг.Ссылка.ПометкаУдаления = ЛОЖЬ";
	РезультатЗапроса = Запрос.Выполнить().Выбрать();
	
	Пока РезультатЗапроса .Следующий() Цикл
		
		ДокументОбъект= РезультатЗапроса .СсылкаДокумента.ПолучитьОбъект();
		ДатаДокумента = Формат(ДокументОбъект.Дата, "ДФ=dd.MM.yyyy");
		Символ = Найти(ДатаДокумента, ".");
		ДеньДаты = Лев(ДатаДокумента, Символ - 1);
		МесяцДаты = Сред(ДатаДокумента, Символ +1, Символ-1);
		ФайлДБФ.СоздатьФайл(ИмяФайла+ ДеньДаты + "_" + МесяцДаты + ".DBF");
		
		ТабличнаяЧасть = ДокументОбъект.Товары;
		
		Для Каждого Строка Из ТабличнаяЧасть Цикл
			
			ФайлДБФ.Добавить();
			ФайлДБФ.Date= ДокументОбъект.Дата;
			ФайлДБФ.Number = ДокументОбъект.Номер;
			ФайлДБФ.ProdCode= Строка.Номенклатура.Код;
			ФайлДБФ.Amount = Строка.Количество;
			ФайлДБФ.Записать();
			
		КонецЦикла;
		
		ФайлDBF.ЗакрытьФайл();
		
	КонецЦикла;
Показать
По теме из базы знаний
Найденные решения
2. user1619761 20.12.21 16:18 Сейчас в теме
Решил задачу так:
    
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    Диалог.Заголовок = "Путь для сохранения:";
    Диалог.ПолноеИмяФайла = "РТ";
    Диалог.ПредварительныйПросмотр = Ложь;
    
    Если Диалог.Выбрать() Тогда
        ИмяФайла= Диалог.ПолноеИмяФайла;
    Иначе
        Возврат;
    КонецЕсли;    
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("НачалоПериода", НачПериода);
    Запрос.УстановитьПараметр("КонецПериода", КонПериода);
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    РеализацияТоваровУслуг.Ссылка КАК СсылкаДокумента
    |ИЗ
    |    Документ.РеализацияТоваровУслуг.ТоварыКАК РеализацияТоваровУслугТовары
    |ГДЕ
    |    РеализацияТоваровУслуг.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    |    И РеализацияТоваровУслуг.Ссылка.ПометкаУдаления = ЛОЖЬ";
    РезультатЗапроса = Запрос.Выполнить().Выбрать();
    
    Пока РезультатЗапроса .Следующий() Цикл
        
ФайлДБФ= Новый XBase;
    ФайлДБФ.Кодировка = КодировкаXBase.ANSI;
    
    ФайлДБФ.поля.Добавить("Date","D");
    ФайлДБФ.поля.Добавить("Number","S",25);
    ФайлДБФ.поля.Добавить("ProdCode","S",20);
    ФайлДБФ.поля.Добавить("Amount","N",20,8);
    

        ДокументОбъект= РезультатЗапроса .СсылкаДокумента.ПолучитьОбъект();
        ДатаДокумента = Формат(ДокументОбъект.Дата, "ДФ=dd.MM.yyyy");
        Символ = Найти(ДатаДокумента, ".");
        ДеньДаты = Лев(ДатаДокумента, Символ - 1);
        МесяцДаты = Сред(ДатаДокумента, Символ +1, Символ-1);
        ФайлДБФ.СоздатьФайл(ИмяФайла+ ДеньДаты + "_" + МесяцДаты + ".DBF");
        
        ТабличнаяЧасть = ДокументОбъект.Товары;
        
        Для Каждого Строка Из ТабличнаяЧасть Цикл
            
            ФайлДБФ.Добавить();
            ФайлДБФ.Date= ДокументОбъект.Дата;
            ФайлДБФ.Number = ДокументОбъект.Номер;
            ФайлДБФ.ProdCode= Строка.Номенклатура.Код;
            ФайлДБФ.Amount = Строка.Количество;
            ФайлДБФ.Записать();
            
        КонецЦикла;
        
        ФайлДБФ .ЗакрытьФайл();
        ФайлДБФ = "";

    КонецЦикла;
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1619761 20.12.21 16:18 Сейчас в теме
Решил задачу так:
    
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    Диалог.Заголовок = "Путь для сохранения:";
    Диалог.ПолноеИмяФайла = "РТ";
    Диалог.ПредварительныйПросмотр = Ложь;
    
    Если Диалог.Выбрать() Тогда
        ИмяФайла= Диалог.ПолноеИмяФайла;
    Иначе
        Возврат;
    КонецЕсли;    
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("НачалоПериода", НачПериода);
    Запрос.УстановитьПараметр("КонецПериода", КонПериода);
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    РеализацияТоваровУслуг.Ссылка КАК СсылкаДокумента
    |ИЗ
    |    Документ.РеализацияТоваровУслуг.ТоварыКАК РеализацияТоваровУслугТовары
    |ГДЕ
    |    РеализацияТоваровУслуг.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    |    И РеализацияТоваровУслуг.Ссылка.ПометкаУдаления = ЛОЖЬ";
    РезультатЗапроса = Запрос.Выполнить().Выбрать();
    
    Пока РезультатЗапроса .Следующий() Цикл
        
ФайлДБФ= Новый XBase;
    ФайлДБФ.Кодировка = КодировкаXBase.ANSI;
    
    ФайлДБФ.поля.Добавить("Date","D");
    ФайлДБФ.поля.Добавить("Number","S",25);
    ФайлДБФ.поля.Добавить("ProdCode","S",20);
    ФайлДБФ.поля.Добавить("Amount","N",20,8);
    

        ДокументОбъект= РезультатЗапроса .СсылкаДокумента.ПолучитьОбъект();
        ДатаДокумента = Формат(ДокументОбъект.Дата, "ДФ=dd.MM.yyyy");
        Символ = Найти(ДатаДокумента, ".");
        ДеньДаты = Лев(ДатаДокумента, Символ - 1);
        МесяцДаты = Сред(ДатаДокумента, Символ +1, Символ-1);
        ФайлДБФ.СоздатьФайл(ИмяФайла+ ДеньДаты + "_" + МесяцДаты + ".DBF");
        
        ТабличнаяЧасть = ДокументОбъект.Товары;
        
        Для Каждого Строка Из ТабличнаяЧасть Цикл
            
            ФайлДБФ.Добавить();
            ФайлДБФ.Date= ДокументОбъект.Дата;
            ФайлДБФ.Number = ДокументОбъект.Номер;
            ФайлДБФ.ProdCode= Строка.Номенклатура.Код;
            ФайлДБФ.Amount = Строка.Количество;
            ФайлДБФ.Записать();
            
        КонецЦикла;
        
        ФайлДБФ .ЗакрытьФайл();
        ФайлДБФ = "";

    КонецЦикла;
Показать
Оставьте свое сообщение

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