|
v7: DBF-файлы | ☑ | ||
---|---|---|---|---|
0
Christina_
20.08.12
✎
23:07
|
Была обработка, которая из ексель файла загружала в тз значения, потом из тз в обычную таблицу. Ексель- файлы очень большие и грузятся долго... Сделала ексель ДБФ файлом... с дбф еще не работала никогда...сп почитала.. не могу разобраться, как мне с него теперь читать.. мне нужно из таблицы этого дбф файла случайнм образом выбрать значения...
Буду рада любым разумным советам. Спасибо заранее. |
|||
1
Злопчинский
20.08.12
✎
23:10
|
1. выбирай по порядку. - это одна из реализаций случая случайного выбора.
2. читай эксель йокселем - читается сразу в ТЗ и быстро. |
|||
2
zladenuw
20.08.12
✎
23:11
|
а как читала с йкселя и как хочешь с дбф ?
Книга знаний: DBF-файлы (XBase) v8: загрузка и чтение DBF в 1С |
|||
3
zladenuw
20.08.12
✎
23:12
|
и поповоду йкселя
Процедура Загрузить() Экспорт ExcelФайл = ПолучитьCOMОбъект(мВыбФайл); Состояние("Обработка файла Microsoft Excel..."); // Читаем данные первого листа книги Попытка ExcelЛист = ExcelФайл.Sheets(1); Исключение Предупреждение("Файл открыт, закройте его!!!",,"ОШИБКА"); Возврат; КонецПопытки; // RowCount = 6500; ВсегоКолонок = 3; НомерПервойКолонки = 1; // СоздатьТЧДанных(); //Обратаем всю область данных Область = ExcelЛист.Range(ExcelЛист.Cells(1,НомерПервойКолонки), ExcelЛист.Cells(RowCount,ВсегоКолонок)); Данные = Область.Value.Выгрузить(); //Создание пустых строк по RowCount Для Счетчик = 1 По RowCount Цикл НоваяСтрока = ТЧДанных.Добавить(); КонецЦикла; //Заполнение Тч данными Для Счетчик = 0 По ВсегоКолонок-1 Цикл ТЧДанных.ЗагрузитьКолонку(Данные[Счетчик], "Колонка"+Счетчик); КонецЦикла; Создать(); ExcelФайл.Close(); КонецПроцедуры //------------------------------ Процедура СоздатьТЧДанных() // Создание описателя типов для таблицы значений //КЧ = Новый КвалификаторыЧисла(15,2); КС = Новый КвалификаторыСтроки(50); Массив = Новый Массив; Массив.Добавить(Тип("Строка")); ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС); //Массив.Очистить(); //Массив.Добавить(Тип("Число")); //ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ); // Очистить предыдущие значения ТЧДанных.Очистить(); ТЧДанных.Колонки.Очистить(); // Создать колонки табличного документа ТЧДанных.Колонки.Добавить("Колонка0",ОписаниеТиповС,"Х"); ТЧДанных.Колонки.Добавить("Колонка1",ОписаниеТиповС,"ХХ"); ТЧДанных.Колонки.Добавить("Колонка2",ОписаниеТиповС,"ХХX"); //ТЧДанных.Колонки.Добавить("Колонка3",ОписаниеТиповС,"ХXXX"); //ТЧДанных.Колонки.Добавить("Колонка4",ОписаниеТиповС,"Норматив"); //ТЧДанных.Колонки.Добавить("Колонка5",ОписаниеТиповС,"Х"); //ТЧДанных.Колонки.Добавить("Колонка6",ОписаниеТиповС,"Кво"); КонецПроцедуры |
|||
4
Конфигуратор1с
20.08.12
✎
23:14
|
Блин, то то неделю дожди льют - на мисте с ходу человеку помогают
|
|||
5
Конфигуратор1с
20.08.12
✎
23:14
|
(3)человек 7шник судя по секции
|
|||
6
zladenuw
20.08.12
✎
23:15
|
так примеры. или мне все с гугля копировать ? :)
|
|||
7
Конфигуратор1с
20.08.12
✎
23:16
|
(6)так человек гуглем не умеет
|
|||
8
Злопчинский
20.08.12
✎
23:18
|
(6) ой блин.. ща.. залезу в какой-нить свой отчет
|
|||
9
Злопчинский
20.08.12
✎
23:18
|
а лучше скачать демоконфигу по йокселю - там все есть
|
|||
10
Злопчинский
20.08.12
✎
23:20
|
//******************************************************************************
// Процедура ЗагрузитьДанные() Если ПустоеЗначение(ВыбФайл) = 1 Тогда Предупреждение("Не выбран файл с артикулами!! ",10); Возврат; КонецЕсли; Если ФС.СуществуетФайл(СокрЛП(ВыбФайл)) = 0 Тогда Предупреждение("Указанный файл |<"+ВыбФайл+"> не существует! ",30); Возврат; КонецЕсли; ОчиститьОкноСообщений(); //Сообщить(ТекущееВремя()+": чтение данных из файла: "+СокрЛП(ВыбФайл)); ВыбТипФайла = 2; //эксель всегда ВыбСжиматьКартинки = 1; Таб = СоздатьОбъект ("ТабличныйДокумент"); Попытка Таб.Открыть (ВыбФайл, ВыбТипФайла, ВыбСжиматьКартинки); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; //Сообщить(ТекущееВремя()+": чтение артикулов из файла"); Форма.ТЗЭксель.Видимость(0); ТЗ = СоздатьОбъект("ТаблицаЗначений"); Конвертер = СоздатьОбъект("Йоксель.КонвертерВТаблицуЗначений"); Конвертер.УстановитьДокумент(Таб); Конвертер.ОпределятьСтруктуру = 0; Конвертер.ПроверятьСтруктуру = 0; Конвертер.СтрокДляОпределенияСтруктуры = 50; Попытка ТЗ = Конвертер.Загрузить(); Исключение Сообщить("ОШИБКА: "+ОписаниеОшибки()); Возврат; КонецПопытки; |
|||
11
zladenuw
20.08.12
✎
23:21
|
(10) круть. а именно Конвертер = СоздатьОбъект("Йоксель.КонвертерВТаблицуЗначений");
Так и пишем "Йоксель"? :) |
|||
12
zladenuw
20.08.12
✎
23:22
|
(9) а можно ссылочку
|
|||
13
Злопчинский
20.08.12
✎
23:27
|
(11) нет, блин, это я специально херню напис ал чтобы над тобой поглумиться
|
|||
14
Злопчинский
20.08.12
✎
23:27
|
||||
15
Злопчинский
20.08.12
✎
23:28
|
подключи ДЛЛre и код в (10) будет работать
|
|||
16
Christina_
21.08.12
✎
00:33
|
всем спасибо))
|
|||
17
Злопчинский
21.08.12
✎
00:33
|
(16) работает?!
|
|||
18
zladenuw
21.08.12
✎
00:49
|
(13) я уточнял. мало ли что.
|
|||
19
Ёпрст
21.08.12
✎
09:25
|
(0) эксель читай через АДО, дбф через фоксовый провайдер.. будет не быстро, а очень быстро. Объем роли не играет
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |