7.7 Выгрузка справочника в DBF

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем soleg78, 5 окт 2010.

  1. TopicStarter Overlay
    soleg78
    Offline

    soleg78

    Регистрация:
    2 сен 2010
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Пишу код для выгрузки справочник в ДБФ неизвестной структуры на примере справочника Номенклатура
    Код:
    Перем R[200];
    Перем nn;
    Файл = создатьОбъект("XBASE");
    Файл.ДобавитьПоле("KOD","S",10,0);
    Файл.ДобавитьПоле("NAME","S",150,0);
    Файл.ДобавитьПоле("RODITEL","S",150,0);
    Файл.ДобавитьПоле("VLADELEC","S",150,0);
    Для nn = 1 По Метаданные.Справочник("Номенклатура").Реквизит() Цикл
    R[nn] = "P_" + nn;
    Если Метаданные.Справочник("Номенклатура").Реквизит(nn).Тип = "Число" Тогда
    П2 = "N";
    ИначеЕсли Метаданные.Справочник("Номенклатура").Реквизит(nn).Тип = "Дата" Тогда
    П2 = "D";                                                                       
    Иначе 
    П2 = "S";                                                                       
    КонецЕсли;        
    П3 = Метаданные.Справочник("Номенклатура").Реквизит(nn).Длина;
    // получается файл с полями "P_1";"P_2";......"P_10"
    Файл.ДобавитьПоле(R[nn],П2,П3,0);
    
    
    КонецЦикла;
    
    Спр = СоздатьОбъект("Справочник.Номенклатура"); 
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл 
    Для n =1 По nn Цикл
    // Здесь хочу вывалить данные
    // а здесь не могу програмно достучатся до полей "P_1";"P_2";......"P_10"
    // Файл.Р_+ [n] = .....     - не пашет
    // Файл.R[n] = ...... и так не пашет 
    // помогите!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // Файл . ??????[n]  = Спр. ??? нужная по счету колонка Справочника [n] или что то типа так
    КонецЦикла;
    Файл.Записать(); 
    КонецЦикла;
    Файл.ЗакрытьФайл();
    
    
    
    
    Файл.СоздатьФайл("C:\rez.dbf");
    
    
    Кто что думает?
  2. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Метод ПолучитьАтрибут не подходит?

    А для записи в DBF УстановитьЗначениеПоля?
  3. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Если хотите писать универсальную вещь - не нужен применять массив. Нужно создавать ТаблицуЗначений и отслеживать в первом цикле что реквизит может быть периодическим с занисением в ТЗ соответствующего признака. Во втором цикле используйте метод Получить. И еще... Понятно что реквизиты типа справочник/документ/неопределенный вы выгрузите скорее всего не правильно, но нужно ведь поставить ограничение на длину реквизита (строка неограниченной длины). Или проверяйте чтобы не больше 255 символов или используйте поле МЕМО.
  4. Чемберлен
    Offline

    Чемберлен

    Регистрация:
    4 авг 2009
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1

    1c при выгрузке в ДБФ не поддерживает МЕМО поля.
  5. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    ШТАТНО - нет. Но если чуть поднапрячь извилины - все можно.
  6. Чемберлен
    Offline

    Чемберлен

    Регистрация:
    4 авг 2009
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    а как это сделать? Не помешало бы..... Иногда нужно.
  7. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Мемо лежит в отдельном файле. Каждый блок по 512 символов + общий заголовок. Структура - тревиальнейшая. Используя WST можно все получить))))

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