7.7 Обработка не видит таблицу DBF

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем SerzhM, 28 авг 2013.

  1. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Осваиваю работу с ДБФ.
    Есть документ ексель ( на работе стоит только опенофис) его сохраняю как таблицу Database *.dbf кодировку ствалю Кириллица (Dos\OS2-866\русский). Но моя обработка почему то не видит таблицу. Пробовал кодировку менять на Кириллица Windows-1251, так же не видит.
    ДБФ Вивью все нормально открывает и показывает.

    Обработку прикрепил, документ тоже. Но на всякий случай выложу код процедуры по загрузке документа.
    Код:
    Процедура Сформировать()
    // ИмяФайла=ОткрытьФайл("csv");
    ИмяФайла=ОткрытьФайл("dbf");
    Если СокрЛП(ИмяФайла)="" Тогда
    Возврат;
    КонецЕсли; 
    Таб.УдалитьСтроки();
    
    dbfТаблица = СоздатьОбъект("XBase");
    dbfТаблица.ОткрытьФайл(ИмяФайла);		  //открыли
    НомСтр=0;
    Пока dbfТаблица.Следующая()=1 Цикл	  //спозицировали на первую строку
    Таб.НоваяСтрока();  //что с переносом?
    Таб.НомерСтр=Строка(НомСтр+1);
    НомСтр=НомСтр+1;		
    Если ПустоеЗначение(ШК)=0 Тогда
    Таб.ШК=dbfТаблица.ПолучитьЗначениеПоля(ШК);  //прочитали ...  вот и все
    КОнецЕсли;
    Если ПустоеЗначение(Артикул)=0 Тогда
    Таб.Артикул=dbfТаблица.ПолучитьЗначениеПоля(Артикул);
    Таб.Артикул=СтрЗаменить(Таб.Артикул," ","");
    КОнецЕсли;
    Если ПустоеЗначение(АртикулПР)=0 Тогда
    Таб.АртикулПР=dbfТаблица.ПолучитьЗначениеПоля(АртикулПР);
    
    КОнецЕсли;
    Если ПустоеЗначение(Наименование)=0 Тогда
    Таб.Наименование=dbfТаблица.ПолучитьЗначениеПоля(Наименование);
    КОнецЕсли;
    Если ПустоеЗначение(Количество)=0 Тогда
    Таб.Количество=dbfТаблица.ПолучитьЗначениеПоля(Количество);
    КОнецЕсли;
    Если ПустоеЗначение(Цена)=0 Тогда
    Таб.Цена=dbfТаблица.ПолучитьЗначениеПоля(Цена);
    КОнецЕсли;
    попытка
    Таб.Сумма=Таб.Количество*Таб.Цена;
    исключение
    конецпопытки;
    Таб.Загр="Х";
    
    Таб.Товар=НайтиСоздатьТовар(Таб,0);   
    
    
    КонецЦикла;
    КонецПроцедуры 

    Вложения:

  2. Herby
    Offline

    Herby Опытный в 1С

    Регистрация:
    21 фев 2013
    Сообщения:
    95
    Симпатии:
    0
    Баллы:
    26
    Что вы имеете в виду? Диалоговое окно выбора файла? или сам Xbase не может открыть файл?
  3. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Дело в том что открывает он файл а а саму таблицу не видит. Т.е я отладчиком смотрю не поступает данных. А вот если мне скинули готовый дбф файл, я незнаю каким образом сделанный он его видит в отладчике и все нормально с ним работает. Но если я дбф создаю из xls через опенноффис calс то не видит.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    dbfТаблица = СоздатьОбъект("XBase");
    dbfТаблица.ОткрытьФайл(ИмяФайла);		  //открыли
    НомСтр=0;
    Пока dbfТаблица.ВКонце()=0 Цикл      
    //ваш код
    dbfТаблица.Следующая();
    КонецЦикла;
    
  5. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    При выше указанном коде без dbfТаблица.Следующая(); берется первая строка и копируется миллион раз одна и та же/
    А если как вы указали то выдает ошибку
    dbfТаблица.Следующая()<<?>>=1;
    {Загрузка Ексель 4564(2).ert(277)}: Неопознанный оператор
    dbfТаблица.Следующая()=1<<?>>;
    {Загрузка Ексель 4564(2).ert(277)}: Ожидается ключевое слово 'КонецЦикла' ('EndDo')
    <<?>>КонецЦикла;
    { Ексель 4564(2).ert(278)}: Ожидается ключевое слово 'КонецПроцедуры' ('EndProcedure')
    При проверке модуля обнаружены синтаксические ошибки!

    Код:
    Процедура Сформировать()
    // ИмяФайла=ОткрытьФайл("csv");
    ИмяФайла=ОткрытьФайл("dbf");
    Если СокрЛП(ИмяФайла)="" Тогда
    Возврат;
    КонецЕсли; 
    Таб.УдалитьСтроки();
    
    dbfТаблица = СоздатьОбъект("XBase");
    dbfТаблица.ОткрытьФайл(ИмяФайла);		  //открыли
    НомСтр=0;
    Пока dbfТаблица.ВКонце()=0 Цикл
    //спозицировали на первую строку
    Таб.НоваяСтрока();  //что с переносом?
    Таб.НомерСтр=Строка(НомСтр+1);
    НомСтр=НомСтр+1;		
    Если ПустоеЗначение(ШК)=0 Тогда
    Таб.ШК=dbfТаблица.ПолучитьЗначениеПоля(ШК);  //прочитали ...  вот и все
    КОнецЕсли;
    Если ПустоеЗначение(Артикул)=0 Тогда
    Таб.Артикул=dbfТаблица.ПолучитьЗначениеПоля(Артикул);
    Таб.Артикул=СтрЗаменить(Таб.Артикул," ","");
    КОнецЕсли;
    Если ПустоеЗначение(АртикулПР)=0 Тогда
    Таб.АртикулПР=dbfТаблица.ПолучитьЗначениеПоля(АртикулПР);
    
    КОнецЕсли;
    Если ПустоеЗначение(Наименование)=0 Тогда
    Таб.Наименование=dbfТаблица.ПолучитьЗначениеПоля(Наименование);
    КОнецЕсли;
    Если ПустоеЗначение(Количество)=0 Тогда
    Таб.Количество=dbfТаблица.ПолучитьЗначениеПоля(Количество);
    КОнецЕсли;
    Если ПустоеЗначение(Цена)=0 Тогда
    Таб.Цена=dbfТаблица.ПолучитьЗначениеПоля(Цена);
    КОнецЕсли;
    попытка
    Таб.Сумма=Таб.Количество*Таб.Цена;
    исключение
    конецпопытки;
    Таб.Загр="Х";
    
    Таб.Товар=НайтиСоздатьТовар(Таб,0);   
    
    
    dbfТаблица.Следующая()=1;
    КонецЦикла; 
    КонецПроцедуры 
  6. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Пробовал я вставлять ВНачале , Первая,
    Не работает так же множит одну и ту же строку в бесконечность врлоть до 10000 строк если не остановить думаю уйдет за пределы исчисления :)

    Я не могу все таки понять документ 45 созданный опенн офис не грузится а вот этот документ 00074312 (который мне скидывают в ДБФ) грузит и 500 строк в документе .
    Не все поставщики могут в дбф скидывать поэтому приходится идти в обход.

    Вложения:

    • 00074312.rar
      Размер файла:
      849 байт
      Просмотров:
      5
  7. TopicStarter Overlay
    SerzhM
    Offline

    SerzhM Опытный в 1С

    Регистрация:
    26 окт 2009
    Сообщения:
    511
    Симпатии:
    3
    Баллы:
    29
    Решил проблему. Дома догодался посмотреть данные при помощи Acess 2010 таблица была представлена в виде удалено во всех столбцах где была информация. Попробовал dbfТаблица.ПоказыватьУдаленные(1); и все заработало.
    всем спасибо за внимание :)
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    вызов в конце цикла...

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