#2
by Prilepsky
Записать, допустим, в табличную часть документа или перебрать и по каждой строке сделать запись в регистре сведений.
#5
by Prilepsky
Проблема, что перебором строк - очень долго. Пробовал через АДО но видимо где-то накосячил и у меня грузилось только первые 4000 строк. Периодически придется загружать подобные массивы. Если это было разовая операция, я бы и часик подождал , пока построчно все переберется =)
#6
by big
Файлы 2-4 Гб (большего размера просто не было ещё) прекрасно обрабатываются перебором строк. Причём не важно снеговик это или клюшки.
#7
by МихаилМ
как раз для этого (обработка рекордсетов адо ) первоначально и создавался энтерпрайз интегратор
#9
by Prilepsky
А вот такой код с АДО: Возвращает таблицу с 3 тысячами строк (И понятие не имею, почему так)
#10
by big
Я через FileSystemObject делаю. Как вариант - м.б. в строке недопустимые для АДО символы есть? Бывает, что в текстовый реквизит скопипастят вместе с текстом ПС+ВК и выборка сбивается
#11
by Prilepsky
Файл генерируется автоматически, поэтому навряд ли именно на этой строке какой-то символ вылезает..
#15
by big
Да ладно - медленнее. :) На старом П-4 файл 4 Гб разбирается в течение 40-50 минут. Причем посимвольно строка перебирается.
#16
by Prilepsky
Точно такой же код у тебя разбирает 4 гб за 40-50 минут? Ппц, у меня этот код разбирает 33 мб столько же... А комп не из слабых.
#18
by kosts
Думаю этот код изначально неподходящий для больших файлов. Вот глянь: ЧтениеТекста (TextReader) Методы: Конструкторы: По имени файла Формирование неинициализированного объекта Описание: Предназначен для последовательного чтения текстовых файлов (большой длины). Доступность: Тонкий клиент, сервер, толстый клиент, внешнее соединение. Пример: См. также: ЗаписьТекста ЧтениеТекста, конструктор По имени файла
#19
by Prilepsky
Вроде бы быстрей... Сейчас разбираться будет, минут 20. Можно еще как-нибудь ускорить ? А то все равно в отношение 33мб к 4гб - это не круто
#21
by Prilepsky
В том то и дело, я не разбираю строку. Тупо перебираю и вывожу состояние (номер текущей строки). Мне сейчас нужно найти метод, который быстрей всего будет перебирать все строки, а уже потом буду разбирать.
#24
by kosts
Ну основные тормоза будут именно при разборе строки, т.к. это выполняется на встроенном языке
#28
by rutony
Я юзаю что то похожее, но без контроля данных... 100 000+ строк, 10+ колонок, обрабатывается за 1-2 минуты... Правда винт SSD... На обычном около 10-15 минут...
#29
by Serginio1
Ну засосать то в память 100 000 строк это не проблема. У меня таким макаром и по 300 000. Вместе с записью в базу меньше 10 минут. У тебя скорее всего упирается в запись
#30
by Serginio1
Ты состояние выводи через 10000 (Если НомерСтроки % 10000=0 тогда), а то у тебя все время на вывод состояния уходит.
#31
by Prilepsky
у тебя код из за 10 минут записывает в базу 300 000 строк ? В функцию ИзСтрокиСРазделителями передается S-строка, Delimiter="," - разделитель, QuoteChar="""" - как цитаты выделены? А какой функцией сами строки читаешь ?
#32
by Serginio1
По разному. Но насчет 300 000 эт простой ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок. Чере ТабличныйДокумент или чтениеФайла. Второе предпочтительнее. Ав большинстве случаев если файл нормальный гружу его пярмым булк запросом в SQL. У меня пока 13 версия, а в 14 можно вроде и внешние текстовые источники исользовать.
#33
by Serginio1
QuoteChar="""" это разделитель строк. Если в строке будет кавычка то она экранируется кавычкой нпример ЭтоТекст"СкавычкойИ,запятой будет выглядеть как "ЭтоТекст""СкавычкойИ,запятой"
#34
by VVi3ard
Сколько у тебя по времени выполняется данный цикл? Должен не больше 2-3 минут, я выгружал недавно в файлы по 3-4 миллиона строк и затем через SQL BulkInsert вставлял их в таблицу на это уходит примерно 15 минут. И это еще с Форматом полей.
#35
by Serginio1
Обчно хватает табуляции и ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок. Но нужно следить что бы в строке не было табуляторов
#37
by Serginio1
Все зависит от количества идексов и железа. У меня запись с объединением в темп таблицу миллионную таблицу уходит около минуты. Точно не замерял так как у меня еще присутствует Merge
#38
by Prilepsky
В общем, все читает быстро, если не писать "Состояние("Текущая строка "+n);" =) Буду копать дальше. Всем спасибо!
#40
by VVi3ard
:) Что и требовалось доказать. Чтобы все было корректно вычисляй шаг равный 1% и каждый процент выводи состояние и все будет отлично.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Единицы измерения в заказе покупателя
- Подключение фискального регистратора в УТ 10.3
- 1С 8,2 - УТ 10.3 - запрет доступа к исходящим платёжкам
- Презентация УТ11 существует в природе?
- Чем можно прочитать файлы дампов MDMP?
- Файл .mdb как Внешние источники данных
- Проводка 62.01- 76.05
- v7: Сканирование документов
- Управляемая форма. отображение элементов
- Обмен данными 1С:Документооборот ПРОФ и 1С:Бухгалтерия 2.0 ПРОФ
- При обновлении базы Runtime Error
- 1с упп не могу найти путь к внешней обработке, в сервисе в доп.отч и обр
- v7: Как получить реквизит - ссылку на справочник?
- EDI провайдеры
- УПП отчет по постоянным и временным разницам
- функция ПредставлениеПериода()
- На что заменить в коде ЗначениеЗаполнено(глТекущийПользователь)?
- Как убрать сообщение "Не удалось провести документ"
- Как лучше "урезонить" вентилятор в блоке питания - дискретно или плавно ?
- v8: СКД: Начальный остаток и обороты в одной колонке