Имя: Пароль:
1C
1С v8
Загрузка в DBF хелп
0 tpudl_bases
 
19.10.12
15:21
Не получается:
http://clip2net.com/s/2pAPS


   База = Новый XBase();
//   База.Кодировка = КодировкаXBase.OEM;
   База.Поля.Добавить("NomerD","S",11);
   База.Поля.Добавить("DataDoc","D",10);
   База.Поля.Добавить("Firma","S",50);
   База.Поля.Добавить("KontragentKOD","S",9);
   База.Поля.Добавить("Kontragent","S",50);
   База.Поля.Добавить("Dogovor","S",20);
   База.Поля.Добавить("DogovorKod","N",11);
   База.Поля.Добавить("Sklad","S",100) ;
   База.Поля.Добавить("TZTovarx","S",100);
   База.Поля.Добавить("TZUsluga","S",100);
   База.Поля.Добавить("NOM","S",100) ;
   База.Поля.Добавить("NOMKod","N",15) ;
   База.Поля.Добавить("YnId","S",100) ;
   База.Поля.Добавить("Kolvo","N",15,2) ;
   База.Поля.Добавить("Cena","N",15,2) ;
   База.Поля.Добавить("Summa","N",15,2) ;
   База.Поля.Добавить("StavkaNDS","S",10,2) ;
   База.Поля.Добавить("SummaNDS","N",15,2) ;
   
   ИмяФайлаБазы  =  ФайлВыгрузки;
   База.ОткрытьФайл(ИмяФайлаБазы);
   Если Не База.Открыта() Тогда
       База.СоздатьФайл(ИмяФайлаБазы);
   Иначе    
       База.ОчиститьФайл();
   КонецЕсли;
//    База.СоздатьФайл(ФайлВыгрузки+"\FileName.dbf");
//    База.Индексы.Добавить("IDXCODE", "CODE");
//    ФлИБД = База.СоздатьИндексныйФайл(ИмяФайлаБазы + "index.cdx");
   База.АвтоСохранение = Истина;
   Запрос = Новый Запрос;
   
   ТекстЗапроса =
    "ВЫБРАТЬ
    |    РеализацияТоваровУслуг.Ссылка
    |ИЗ
    |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    |    РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон" ;
   Запрос.УстановитьПараметр("ДатаНач",НачалоДня(НачПериода));
   Запрос.УстановитьПараметр("ДатаКон",КонецДня(КонПериода));
   Если ЗначениеЗаполнено(СпрФирма) Тогда
       ТекстЗапроса = ТекстЗапроса+" И РеализацияТоваровУслуг.Организация = &Организация";
   Запрос.УстановитьПараметр("Организация",СпрФирма);
   КонецЕсли;
   Если ЗначениеЗаполнено(ВыбКонтрагент) Тогда
       ТекстЗапроса = ТекстЗапроса+" И РеализацияТоваровУслуг.Контрагент В ИЕРАРХИИ(&Контрагент)";
       Запрос.УстановитьПараметр("Контрагент",ВыбКонтрагент);
   КонецЕсли;
   
   Запрос.Текст = ТекстЗапроса;
   РеалДок = Запрос.Выполнить().Выгрузить();
   
   Если РеалДок = Неопределено Тогда
       Предупреждение("Нет документов в этом периуде");
   Иначе    
       Для Каждого СтрДок Из РеалДок Цикл
           Если СтрДок.Ссылка.Товары.Количество()>0 Тогда
           //    Для Каждого Стр Из СтрДок.Ссылка.Товары Цикл
           База.Добавить();    
           База.NomerD   = СтрДок.Ссылка.Номер;
           База.DataDoc  = СтрДок.Ссылка.Дата ;
           База.Firma    = СтрДок.Ссылка.Организация.Наименование ;
           База.Kontragent= СтрДок.Ссылка.Контрагент.Наименование;
       //    База.KontragentKod = СтрДок.Ссылка.Контрагент.Код;
           База.Dogovor= СтрДок.Ссылка.ДоговорКонтрагента.Наименование;
           База.DogovorKod = СтрДок.Ссылка.ДоговорКонтрагента.Код;
           База.Sklad = СтрДок.Ссылка.Склад.Наименование;
           
               Для Каждого СтрТовары Из СтрДок.Ссылка.Товары Цикл
                   База.NOM    = СтрТовары.Номенклатура.Наименование;
                   База.NOMKod = СтрТовары.Номенклатура.Код;
                   База.Cena   = СтрТовары.Цена;
                   База.Summa  = СтрТовары.Сумма;
                   База.Kolvo  = СтрТовары.Количество;
                   База.StavkaNDS = СтрТовары.СтавкаНДС;
                   База.YnId = Сред(ЗначениеВСтрокуВнутр(СтрТовары.Номенклатура),46,32);
                   База.Записать();
               КонецЦикла;
               База.Записать();
           КонецЕсли;
       КонецЦикла;
   КонецЕсли;

   База.Записать();
   База.ЗакрытьФайл();
