Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Выгрузка в dbf

Выгрузка в dbf
Я
   shock3r
 
22.01.13 - 11:33
Подскажите по выгрузке в dbf файл:
 
 
   shock3r
 
1 - 22.01.13 - 11:34
ДБФ = Новый XBase;

    ДБФ.Поля.Добавить("CODE","S",11);   // Код - тип СТРОКА
 
    ДБФ.Поля.Добавить("NAME","S",100);  // Наименование - тип СТРОКА
 
   //ДБФ.Поля.Добавить("SERVICE","L",1);  // Услуга - тип Булево
 
   //ДБФ.Поля.Добавить("PRICE","N",15,2); // Цена - тип Число(длина 15, точность 2)
 

    ДБФ.СоздатьФайл("C:\obmen.dbf");
    Выборка = Справочники.Номенклатура.Выбрать();
    Пока Выборка.Следующий() Цикл
        ДБФ.Добавить();
        ДБФ.CODE     = Выборка.Код;
        ДБФ.NAME     = Выборка.Наименование;
       //ДБФ.SERVICE     = Выборка.Услуга;
 
       //ДБФ.PRICE     = Выборка.Цена;
 
        ДБФ.Записать();
    КонецЦикла;
    ДБФ.ЗакрытьФайл();

Как сделать обработку - проверку, если файл открыт другим приложением - чтобы выводилось сообщение, что файл занят?
   cw014
 
2 - 22.01.13 - 11:35
Попытка
   ДБФ.СоздатьФайл("C:\obmen.dbf");
Исключение
   Сообщить("Файл открыт в другой программе");
   Возврат;
КонецПопытки;
   shock3r
 
3 - 22.01.13 - 11:36
(2) спасибо, то что нужно
   shock3r
 
4 - 22.01.13 - 11:41
(2) что-то криво, не хочет он на исключение прыгать
   Kreont
 
5 - 22.01.13 - 11:48
XBase (XBase)
Открыта (IsOpen)
Синтаксис:

Открыта()
Возвращаемое значение:

Тип: Булево.
Истина - файл открыт; Ложь - файл не открыт.
   shock3r
 
6 - 22.01.13 - 11:50
(5) Вообщем вот рабочий вариант, может кому-то будет полезен.

    ДБФ = Новый XBase;
    
    Попытка
        ДБФ.СоздатьФайл("C:\obmen.dbf");
    Исключение
        Сообщить("Файл открыт в другой программе");
        Возврат;
    Возврат;
    КонецПопытки;
    ДБФ.Кодировка = КодировкаXBase.OEM;
    ДБФ.Поля.Добавить("CODE","S",11);   // Код - тип СТРОКА
 
    ДБФ.Поля.Добавить("NAME","S",100);  // Наименование - тип СТРОКА
 
   //ДБФ.Поля.Добавить("SERVICE","L",1);  // Услуга - тип Булево
 
   //ДБФ.Поля.Добавить("PRICE","N",15,2); // Цена - тип Число(длина 15, точность 2)
 
   //ДБФ.СоздатьФайл("C:\obmen.dbf");
 
    
    Выборка = Справочники.Номенклатура.Выбрать();
    Пока Выборка.Следующий() Цикл
        ДБФ.Добавить();
        ДБФ.CODE     = Выборка.Код;
        ДБФ.NAME     = Выборка.Наименование;
       //ДБФ.SERVICE     = Выборка.Услуга;
 
       //ДБФ.PRICE     = Выборка.Цена;
 
        ДБФ.Записать();
    КонецЦикла;
    ДБФ.ЗакрытьФайл();
   Дядя Вова
 
7 - 22.01.13 - 11:53
(6) Сказали же в (5):
Если ДБФ.Открыта() Тогда
 Сообщить("Файл открыт в другой программе");
 Возврат;
Иначе
ДБФ.СоздатьФайл("C:\obmen.dbf");
   cw014
 
8 - 22.01.13 - 11:56
(7) Эээээ, это как? Создается экземпляр объекта XBase и вдруг он сразу становится открытым в другой программе?
   shock3r
 
9 - 22.01.13 - 11:59
(7) Я затупил
   shock3r
 
10 - 22.01.13 - 11:59
(7) ДБФ = Новый XBase;
    
    ДБФ.Кодировка = КодировкаXBase.OEM;//dos кодировка
 
    ДБФ.Поля.Добавить("CODE","S",11);   // Код - тип СТРОКА
 
    ДБФ.Поля.Добавить("NAME","S",100);  // Наименование - тип СТРОКА
 
    
    ДБФ.СоздатьФайл("C:\obmen.dbf");
    Если НЕ ДБФ.Открыта() Тогда
        Сообщить("Файл открыт в другой программе", СтатусСообщения.Важное);
        Возврат;
    КонецЕсли;
    
   //Попытка
 
   //    ДБФ.СоздатьФайл("C:\obmen.dbf");
 
   //Исключение
 
   //    Сообщить("Файл открыт в другой программе");
 
   //    Возврат;
 
   //Возврат;
 
   //КонецПопытки;
 
   ////////////////////ДБФ.Кодировка = КодировкаXBase.OEM; //dos кодировка
 
   ////////////////////ДБФ.Поля.Добавить("CODE","S",11);    // Код - тип СТРОКА
 
   ////////////////////ДБФ.Поля.Добавить("NAME","S",100);   // Наименование - тип СТРОКА
 
   //ДБФ.Поля.Добавить("SERVICE","L",1);  // Услуга - тип Булево
 
   //ДБФ.Поля.Добавить("PRICE","N",15,2); // Цена - тип Число(длина 15, точность 2)
 
   //ДБФ.СоздатьФайл("C:\obmen.dbf");
 
    
    Выборка = Справочники.Номенклатура.Выбрать();
    Пока Выборка.Следующий() Цикл
        ДБФ.Добавить();
        ДБФ.CODE     = Выборка.Код;
        ДБФ.NAME     = Выборка.Наименование;
       //ДБФ.SERVICE     = Выборка.Услуга;
 
       //ДБФ.PRICE     = Выборка.Цена;
 
        ДБФ.Записать();
    КонецЦикла;
    ДБФ.ЗакрытьФайл();
 
 Рекламное место пустует
   Reset
 
11 - 22.01.13 - 12:17
Может, все таки ОткрытьФайл() а не создать?
   Reset
 
12 - 22.01.13 - 12:19
(8) А, хотя видимо если уже сужествует и открыт в другой базе, то не удается перезаписать (пересоздать)
   shock3r
 
13 - 22.01.13 - 12:30
(12) да совершенно верно... один будет выгружать из dbf в дос, а второй будет пытаться выгрузить из 1С в dbf, нужно было эту ситуация предусмореть

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует