8.х Ошибка при создании DBF

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем andryscha92, 5 мар 2015.

  1. TopicStarter Overlay
    andryscha92
    Offline

    andryscha92 Опытный в 1С

    Регистрация:
    31 янв 2012
    Сообщения:
    389
    Симпатии:
    1
    Баллы:
    29
    Здравствуйте! Создаю DBF файл по данным из документа
    Код:
        Запрос = Новый Запрос;
        Запрос.Текст ="ВЫБРАТЬ
                      |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия,
                      |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер,
                      |    ФИОФизЛицСрезПоследних.Фамилия,
                      |    ФИОФизЛицСрезПоследних.Имя,
                      |    ФИОФизЛицСрезПоследних.Отчество,
                      |    ПеречислениеПодотчетныхСуммРаботникиОрганизации.НомерЛицевогоСчета,
                      |    ПеречислениеПодотчетныхСуммРаботникиОрганизации.Сумма,
                      |    ПеречислениеПодотчетныхСуммРаботникиОрганизации.ФизЛицо
                      |ИЗ
                      |    Документ.ПеречислениеПодотчетныхСумм.РаботникиОрганизации КАК ПеречислениеПодотчетныхСуммРаботникиОрганизации
                      |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних
                      |        ПО ПеречислениеПодотчетныхСуммРаботникиОрганизации.ФизЛицо = ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо
                      |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
                      |        ПО ПеречислениеПодотчетныхСуммРаботникиОрганизации.ФизЛицо = ФИОФизЛицСрезПоследних.ФизЛицо
                      |ГДЕ
                      |    ПеречислениеПодотчетныхСуммРаботникиОрганизации.Ссылка = &Ссылка";
       
        Запрос.УстановитьПараметр("Ссылка", СсылкакНаДокумент);
       
        Выборка = Запрос.Выполнить().Выбрать();
           
            Если Не ЗначениеЗаполнено(ПутьКФайлу) Тогда
                Предупреждение("Не указан путь к файлу DBF!");
                Возврат;
            КонецЕсли;
           
            ДБФ = Новый XBase;
            ДБФ.ОткрытьФайл(ПутьКФайлу);
            ДБФ.ОчиститьФайл();
            ДБФ.Кодировка =КодировкаXBase.OEM;
            ДБФ.АвтоСохранение=Истина;
            Пока Выборка.Следующий() Цикл
               
                ДБФ.Добавить();
                ДБФ.FIOOWNER = ОбщегоНазначения.ПолучитьФамилиюИмяОтчество(Выборка.Фамилия, Выборка.Имя, Выборка.Отчество, Ложь);
                ДБФ.PASPORT = Строка(Выборка.ДокументСерия)+ " "+Строка(Выборка.ДокументНомер);
                ДБФ.ADDRESS = ПолучитьАдресИзКонтактнойИнформации(Выборка.ФизЛицо);
                ДБФ.INDEX   = "";
                ДБФ.PHONENM = ПолучитьТелефонИзКонтактнойИнформации(Выборка.ФизЛицо);
                ДБФ.VTYPE = "370";
                ДБФ.ACCOUNT = Выборка.НомерЛицевогоСчета;
                ДБФ.CASHVAL = Выборка.Сумма;
            КонецЦикла;
            ДБФ.ЗакрытьФайл();
    
    выскакивает ошибка

    {Документ.ПеречислениеПодотчетныхСумм.Форма.ФормаВыгрузкиВДБФ.Форма(142)}: Ошибка при вызове метода контекста (ОчиститьФайл)
    ДБФ.ОчиститьФайл();
    по причине:
    Перед выполнением операции нужно открыть базу


    в чем дело? Путь указан (ПутьКФайлу - D:\Файл.dbf, запись на диск разрешена)
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    Файла может не существовать вообще.
  3. TopicStarter Overlay
    andryscha92
    Offline

    andryscha92 Опытный в 1С

    Регистрация:
    31 янв 2012
    Сообщения:
    389
    Симпатии:
    1
    Баллы:
    29
    т.е. эта процедура открывает уже готовый dbf очищает и добавляет туда записи?
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
  5. TopicStarter Overlay
    andryscha92
    Offline

    andryscha92 Опытный в 1С

    Регистрация:
    31 янв 2012
    Сообщения:
    389
    Симпатии:
    1
    Баллы:
    29
    Так и подумал...всё же спасибо большое!
  6. pavl_vs
    Offline

    pavl_vs Профессионал в 1С

    Регистрация:
    18 июн 2011
    Сообщения:
    343
    Симпатии:
    27
    Баллы:
    54
    Фрагмент кода создания и записи в ДБФ должен быть таким:
    Код:
    ДБФ = Новый XBase;
    ДБФ.Кодировка = КодировкаXBase.OEM;
    ДБФ.АвтоСохранение = Истина; 
    ДБФ.СоздатьФайл(ПутьКФайлу);
    ДБФ.Записать(); 
    ДБФ.ОчиститьФайл();
    
    Пока Выборка.Следующий() Цикл 
        ДБФ.Добавить(); 
        ДБФ.FIOOWNER = ОбщегоНазначения.ПолучитьФамилиюИмяОтчество(Выборка.Фамилия, Выборка.Имя, Выборка.Отчество, Ложь); 
        ДБФ.PASPORT = Строка(Выборка.ДокументСерия)+ " "+Строка(Выборка.ДокументНомер); 
        ДБФ.ADDRESS = ПолучитьАдресИзКонтактнойИнформации(Выборка.ФизЛицо); ДБФ.INDEX = ""; 
        ДБФ.PHONENM = ПолучитьТелефонИзКонтактнойИнформации(Выборка.ФизЛицо); 
        ДБФ.VTYPE = "370"; 
        ДБФ.ACCOUNT = Выборка.НомерЛицевогоСчета; 
        ДБФ.CASHVAL = Выборка.Сумма; 
        ДБФ.Записать();
    КонецЦикла;
    
    ДБФ.ЗакрытьФайл();
    
    Помимо ошибки, связанной с очисткой файла, в оригинале есть ошибка в цикле обработки выборки - запись каждой строки начинается с "Добавить" и заканчивается "Записать".

Поделиться этой страницей