Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Выгрузка справочника в DBF , Помогите чайнику          
soleg78 Подменю пользователя
сообщение 05.10.10, 12:45
Сообщение #1

Школота
**
Группа: Пользователи
Сообщений: 15
Спасибо сказали: 0 раз
Рейтинг: 0

Пишу следующий код
    Перем 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");


кто что думает?

Vofka Подменю пользователя
сообщение 05.10.10, 13:02
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

А так работает:
Файл.Р_1
...?

И вообще я такую конструкцию
+ [n]
(+ что-то в квадратных скобках) вижу в первые.

Может так:
Файл.Р[n]

?

soleg78 Подменю пользователя
сообщение 05.10.10, 15:28
Сообщение #3

Школота
**
Группа: Пользователи
Сообщений: 15
Спасибо сказали: 0 раз
Рейтинг: 0

раздуплился, ....вот как можно вігрузить все справочники
    Перем P[200];
    Перем nn;
    Т=СоздатьОбъект("Текст");
    Файл_рез = создатьОбъект("XBASE");
    Файл_рез.ДобавитьПоле("spr","S",10,0);
    Файл_рез.ДобавитьПоле("spr1","S",70,0);
    Файл_рез.ДобавитьПоле("spr2","S",70,0);
    Файл_рез.ДобавитьПоле("spr3","S",70,0);
    Файл_рез.ДобавитьПоле("spr4","S",70,0);
    Файл_рез.ДобавитьПоле("spr5","S",70,0);
    Файл_рез.ДобавитьПоле("spr6","S",70,0);
    Файл_рез.ДобавитьПоле("spr7","S",70,0);
    Файл_рез.ДобавитьПоле("spr8","S",70,0);
    Файл_рез.ДобавитьПоле("spr9","S",70,0);
    Файл_рез.ДобавитьПоле("spr10","S",70,0);
    Файл_рез.ДобавитьПоле("spr11","S",70,0);
    Файл_рез.ДобавитьПоле("spr12","S",70,0);
    Файл_рез.ДобавитьПоле("spr13","S",70,0);
    Файл_рез.ДобавитьПоле("pole1","S",70,0);
    Файл_рез.ДобавитьПоле("pole2","S",70,0);
    Файл_рез.ДобавитьПоле("pole3","S",70,0);
    Файл_рез.ДобавитьПоле("pole4","S",70,0);
    Файл_рез.ДобавитьПоле("pole5","S",70,0);
    Файл_рез.ДобавитьПоле("pole6","S",70,0);
    Файл_рез.ДобавитьПоле("pole7","S",70,0);
    Файл_рез.ДобавитьПоле("pole8","S",70,0);
    Файл_рез.ДобавитьПоле("pole9","S",70,0);
    Файл_рез.ДобавитьПоле("pole10","S",70,0);
    Файл_рез.ДобавитьПоле("pole11","S",70,0);
    Файл_рез.ДобавитьПоле("pole12","S",70,0);
    Файл_рез.СоздатьФайл("C:\rez_spr.dbf");
    
    
    
    
    
    Для И1=1 По Метаданные.Справочник() Цикл
        МетаСпр=Метаданные.Справочник(И1).Идентификатор;
        Сообщить(МетаСпр);
        
        Т.ДобавитьСтроку("Справочник = " + И1+".dbf это справочник "+ Метаданные.Справочник(И1) + " Идентификатор его в 7.7 "+Метаданные.Справочник(И1).Идентификатор);  
        
        Файл = создатьОбъект("XBASE");
        Файл.ДобавитьПоле("KOD","S",10,0);
        Файл.ДобавитьПоле("NAME","S",150,0);
        Файл.ДобавитьПоле("RODITEL","S",10,0);
        //Файл.ДобавитьПоле("VLADELEC","S",10,0);
        Для nn = 1 По Метаданные.Справочник(И1).Реквизит() Цикл
            П1 = "P_" + nn;
            P[nn] = П1;
            Если Метаданные.Справочник(И1).Реквизит(nn).Тип = "Число" Тогда
                П2 = "N";
            ИначеЕсли Метаданные.Справочник(И1).Реквизит(nn).Тип = "Дата" Тогда
                П2 = "D";                                                                      
            Иначе
                П2 = "S";                                                                      
            КонецЕсли;        
            П3 = Метаданные.Справочник(И1).Реквизит(nn).Длина+3;
            Т.ДобавитьСтроку("  - Поля справочника " +Метаданные.Справочник(И1).Реквизит(nn).Идентификатор + " Поле = " + П2 + " Длина = " + П3);
            Файл_рез.Добавить();
            Файл_рез.spr =И1 + ".dbf";
            Файл_рез.spr1 =Метаданные.Справочник(И1).Идентификатор;
            Файл_рез.spr2 =Метаданные.Справочник(И1).Синоним;
            Файл_рез.spr3 =Метаданные.Справочник(И1).Комментарий;
            Файл_рез.spr4 =Метаданные.Справочник(И1).Владелец;
            Файл_рез.spr5 =Метаданные.Справочник(И1).КоличествоУровней;
            Файл_рез.spr6 =Метаданные.Справочник(И1).ДлинаКода;
            Файл_рез.spr7 =Метаданные.Справочник(И1).ДлинаНаименования;
            Файл_рез.spr8 =Метаданные.Справочник(И1).СерииКодов;
            Файл_рез.spr9 =Метаданные.Справочник(И1).ТипКода;
            Файл_рез.spr10 =Метаданные.Справочник(И1).ОсновноеПредставление;
            Файл_рез.spr11 =Метаданные.Справочник(И1).КонтрольУникальности;
            Файл_рез.spr12 =Метаданные.Справочник(И1).АвтоНумерация;
            Файл_рез.spr13 =Метаданные.Справочник(И1).ГруппыВпереди;
            Файл_рез.pole1 =Метаданные.Справочник(И1).Реквизит(nn);
            Файл_рез.pole2 =Метаданные.Справочник(И1).Реквизит(nn).Идентификатор;
            Файл_рез.pole3 =Метаданные.Справочник(И1).Реквизит(nn).Синоним;
            Файл_рез.pole4 =Метаданные.Справочник(И1).Реквизит(nn).Комментарий;
            Файл_рез.pole5 =Метаданные.Справочник(И1).Реквизит(nn).Тип;
            Файл_рез.pole6 =Метаданные.Справочник(И1).Реквизит(nn).Вид;
            Файл_рез.pole7 =Метаданные.Справочник(И1).Реквизит(nn).Длина;
            Файл_рез.pole8 =Метаданные.Справочник(И1).Реквизит(nn).Точность;
            Файл_рез.pole9 =Метаданные.Справочник(И1).Реквизит(nn).НеОтрицательный;
            Файл_рез.pole10 =Метаданные.Справочник(И1).Реквизит(nn).РазделятьТриады;
            Файл_рез.pole11 =Метаданные.Справочник(И1).Реквизит(nn).Периодический;
            Файл_рез.pole12 =Метаданные.Справочник(И1).Реквизит(nn).Сортировка;
            Файл_рез.Записать();
            
            Файл.ДобавитьПоле(П1,П2,П3,2);
            
            
        КонецЦикла;
        
        
        Файл.СоздатьФайл("C:\" + И1 + ".dbf");
        
        
        Спр = СоздатьОбъект("Справочник." + МетаСпр);
        Спр.ВыбратьЭлементы();
        Пока Спр.ПолучитьЭлемент()=1 Цикл
            Файл.Добавить();
            Файл.KOD =Спр.Код;
            Файл.NAME = Спр.Наименование;
            Файл.RODITEL = Спр.Родитель.код;
            //    Файл.VLADELEC = Спр.Владелец;
            Для n =1 По nn-1 Цикл        
                Рекв = "P_" + n;            
                РеквВ= Спр.ПолучитьАтрибут(Метаданные.Справочник(И1).Реквизит(n).Идентификатор);
                Файл.УстановитьЗначениеПоля(Рекв,РеквВ);
            КонецЦикла;
            
            Файл.Записать();
        КонецЦикла;
        Файл.ЗакрытьФайл();
        
        
        
        
        
        
    КонецЦикла;    
    Т.Записать("C:\rez.txt");
    Файл_рез.Записать();
    Файл_рез.ЗакрытьФайл();
    
    Сообщить("Конец");

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 10.05.24, 22:53
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!