sqlite3_mod_csv
С csv можно работать и штатными способами 1c.
Но что случится если файл неприлично огромен? Ничего хорошего не будет...
Что делать если требуется не весь файл, а только какая то его часть по условию? Это тоже возможно, но... медленно...
А как насчет чтобы просто "select name from csv where code = 16"? Хочется? Попробуйте расширение sqlite3_mod_csv!
Оно сделано на основании модуля csv из http://www.ch-werner.de/sqliteodbc
Сделано/изменено следующее:
- добавлены перекодировки текста из CP_OEMCP и CP_ACP;
- расширены флаги обработки файла;
- расширен и упрощен режим установки заголовков колонок;
- сделан пример для 1С 7.7 чтения файла csv с использованием 1sqlite с подключенным модулем csv и отображения результата в ТабличноеПоле 1c++ через Поставщик данных SQLiteDataProvider в двух вариантах: прямое отображение файла csv и отображение через конвертацию файла csv в файл sqlite3, конвертация производится средствами sqlite3 с подключенным модулем;
Подключение расширения:
SELECT load_extension("sqlite3_mod_csv","sqlite3_extension_init");
Подключение файла csv:
CREATE VIRTUAL TABLE temp.csv USING csvfile(ИмяФайла,ФлагиОбработки,Кодировка,Разделители,ОграничителиСтроки,ОпределенияКолонок[*]);
Параметры подключения:
ИмяФайла:
в формате windows
ФлагиОбработки:
0 0x0000 - в файле нет заголовка
- имена колонок автоматически c1,c2,c3
- в определении колонок только типизация
1 0x0001 - в файле есть заголовок и он не будет выведен в таблицу
2 0x0010 - имена колонок из заголовка, если он есть
4 0x0100 - в определении колонок имя и тип по очереди
Кодировка:
1 - CP_ACP
2 - CP_OEMCP
3 - CP_UTF8
прочие значения - CP_UTF8
Разделители:
разделитель, по-умолчанию ";"
ОграничителиСтроки:
с этим я не очень разбирался, отрезает правую часть строки после второго появления разделителя
ОпределенияКолонок:
либо только типы, либо имена и типы по очереди в зависимости от флага обработки
т.е. либо text,int,text,text либо col1,int,mycol2,text
Пример подключения журнала работы 1С 7.7:
CREATE VIRTUAL TABLE temp.csv USING csvfile(каталог+'1cv7.mlg',0,1);
Пример работы в обработке sqlite3_mod_csv.ert (она вложена в архив).
Требования к обработке:
1С++, formex, 1sqlite с поддержкой загрузки расширений //infostart.ru/public/559826/
P.S. Если на каком то файле csv 1С будет вылетать или виснуть, присылайте его мне вместе со строкой подключения.