|
Копирование 65000 строк из Excel в табличный документ | ☑ | ||
---|---|---|---|---|
0
MaiorovYury
24.05.18
✎
10:22
|
Всем доброго утра!
Если попытаться скопировать 100,000 строк из xlsx файла в табличный документ, то копируется только 65,534 строк Можно это как-то обойти? Первая мысль была - сделать чтение из Excel по кнопке через com объект Но чтение 100,000 строк в 4 колонках занимает минут 20, так что это не вариант |
|||
1
_Дайвер_
24.05.18
✎
10:26
|
(0) Всегда было интересно, что это за документы такие где овер дохрена строк в тч?
|
|||
2
PR
24.05.18
✎
10:26
|
(0) Пипец у людей проблемы
Ну так скопируй за два раза по частям |
|||
3
PR
24.05.18
✎
10:27
|
(1) Список документов в базе, например
Примеров дохрена, если честно |
|||
4
0xFFFFFF
24.05.18
✎
10:28
|
(2) видимо он делает обработку для тупого юзера, который не сможет скопировать за два раза.
|
|||
5
volfy
24.05.18
✎
10:28
|
(1) Прайсы какие нить наверное
|
|||
6
_Дайвер_
24.05.18
✎
10:31
|
Таблица значений и массив — это программные объекты, существующие только в памяти. Соответственно, их размер ограничивается количеством памяти.
|
|||
7
lodger
24.05.18
✎
10:32
|
(0) "как-то обойти" - да, но в неумелых руках это превращается в "занимает минут 20"
|
|||
8
_Дайвер_
24.05.18
✎
10:32
|
ак, максимально допустимое количество строк табличной части объектов, хранимых в базе данных (например, документов), составляет 99 999. Разработчики платформы объясняют это ограничение тем, что оно введено из соображений производительности и объемов используемой памяти — табличная часть и набор записей являются гранулой манипулирования данными соответствующих таблиц, поэтому использование очень больших объемов в одной табличной части или наборе записей может привести к существенным технологическим проблемам прикладного решения. И экономия длины записи не являлась определяющим критерием.
|
|||
9
craxx
24.05.18
✎
10:33
|
(5) в прайсах запчастей (например Тойоты) бывает и более миллиона позиций.
|
|||
10
dezss
24.05.18
✎
10:34
|
кастую Маню в тему)
|
|||
11
aka MIK
24.05.18
✎
10:34
|
||||
12
Maniac
24.05.18
✎
10:36
|
(0) у меня 100 000 загружается в 1С
а) полное чтение экселя б) полная синхронизация со справочником в) создание регистрации цен 37 СЕКУНД ВСЕ ВМЕСТЕ |
|||
13
Cool_Profi
24.05.18
✎
10:36
|
Поставь ексель 2007 и выше
|
|||
14
aka MIK
24.05.18
✎
10:36
|
(0) http://catalog.mista.ru/public/163640/ грузит практически мгновенно
|
|||
15
Mort
24.05.18
✎
10:40
|
(0) А что потом делать с этим табличным документом?
|
|||
16
Maniac
24.05.18
✎
10:41
|
(14) ком объекты. тьфу. на клиент-серверных базах будут проблемы.
|
|||
18
MaiorovYury
24.05.18
✎
10:44
|
У меня это загрузка коэффициентов для 200,000 городов для доставки
Потом оттуда оно заливается в регистр сведений Если заполнить данные в табличном документе потом уже минут за 5 оно все копируется |
|||
19
MaiorovYury
24.05.18
✎
10:46
|
(2), (4) а вы пытались скопировать два раза?
У меня на 8.3.12.1412 даже за два раза не копируется Если копируешь вторые 65к строк 1с почему-то вставляет одну строку, причем одну рандомную строку!))) |
|||
20
MaiorovYury
24.05.18
✎
10:48
|
(13) у меня Excel 2016 так что тут не в Excel проблема, а в 1с
|
|||
21
MaiorovYury
24.05.18
✎
10:48
|
(14) спасибо! Посмотрю
|
|||
22
_stay true_
24.05.18
✎
11:08
|
(0) В относительно свежих релизах платформы добавили чтение экселек средствами платформы.
ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение); Построитель = Новый ПостроительЗапроса; ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьМакета); Построитель.ИсточникДанных = ИсточникДанных; Построитель.Выполнить(); ТабЗначений = Построитель.Результат.Выгрузить(); |
|||
23
Maniac
24.05.18
✎
11:09
|
Чувак ДАРЮ тебе секрет.
1) Делаешь в форме обработки поле табличный документ. 2) Открываешь свой ФАЙЛ в экселе 3) Копируешь ВСЕ 4) в 1С становишся в табличный документ 5) ВСТАВИТЬ выаля - весь твой экселевский файл со всеми данными мигом в 1С в табличном документе, который можно считать за доли секунд. Плюсы а) Ни капли кода по какому то чтению экселей б) Скорость в) Работать будет на любой клиент-серверной базе, даже если сервер линукс и прочее. |
|||
24
Maniac
24.05.18
✎
11:10
|
(22) фигня.
а) не сможет прочитать много форматов экселя б) не работает с книгами и множеством листов |
|||
25
_stay true_
24.05.18
✎
11:12
|
(24) В 8.3.14 добавят)))
У меня пока проблем не возникало с форматами и прочим, работает быстрее комки. |
|||
26
MaiorovYury
24.05.18
✎
11:12
|
(23) я так изначально и делал, и как раз у меня копируется 65534 строк - не больше
Точно у вас работает с 65+к строк? |
|||
27
Maniac
24.05.18
✎
11:12
|
вышли мне файл
[email protected] |
|||
28
MaiorovYury
24.05.18
✎
11:21
|
(27) отправил
Но специально попробовал сделать файл с нуля Добавил туда 70к строк и все равно не копируется |
|||
29
ptiz
24.05.18
✎
11:25
|
(0) " чтение 100,000 строк в 4 колонках занимает минут 20" - ты обходом ячеек, что-ли, читаешь?
Функция ЗагрузитьФайлExcelВМассив(ИмяФайла, ТекстОшибок = "") Экспорт // Пытаемся создать новый объект Попытка Excel = Новый COMОбъект("Excel.Application"); Исключение ТекстОшибок = "Ошибка при попытке создать COMОбъект ""Excel.Application"": " + Символы.ПС + ОписаниеОшибки(); ОбщегоНазначения.СообщитьОбОшибке(ТекстОшибок); Возврат Неопределено; КонецПопытки; // Пытаемся открыть рабочую книгу Попытка Excel.Application.Workbooks.Open(ИмяФайла); Исключение Excel.Quit(); ТекстОшибок = "Ошибка при попытке открыть рабочую книгу файла: " + ИмяФайла + Символы.ПС + ОписаниеОшибки(); ОбщегоНазначения.СообщитьОбОшибке(ТекстОшибок); Возврат Неопределено; КонецПопытки; Попытка Данные = Excel.ActiveSheet.UsedRange.Value.Выгрузить(); Исключение Excel.Quit(); ТекстОшибок = "Ошибка при получении данных: " + Символы.ПС + ОписаниеОшибки(); ОбщегоНазначения.СообщитьОбОшибке(ТекстОшибок); Возврат Неопределено; КонецПопытки; Попытка Excel.ActiveWorkbook.Close(0); Excel.Quit(); Исключение КонецПопытки; Возврат Данные; КонецФункции |
|||
30
dezss
24.05.18
✎
11:25
|
(26) этот момент настал...
назови конфу, клиент-серверная она или файловая. |
|||
31
Maniac
24.05.18
✎
11:27
|
Только что вставил - все вставилось.
все 70121 строк |
|||
32
Maniac
24.05.18
✎
11:28
|
(29) в топку. Требует наличия экселя.
Не будет или очень криво будет работать с книгами. |
|||
33
dezss
24.05.18
✎
11:28
|
Я вот помню, что в рознице не получалось создать документ больше 65к строк...это Розница 1 и база файловая.
Сильно разбираться не стал, просто забил |
|||
34
Maniac
24.05.18
✎
11:28
|
я как то и 250 000 вставлял в табличное поле.
|
|||
35
Maniac
24.05.18
✎
11:30
|
(33) вообще то в 1С - 99 999 строк в табличных частях.
Но даже не смотря на это можно впихнуть и больше. Просто номера строк будут идти все 99 999 И это может сказаться на скорости проведения документов ну и не дай бог если где то номер строки в запросах учавствует |
|||
36
dezss
24.05.18
✎
11:31
|
(35) на ут 10.3 клиент-серверноей действительно было 99 999, а вот на файловой рознице было около 65к. Вот точно помню это.
|
|||
37
Maniac
24.05.18
✎
11:31
|
Итого вставка в табличное поле занимает 6-7 секунд.
Размер присланного мне файла 70121 строка |
|||
38
MaiorovYury
24.05.18
✎
11:32
|
(31) сейчас заметил, что у меня 32-разрядный excel
Может в этом дело? У вас 64х ? |
|||
39
Maniac
24.05.18
✎
11:33
|
У меня вообще опенофис
|
|||
40
Maniac
24.05.18
✎
11:34
|
Моей загрузкой твой файл в 70 000 загружается в 1С за 1 СЕКУНДУ!
|
|||
41
Вафель
24.05.18
✎
11:35
|
(23) копипаст не обязательно делать. табличный документ умеет читать ексель
|
|||
42
Maniac
24.05.18
✎
11:36
|
(41) если сможет. он не все форматы читает.
но если всего 1 файл надо постоянно грузить и он будет читаться то да. конечно же стоит сделать код. чем постоянно клацать |
|||
43
MaiorovYury
24.05.18
✎
11:37
|
Ааааааа
Чуваки Я скопировал в блокнот, скопировал из блокнота в 1с - все вставилось за пару секунд!!! |
|||
44
Maniac
24.05.18
✎
11:38
|
(43) ну дык я тоде удивился с самого начала. в 1С нет ограничений у табличного поля по размеру строк
|
|||
45
MaiorovYury
24.05.18
✎
11:38
|
То есть открыл excel, скопировал 200к строк, вставил их в блокнот - туда вставились все строки, скопировал данные в блокнтое - вставил в 1с
И все! Работает! |
|||
46
Aleksey
24.05.18
✎
11:40
|
1с вообще как то странно работает с екселем при копировании через буфер в табличный документ. Иногда данные портит.
|
|||
47
trdm
24.05.18
✎
11:41
|
(0) > Можно это как-то обойти?
Если надо машинно обрабатывать xlsx, то можно парсить его вручную. Там внутри xml. |
|||
48
MaiorovYury
24.05.18
✎
11:42
|
Я кажись понял в чем тут дело
Если копировать в таб док через "специальная вставка" там есть 3 варианта Текст Текст в формате юникод Формат Microsoft Excel 97 - 2003 Видимо по умолчанию используется формат excel 2003, а там ограничение в 65к строк Если использовать первый или второй вариант, то все копируется Загадка раскрыта) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |