helpf.pro
Регистрация

v8: Выгрузить с dbf в txt

Ermak
25.11.2013 16:13Прочитано: 3641
Подскажите какую нибудь обработку чтобы с dbf выгрузить в txt или можно с dbf в ТП а потом уже в txt
Yandex
Возможно, вас также заинтересует
Реклама на портале
Ermak
25.11.2013 17:18Ответ № 1
Я сделал чтобы выгрузка шла в ТП, как создать свои колонки и сделать в них выгрузку не всех колонок DBF а только которые мне нужно. Я потом их выгружать буду в TXT.

Код 1C v 8.х
  
ФайлДБФ = Новый XBASE;
ФайлДБФ.Кодировка = КодировкаXBase.OEM;
ФайлДБФ.ОткрытьФайл(ИмяФайла);

КолСтрДБФ = ФайлДБФ.КоличествоЗаписей(); //Количество строк записей
КолКолДБФ = ФайлДБФ.поля.Количество(); //Количество столбцов


//Работаем с индикатором
ИндикаторВсего = КолСтрДБФ;
ИндикаторШаг = 1;
ИндикаторЗначение = 0;
//Работаем с индикатор
ЭлементыФормы.ИндикаторДействия.Видимость = Истина;
ЭлементыФормы.ИндикаторДействия.МаксимальноеЗначение = КолСтрДБФ;
ЭлементыФормы.ИндикаторДействия.Значение = 0;

Для стрДБФ = 0 По КолКолДБФ-1 Цикл
ТекстШапкиКолонки = Строка(ФайлДБФ.поля.Получить(стрДБФ).Имя);
ТабПоле.Колонки.Добавить( "Колонка"+стрДБФ, ,ТекстШапкиКолонки);
КонецЦикла;
ЭлементыФормы.ТабПоле.СоздатьКолонки();
//
ФайлДБФ.Первая();
Пока НЕ ФайлДБФ.ВКонце() Цикл
НовСтрокаТП = ТабПоле.Добавить();
Для стрДБФ = 0 По КолКолДБФ-1 Цикл
СтрокаДБФкол = ФайлДБФ.ПолучитьЗначениеПоля(стрДБФ); //Здесь можно обрабатывать значения колонок построчно
НовСтрокаТП.Установить(стрДБФ, СтрокаДБФкол);
КонецЦикла;
ФайлДБФ.Следующая();
//Работаем с индикатор
ЭлементыФормы.ИндикаторДействия.Значение = ЭлементыФормы.ИндикаторДействия.Значение+1;
КонецЦикла;
//
ФайлДБФ.ЗакрытьФайл();
//Работаем с индикатор
ЭлементыФормы.ИндикаторДействия.Значение = 100;
ЭлементыФормы.ИндикаторДействия.Видимость = Ложь;
//
Jonsony
25.11.2013 18:14Ответ № 2
(1) Ermak, а какой он тормозной этот индикатор :-))

а что за дбф? может просто в экселе открыть и сохранить в тхт?
Ermak
26.11.2013 08:47Ответ № 3
нет, нужно в дбф.
а какой лучше индикатор?
Jonsony
26.11.2013 09:32Ответ № 4
(3) Ermak, у тебя условие в шапке из dbf в txt

и если тебе в итоге нужен тхт, то зачем тебе промежуточный посредник?
Ermak
26.11.2013 12:01Ответ № 5
я предположил что можно через ТП сделать если вы это имеете посредник. Подскажите примером как тогда быть чтобы дбф в ТХТ
Ermak
26.11.2013 16:27Ответ № 6
Подскажите почему выводит только последнюю строку?
Код 1C v 8.х
 	ФайлДБФ = Новый XBASE;
ФайлДБФ.Кодировка = КодировкаXBase.OEM;
ФайлДБФ.ОткрытьФайл(ИмяФайла);
ФайлДБФ.Первая();
Пока НЕ ФайлДБФ.ВКонце() Цикл
ЛС = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("LSHET"));
ФАМ = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("FAM1"));
Текст1 = Новый ТекстовыйДокумент;
Текст1.ДобавитьСтроку(ЛС + ";" + ФАМ);
ФайлДБФ.Следующая();
КонецЦикла;
ФайлДБФ.ЗакрытьФайл();
Текст1.Записать(Файл);
DJ_Serega
26.11.2013 19:18Ответ № 7
Попробуй
Код 1C v 8.х
 Пока ФайлДБФ.Следующая()  Цикл   
Ermak
26.11.2013 22:21Ответ № 8
Я делаю так

Код 1C v 8.х
     СЧ = СокрЛП(ФайлДБФ.ПолучитьЗначениеПоля("LASTCNTIND"));
СЧФ = Формат(СЧ, "ЧГ=0; ЧДЦ=4; ЧРД='.'");
Сообщить (СЧФ);


Выводит без точки и без символов после точки, почему?
Ermak
26.11.2013 22:25Ответ № 9
Все разобрался
Ermak
26.11.2013 22:37Ответ № 10
Подскажите, есть три столбца ФАМ, ИМЯ, ОТЧ , вывести можно так
Сообщить(ФАМ+ИМЯ+ОТЧ);
А как можно объединить чтобы выводить в одну колонку, чтобы потом вывести
Сообщить (ФИО);
Jonsony
27.11.2013 10:32Ответ № 11
(10) Ermak,
Код 1C v 8.2 УП
 ТекстФИО ="";
.......
ТекстФИО=ТекстФИО+ФАМ+" "+ИМЯ+" "+ОТЧ;
Сообщить(ТекстФИО);
LTrigubovich
27.11.2013 15:14Ответ № 12
А последнюю строчку выводил потому, что у тебя было написано:
Пока НЕ ФайлДБФ.ВКонце() Цикл
. . .
Текст1 = Новый ТекстовыйДокумент;
Текст1.ДобавитьСтроку(ЛС + ";" + ФАМ);
ФайлДБФ.Следующая();
КонецЦикла

То есть ты для каждой записи DBF создавал НОВЫЙ текстовый документ и заносил в него одну строку, но не сохранял!

Поэтому после обработки последней записи и выхода из цикла в твоем документе и была одна строка с ее содержимым!
Надо было как-то так делать:

Текст1 = Новый ТекстовыйДокумент;
Пока НЕ ФайлДБФ.ВКонце() Цикл
Текст1.ДобавитьСтроку(ЛС + ";" + ФАМ);
ФайлДБФ.Следующая();
КонецЦикла;
. . .
Ermak
29.11.2013 12:42Ответ № 13
Не понимаю как сделать, я делаю вот так но не работает

Код 1C v 8.х
 САЛ = ФайлДБФ.ПолучитьЗначениеПоля("SALDO");
САЛФ = Формат(САЛ, "ЧРД='.'");
Если САЛФ = "0" Тогда
ПР = "0";
Иначе
КонецЕсли;
Сообщить (ПР);


Мне нужно если значение колонки САЛ = 0 чтобы выводила 0.00 , почему то не выводит, а если значение равно 4,10 то выводил 4.10, все нормально. Подскажите как мне исправить
DJ_Serega
29.11.2013 15:42Ответ № 14
(13) Ermak, В формат добавь еще длину числа и количество знаков после зпт.
Подсказка: Для редактирования своего ответа щелкните по значку (справа)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.