1 informts
 
19.10.12
15:26
База.Записать(); Вроде как совсем не обязательно, после База.ЗакрытьФайл(); все запишется
2 informts
 
19.10.12
15:28
База.Поля.Добавить("NomerD","N",15,0);
3 ptiz
 
19.10.12
15:29
(0) Да всё получается, просто с кодировкой проблемы.
4 informts
 
19.10.12
15:30
русский не понимает
5 tpudl_bases
 
19.10.12
15:38
Включил :
   База = Новый XBase();
   База.Кодировка = КодировкаXBase.OEM;

отладчик говорит:
База.Кодировка    ANSI    КодировкаXBase
6 tpudl_bases
 
19.10.12
15:40
то есть так правельней:
   База.Кодировка = КодировкаТекста.OEM;

все равно рез не изменился
7 drumandbass
 
19.10.12
15:43
Создай шаблон DBF в нужной кодировке уже с полями. Открывай его и пиши данные.
8 drumandbass
 
19.10.12
15:43
(0)Предупреждение("Нет документов в этом периуде");  периоде)))))
9 tpudl_bases
 
19.10.12
15:48
(7) брат,примерчик дай пожалуста
10 tpudl_bases
 
19.10.12
16:10
апну разочек
11 ptiz
 
19.10.12
16:48
Удали существующий файл и попробуй еще раз.
12 tpudl_bases
 
19.10.12
17:03
(11)делал,тоже вариант,скорей сего потому что у меня Win-7?!
13 kimarle
 
19.10.12
17:15
(12) Вряд ли. У меня аналогичная выгрузка в вин7 исправно работает.
14 tpudl_bases
 
19.10.12
17:17
(13)покешь свой вариант
15 drumandbass
 
19.10.12
17:20
(0) вот с шаблоном я делал https://docs.google.com/open?id=0B1bHgGq9YfQ_MzRCSXpiX0lCYW8
16 drumandbass
 
19.10.12
17:25
(0) еще замечание DBF нужно открывать через DBFNavigator. Excel может глючить..
17 kimarle
 
19.10.12
17:26
(14)
   Запрос = Новый Запрос;
   Запрос.Текст = "...";
   
   ТипАдрес = Перечисления.ТипыКонтактнойИнформации.Адрес;
   ТипТелефон = Перечисления.ТипыКонтактнойИнформации.Телефон;
   ВидАдресПроживания = Справочники.ВидыКонтактнойИнформации.ФактАдресФизЛица;
   ВидАдресПрописки = Справочники.ВидыКонтактнойИнформации.ЮрАдресФизЛица;
   ВидТелефон = Справочники.ВидыКонтактнойИнформации.ТелефонДомашнийФизическиеЛица;
   СвойствоНомерКарты = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Номер карты");    
   
   Запрос.УстановитьПараметр("Ссылка", Основание);
   Запрос.УстановитьПараметр("ТипАдрес", ТипАдрес);
   Запрос.УстановитьПараметр("ТипТелефон", ТипТелефон);
   Запрос.УстановитьПараметр("ВидАдресПроживания", ВидАдресПроживания);
   Запрос.УстановитьПараметр("ВидАдресПрописки", ВидАдресПрописки);
   Запрос.УстановитьПараметр("ВидТелефон", ВидТелефон);
   Запрос.УстановитьПараметр("СвойствоНомерКарты", СвойствоНомерКарты);
   
   ф=Новый XBase;
   ф.Поля.Добавить("SUMMA",          "N", 12, 2);
   ф.Поля.Добавить("CLNT_FNAME",     "S", 35);
   ф.Поля.Добавить("CLNT_INAME",     "S", 20);
   ф.Поля.Добавить("CLNT_ONAME",     "S", 30);
   ф.Поля.Добавить("CLNT_SPAS",      "S", 10);
   ф.Поля.Добавить("CLNT_NPAS",      "S", 35);
   ф.Поля.Добавить("CLNT_DPAS",      "D");
   ф.Поля.Добавить("CLNT_PPAS",      "S", 50);
   ф.Поля.Добавить("CLNT_ADR",       "S", 100);
   ф.Поля.Добавить("BIRTHDAY",       "D");
   ф.Поля.Добавить("TAB_N",          "S", 20);
   ф.Поля.Добавить("ACC",            "S", 25);
   ф.Поля.Добавить("WORD",           "S", 32);
   ф.Поля.Добавить("PHONE",          "S", 32);
   ф.Поля.Добавить("INN",            "S", 20);
   ф.Поля.Добавить("FIL",            "S", 10);
   ф.Поля.Добавить("TRANSLIT",       "S", 19);
   ф.Поля.Добавить("ADD_INFO",       "S", 32);
   ф.Поля.Добавить("BIRTHPLACE",     "S", 32);
   ф.Поля.Добавить("PHONE_M",        "S", 32);
   ф.Поля.Добавить("PHONE_H",        "S", 32);
   ф.Поля.Добавить("PHONE_F",        "S", 32);
   ф.Поля.Добавить("CLNT_CPPAS",     "S", 10);
   ф.Поля.Добавить("CLNT_PADR",      "S", 100);
   ф.Поля.Добавить("DOC_TYPE",       "S", 10);
   ф.Поля.Добавить("CLNT_EMAIL",     "S", 100);
   ф.Кодировка=КодировкаXBase.OEM;

   ф.АвтоСохранение=Истина;
   
   ф.СоздатьФайл(ФайлВыгрузки);
   ф.ОчиститьФайл();
   Выборка = Запрос.Выполнить().Выбрать();
   
   Пока Выборка.Следующий() Цикл

       ф.Добавить();

       ф.SUMMA       = Выборка.Сумма;
       ф.CLNT_FNAME  = Выборка.Фамилия;
       ф.CLNT_INAME  = Выборка.Имя;
       ф.CLNT_ONAME  = Выборка.Отчество;
       ф.CLNT_SPAS   = Выборка.СерияПаспорта;
       ф.CLNT_NPAS   = Выборка.НомерПаспорта;
       ф.CLNT_DPAS   = Выборка.ДатаВыдачи;
       ф.CLNT_PPAS   = Выборка.КемВыдан;
       
       АдресПоПрописке = "" + Выборка.ПропискаИндекс;
       АдресПоПрописке = АдресПоПрописке + "," + Выборка.ПропискаРегион;
       АдресПоПрописке = АдресПоПрописке + "," + Выборка.ПропискаРайон;
       АдресПоПрописке = АдресПоПрописке + "," + Выборка.ПропискаГород;
       АдресПоПрописке = АдресПоПрописке + "," + Выборка.ПропискаНасПункт;
       АдресПоПрописке = АдресПоПрописке + "," + Выборка.ПропискаУлица;
       АдресПоПрописке = АдресПоПрописке + "," + Выборка.ПропискаДом;
       АдресПоПрописке = АдресПоПрописке + "," + Выборка.ПропискаКорпус;
       АдресПоПрописке = АдресПоПрописке + "," + Выборка.ПропискаКвартира;

       ф.CLNT_ADR    = АдресПоПрописке;
       ф.BIRTHDAY    = Выборка.ДатаРождения;
       ф.TAB_N       = Выборка.ТабельныйНомер;
       ф.ACC         = Выборка.НомерКарты;
       ф.WORD        = Выборка.КодовоеСлово;
       ф.PHONE       = Выборка.Телефон;
       ф.INN         = Выборка.ИНН;
       ф.FIL         = Выборка.Филиал;
       ф.TRANSLIT    = Выборка.Транслит;
       ф.ADD_INFO    = Выборка.СлужебноеПоле;
       ф.BIRTHPLACE  = Выборка.МестоРождения;
       ф.PHONE_M     = Выборка.Мобтелефон;
       ф.PHONE_H     = Выборка.ДопТелефон1;
       ф.PHONE_F     = Выборка.ДопТелефон2;
       ф.CLNT_CPPAS  = Выборка.КодПодразделения;

       АдресПроживания = "" + Выборка.ПроживаниеИндекс;
       АдресПроживания = АдресПроживания + "," + Выборка.ПроживаниеРегион;
       АдресПроживания = АдресПроживания + "," + Выборка.ПроживаниеРайон;
       АдресПроживания = АдресПроживания + "," + Выборка.ПроживаниеГород;
       АдресПроживания = АдресПроживания + "," + Выборка.ПроживаниеНасПункт;
       АдресПроживания = АдресПроживания + "," + Выборка.ПроживаниеУлица;
       АдресПроживания = АдресПроживания + "," + Выборка.ПроживаниеДом;
       АдресПроживания = АдресПроживания + "," + Выборка.ПроживаниеКорпус;
       АдресПроживания = АдресПроживания + "," + Выборка.ПроживаниеКвартира;
       
       ф.CLNT_PADR   = АдресПроживания;
       ф.DOC_TYPE    = Выборка.КодДокумента;
       ф.CLNT_EMAIL  = Выборка.ЭлПочта;
   КонецЦикла;

   ф.ЗакрытьФайл();
   Сообщить("Выгрузка данных для банка завершена:");
   Сообщить(ФайлВыгрузки);
18 tpudl_bases
 
19.10.12
17:35
(17)вот так заработало:
   База.Поля.Добавить("SummaNDS","N",15,2) ;
   База.Кодировка = КодировкаXBase.OEM;

   База.СоздатьФайл(ФайлВыгрузки);
   База.ОчиститьФайл();
19 Мимохожий Однако
 
19.10.12
18:12
База.АвтоСохранение = Истина;
Поставь второй строчкой в коде