Имя: Пароль:
1C
1С v8
Загрузка 120 тыс строк из Эксель 30 минут - это нормально?
0 palpetrovich
 
13.07.21
17:40
Файл - 2 колонки, железо - ну очень приличное, загрузка - "Длительные операции" из БСП
35 Злопчинский
 
13.07.21
20:57
Подбор/сопоставление - это отдельная хрень, к загрузке из экселя не относится. из экселя максимально быстро прочитать - первая задача... остальное уже зависит от искусности кодера.
36 ДедМорроз
 
13.07.21
21:00
Если буфер позволяет,всю страницу excel можно прочитать в массив за один раз.
И 120 тыс,это немного.
37 bolder
 
14.07.21
06:15
30 минут это для чтения много.Примерно10 на не сильном железе 5-10 летней давности.
(31) Это совет для 7.7.Актуально (24).
(35) Это ещё быстрее чем чтение,конечно(24)эффективно.
38 Адинэснег
 
14.07.21
06:36
(0) загрузи в табдок и работай с ним, если платформа старая - суй в макет обработки.
и померь производительность, какая строка жрет время
39 Kassern
 
14.07.21
09:08
(36) можно и в тз запихнуть, а потом ее пихнуть во временную таблицу и запросом сопоставить с данными базы.
40 trad
 
14.07.21
09:18
(39) коллега из (36) не про это, а про то, что если дергать ексель поячейчно, т.е. для каждой cell вызывать value - это долго.
Нужно брать целый range и его value - будет массив. И перебирать уже массив
41 nodrama
 
14.07.21
09:30
(0) Ну я так понимаю, что еще зависит от "компа" так сказать.
42 Kassern
 
14.07.21
09:32
(40) эксель сейчас да, легко через табдок читается, не надо ком соединение мучить. В любом случае, полученную таблицу в 1с будет быстрее через запрос привязать к данным базы, чем в цикле проверять по коду.
43 trad
 
14.07.21
09:36
(42) (не ком соединение, а ком объект)
Зависит от задачи - как лучше, через табдок и через комобъект. Есть разница если, например, типы значений ячеек важны.
44 NorthWind
 
14.07.21
09:36
(0) на этот вопрос можете ответить только вы у себя на рабочем месте. Я считаю, в принципе, любое время нормальным, если юзеры готовы его терпеть и если процесс не отнимает время у других задач. Хоть два часа. Если же конкретно вам конкретно в вашем процессе оно неприемлемо - тогда предпринимайте шаги к уменьшению.
45 NorthWind
 
14.07.21
09:37
для работы с экселем есть масса вариантов работы - попроще и помедленнее, либо посложнее и побыстрее. Всегда можно что-то соптимизировать.
46 Kassern
 
14.07.21
09:48
(43) ага COMОбъект, я про него и имел в виду. От задачи конечно зависит, но в общем случае таб док универсальней и удобней. Во первых не проблем с разрядностью, DCOM, правах, папках и ветке рееста, которые ексель почему то не создал. В общем, кто первый раз сталкивается с такими проблемами, час и более точно убьет, чтобы COMОбъект корректно заработал. Так же зависшие задачи екселя в диспетчере, когда 1ска к примеру завершилась аварийно, либо обработка чтения.
47 Maniac
 
14.07.21
10:18
Мегалайт - Загрузка в 1С от А до Я.

Грузит файлы по 100 000 строк менее чем за 10 секунд.
Полная синхронизация 8 секунд.

https://subsystems.ru/solutions/1c_excel/zagruzka_praysov_v_1s_iz_excel_csv_txt/
48 Garykom
 
гуру
14.07.21
10:24
(47) давно тебя что то не было видно
49 Kassern
 
14.07.21
10:25
(47) а если не загрузит за 10 сек, вернете деньги?))
50 Maniac
 
14.07.21
10:28
(49) а ты купишь для этого нормальное железо? А не хлам 10 летней давности)
Хотя даже на хламе результат будет вменяемым. На полную загрузку 1 минута.
51 Maniac
 
14.07.21
10:31
Загрузка в 1С 8.3 прайса 100 000 товаров! 1 минута (с записью цен в 1С)
https://www.youtube.com/watch?v=-gMhJkM4yDU

Показываю реальный прайс и загрузку.
На видео старое видео и старая версия 2017 года.
52 lodger
 
14.07.21
10:34
(0) Загрузка 120 тыс строк из Эксель 30 минут - это не нормально.
есть множество способов и трюков для быстрого чтения Экселя.
манька умеет - (51)
53 Kassern
 
14.07.21
10:36
(50) зачем мне это? Тогда уже и говорите при каком железе, формате источника и параметров приемника у вас такая скорость. А так мол 10 сек 100000 строк это ни о чем, вот и все, что я хотел сказать.
54 Kassern
 
14.07.21
10:36
(50) у меня с железом проблем нет и с загрузкой больших таблиц тоже)
55 Maniac
 
14.07.21
10:38
Дам подсказку. Чтение экселя полностью зависит от проца. Причем пофиг ксеон или что - 1С однопоточная прога и использует 1 ядро.
Начхать какая там нагрузка в диспетчере.

Проц должен быть с частотой минимум 3.5 и то это так себе.
Нормально может работать с 4.5 и выше.

У меня используется не стандарт. В моей обработке файл перекачивается на наш веб-сервис, где под линуксом на специальной библиотеке на питоне считывается эксель со скоростью звука и возвращает клиенту готовые таблицы (если многолистововй) сразу в формате 1С.
56 Maniac
 
14.07.21
10:39
По стандарту добавлю - плюс обязательно 64 разрядная система, 1С.
Помимо проца естественно нормальная оперативка.

Это то что я хотел сказать по загрузке таких обьемов. если нужно постоянно что то лить в таких обьемах.
57 Злопчинский
 
14.07.21
10:40
(43) угу, через табдок - что будет в итоге прочитано - value или text ...?
58 acht
 
14.07.21
10:42
(57) <СпособЧтенияЗначений> (необязательный)
Тип: СпособЧтенияЗначенийТабличногоДокумента.

Определяет, каким образом нужно интерпретировать значения, считываемые из исходного документа
XLS, XLSX или ODS.

При загрузке табличного документа из формата Excel 97 - 2010 и OpenOffice Calc, в случае если в ячейке исходного документа содержалось значение типа Дата или Число, то в ячейку результирующего табличного документа это значение попадает в зависимости от значения этого параметра.

Значение по умолчанию: Текст.
59 Kassern
 
14.07.21
10:42
(57) в большинстве случаев пофиг, ты знаешь в каких колонках какие данные и обработаешь как надо, хоть тебе все текстом придет.
60 Maniac
 
14.07.21
10:43
Ну а после загрузки, когда оно в таблицах. Уже далее все зависит тоже от железа.
СИнхронизация (у меня суперскоростная на 1 запросе).
Ну и запись в базу это уже тоже самое медленное из всего.
Я гружу в регистр сведений, поэтому очень быстро. Без всяких документов.
Создание номенклатуры тоже самое - тут уже никуда не деться - каждый элемент в цикле, разве что отключить проверку.
100 000 номенклатуры где то минут 5-7 создается.
61 Kassern
 
14.07.21
10:43
(55) а если к вам на сервис куча народа с большими таблицами попрет, он не загнется?)
62 Maniac
 
14.07.21
10:45
(61) уже так. для именно этого хватает обычного сервера. я арендую.
там не 1С.
63 Maniac
 
14.07.21
10:47
Я сам жду когда 1С наконец сделает что то подобное. С их возможностями это как два пальца.
Такая примитивная задача.
21 год а 1С с экселсем до сих пор не может дружить. Хотя могла бы просто мгновенно все делать.

Но видимо этого не будет никогда.
64 Maniac
 
14.07.21
10:48
Мне вообще этот функционал безразличен, мы его сделали потому что вариантов нет.
Если бы в 1С такой был то я был бы только рад. Ни мне ни моим клиентам не иинтересно каким именно образом читается эксель.
Я решаю предметные задачи в разработках и это ценно, а не то как эксель читается.
65 Garykom
 
гуру
14.07.21
10:49
Имхо переносить данные через Excel это идиотизм, как и грузить из него

Всегда! Всегда можно допинать отдающего данные на выдачу их в согласованном удобном формате!
66 Kassern
 
14.07.21
10:50
(65) не всегда)
67 Garykom
 
гуру
14.07.21
10:50
(65)+ Но задача переходит из разряда софтовой в административную, а проги обычно плохо умеют в административку
68 Kassern
 
14.07.21
10:50
(65) пробовали пинать гос структуры, чтобы они вам в нужном формате данные слали?)
69 Garykom
 
гуру
14.07.21
10:50
(66) Всегда.
Приведи примеры когда нельзя
70 piter3
 
14.07.21
10:51
(65) Бистро-бистро для консов сойдет
71 Garykom
 
гуру
14.07.21
10:51
(68) Прекрасно пинаются если зависимость не односторонняя
Или пишется внешний конвертер для преобразования xls в удобный формат
72 Maniac
 
14.07.21
10:52
(65) это в каком же? ты в курсе что XML еще медленнее 1С читает причем в разы!
73 Garykom
 
гуру
14.07.21
10:52
(72) Иди нафик со своим XML
74 Kassern
 
14.07.21
10:53
(71) вооот пошли уже костыли в ход) "если зависимость не односторонняя " именно про одностороннюю и речь, когда тебе надо, а другая сторона, какой то крупный сервис.
75 Maniac
 
14.07.21
10:53
Самый быстрый CSV но фиг дождешся чтобы кто то такие данные выдавал.
76 Garykom
 
гуру
14.07.21
10:53
(73)+ TSV, CSV или JSON
77 Garykom
 
гуру
14.07.21
10:54
(75) Конвертеров из xls в csv дофига готовых и не проблема самому наваять
78 Garykom
 
гуру
14.07.21
10:54
(75) И нихрена CSV не удобный в случае строк, там со служебными символами проблема разбора, удобней tsv
79 Maniac
 
14.07.21
10:55
(77) а что ты будешь делать с книгами в которых каждый лист может быть разный?
80 Garykom
 
гуру
14.07.21
10:55
(79) в разные файлы
81 Garykom
 
гуру
14.07.21
10:56
(80)+ но имхо проще в json
82 Maniac
 
14.07.21
10:57
Что тут гговорить - вы посмотрите 1С ные формы - УПД. этож ужас! там 80 колонок по 5 мм. А фактически в табличной части 15.
И такие УПД присылают в экселе. Да в них конечно не 100 000 строк.
Но попробуй просто даже настроить
83 Maniac
 
14.07.21
10:58
Проще мозг не делать) а покупать готовое) Ссылка выше.
В котором уже вообще все что можно продумано и реализовано.
Все что только изместно на текущий день. И делает все.
84 Kassern
 
14.07.21
11:00
(82) работайте с ЭДО, там приходит xmlка с данными УПД, еще есть и информация по договору, по которому это дело выписано.
85 Maniac
 
14.07.21
11:00
Могу сдать в аренду 500 рублей в месяц свой веб-сервис.
С готовой обработкой примером - по обращению к вебсервису - там 30-40 строк кода.

Будете передавать файл и получать на входе готовые Таблицы значений 1С (даже не табличный документ, а именно таблицы значений).
86 Kassern
 
14.07.21
11:00
(82) 21 век на дворе, а вы все эксельки гоняете))
87 Maniac
 
14.07.21
11:01
(86) поэтому и езжу на мерседесе.
88 ILM
 
модератор
14.07.21
11:03
Учите python он вам загрузит всё очень быстро.
89 Garykom
 
гуру
14.07.21
11:04
(88) прямо в 1С?
90 Злопчинский
 
14.07.21
11:04
(87) Правильно, Маня, так их, этих нищебродов-расставлятелей галочек!!!
91 Garykom
 
гуру
14.07.21
11:05
(90) я на электросамокате езжу и что?
мне не понты а удобство, в дождь на машине поеду понятно
92 Kassern
 
14.07.21
11:07
(87) рад за вас, главное чтобы мерсу было не 20+ лет)
93 Maniac
 
14.07.21
11:08
Да ладно там эксель - фигня.
Ну загрузили. А дальше что? А если все товары отличаются с теми что в 1С? месяц сопоставлять 100 000 товаров? или год?

Вот одна из задач это Сопоставление номенклатуры поставщиков. Вообще нет нормальных решений - полный ноль.
Я поиске если вбить - одна туфта! Стать и материалы как в 1С руками заводить одну карточку номенклатуры поставщика.

И полностью ничего про то как сделать чтобы тысячи товаров сопоставить.

А я так денек подумал и нарисовал супер функционал, без аналогов.
https://subsystems.ru/solutions/megaprays-nomenklatura/sopostavlenie-nomenklatury-postavshchikov-v-1s-nechetkiy-poisk/
94 Kassern
 
14.07.21
11:08
(92) сейчас мерс не такой показатель, а вот взять без ипотеки купить 3шку в москве в 2021году, вот это показатель) Знакомые недавно взяли ипотеку на 18 лямов и это двушка...
95 Kassern
 
14.07.21
11:10
(93) да у всех, кто сталкивался с такими задачами есть свои узкие решения. Вряд ли проги руками все это дело сводят, просто не всем интересно делать универсальные решения и гнать их на продажу.
96 Maniac
 
14.07.21
11:10
(94) за такие деньги можно было бы на море дом купить полноценный.
97 Garykom
 
гуру
14.07.21
11:10
(94) можно спросить а нахрена покупать недвигу в Мск?
ибо сча можно выбрать регион для жизни почище и по удаленке работать
98 Kassern
 
14.07.21
11:11
(97) знакомые стоматолог и реаниматолог, вряд ли смогут удаленно работать))
99 Kassern
 
14.07.21
11:12
(96) у некоторых привязка жесткая к москве, своя клиника например, или высокая зарплата требующая находиться в москве.
100 Maniac
 
14.07.21
11:12
Сейчас массовый приток мигрантов на юга ближе к морю. хотя оно всегда так было, но сейчас видимо еще больше.
Сам подумываю свалить из Ростова. смотрю варианты.
101 Garykom
 
гуру
14.07.21
11:18
(100) Нафик юга, я бы среднюю полосу предпочел типа Воронежа или можно поближе к Сибири и ДВ
102 Злопчинский
 
14.07.21
11:18
(100) к Белому морю? подальше от мигрантов?
103 Garykom
 
гуру
14.07.21
11:19
(102) Холодновато тут на Белом море зимой особенно
104 Maniac
 
14.07.21
11:28
А я Красную поляну обожаю.
105 Злопчинский
 
14.07.21
11:31
(104) построй себе шале на Эльбрусе.
106 серый КТУЛХУ
 
14.07.21
12:06
ТабДокументЗагрузки = Новый ТабличныйДокумент;
    ТабДокументЗагрузки.Прочитать(ExcelФайл);
    ТаблицаЗначенийЗагрузки = Новый ТаблицаЗначений;
    ТаблицаЗначенийЗагрузки.Колонки.Добавить("Колонка1");
    ТаблицаЗначенийЗагрузки.Колонки.Добавить("Колонка2");
    Для СчетчикСтрок=1 По 100000 Цикл
        СтрокаТз = ТаблицаЗначенийЗагрузки.Добавить();
        СтрокаТз.Колонка1 = ТабДокументЗагрузки.Область(СчетчикСтрок+1,1).Текст;
        СтрокаТз.Колонка2 = ТабДокументЗагрузки.Область(СчетчикСтрок+1,2).Текст;
        ПустоеВычисление = Справочники.Номенклатура.ПолучитьСсылку(МассивДляВычислений[СчетчикСтрок-1]);
    КонецЦикла;
итого затрачено времени(сек): 3,462536
что я делаю не так?
107 Злопчинский
 
14.07.21
12:07
(106) "сломается", если в табдокумент 99999 или 100001
108 Garykom
 
гуру
14.07.21
12:10
(106) >ПустоеВычисление = Справочники.Номенклатура.ПолучитьСсылку(МассивДляВычислений[СчетчикСтрок-1]);

не так надо
109 Kassern
 
14.07.21
12:11
(106) Если нужно прочитать все, то лучше
КоличествоСтрок=ТабДок.ПолучитьРазмерОбластиДанныхПоВертикали();
Для к=1 По КоличествоСтрок Цикл
110 Kassern
 
14.07.21
12:13
(106) можно в цикле ничего не вычислять, а лишь тз заполнить. А далее все 1 запросом сопоставить и отфильтровать как надо.
111 Garykom
 
гуру
14.07.21
12:18
(109) эээ я юзал просто ТабДок.ВысотаТаблицы
112 Вафель
 
14.07.21
13:03
(110) ссылку все равно нужно в цикле вычислять
113 Kassern
 
14.07.21
13:40
(112) зачем ссылку в цикле вычислять? К примеру у вас есть эксель с колонками артикул, цена. Что мешает создать ТЗ с данными колонками и определенным типом, заполнить в цикле данными из табдока и запихнуть в запрос. Далее эту временную таблицу привязать к таблице номенклатуры по артикулу и получить уже найденные в базе данные. зачем это дело в цикле гонять?
114 palpetrovich
 
14.07.21
14:22
ох, а понаписывали то :)
сделал так
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Прочитать(ПутьКФайлу);
    ОбластьЯчеек = ТабДок.Область(1, 1, ТабДок.ВысотаТаблицы, 2);
    ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьЯчеек);
    ПостроительОтчета = Новый ПостроительОтчета;
    ПостроительОтчета.ИсточникДанных = ИсточникДанных;
    ПостроительОтчета.Выполнить();
    ТЗ = ПостроительОтчета.Результат.Выгрузить();
потом ТЗ - в запрос для получения ссылок

время 10-15 сек, выводит на экран (если нужно) - мягко говоря - подольше  :)
115 trad
 
14.07.21
14:52
а которую страницу екселя прочитает табдок?
116 Kassern
 
14.07.21
14:56
(115) насколько я помню, табдок склеивает все таблицы в одно целое. А страницы лишь области этого табдока
117 Maniac
 
15.07.21
12:20
(116) существенный недостаток 1С.
Как и это.
Так и то что из 1С нельзя делать многолистовые эксель файлы.
118 Maniac
 
15.07.21
12:21
Могли бы и сделать чтобы возвращался массив табличных документов.
А также чтобы можно было и из 1С разные таб доки склеивать в многолистовую книгу.
119 acht
 
15.07.21
12:24
(117) > из 1С нельзя делать многолистовые эксель файлы.
Серьезно?
120 ДенисЧ
 
15.07.21
12:25
(119) Ты чо, обурел? ))))
|мане не веришь??
121 Kassern
 
15.07.21
12:26
(118) все можно, есть для этого специальный конструктор для пакета документов. Каждый уйдет на нужный лист.
122 Kassern
 
15.07.21
12:27
123 acht
 
15.07.21
12:27
Я начинаю подозревать, что манина загрузка, гм, слегка устарела =)
124 Kassern
 
15.07.21
12:30
(123) Да не быть такого не может) достаточно прочитать (55) "1С однопоточная прога и использует 1 ядро".
125 Kassern
 
15.07.21
12:31
(124) *быть такого не может)
126 acht
 
15.07.21
12:34
(124) О, там круче - "В моей обработке файл перекачивается на наш веб-сервис"
И можно начинать барыжить статистикой внутреннмх цен поставщиков
127 Kassern
 
15.07.21
12:39
(126) вот еще идея, в какой то момент делаешь мол первые 100мб бесплатно в месяц. Кто до 1гб отправляет тот 3тыс платит, а кто еще больше то 5тыс. Людям, которые заплатили бабки и автоматизировали свои рабочие места на ваш сервис придется раскошеливаться)
128 acht
 
15.07.21
12:40
(127) И правда. И 1С знать уже не обязательно. Но советы раздавать по прежнему можно.
129 Krendel
 
15.07.21
12:43
(104) Маня вернулся?
130 Kassern
 
15.07.21
12:45
(128) пример кстати из реальной жизни, на одном из проектов, так и поступили. Создали свой обменник для поставщиков на подобии почтовика, чтобы поставщики могли обмениваться документами друг с другом. Всех посадили на прогу, которая xmlки выплевывает в этот сервис, который передает далее файлик нужному клиенту. А через пол годика сообщили, мол сервис разросся поддерживать его стало накладно, мол платите абоненточку за объем)
131 bolder
 
15.07.21
15:58
(37) >30 минут это для чтения много.Примерно 10 на не сильном железе 5-10 летней давности.
Не, 5 минут для чтения  8 колоночного файла хватает.На все про все с сопоставлением номенклатуры и прочего (ага, нужно и другое сопоставить), а также отображением на экране 9,5 минут.
Процессор 3,0 ГГц 2008 года )) 1C 8.3.15.2107 клиент- сервер MS SQL
132 bolder
 
15.07.21
16:08
(100) Маня, этот год показал, что делать на юге у моря нечего.В горы стремись))
133 bolder
 
15.07.21
16:11
(112) > ссылку все равно нужно в цикле вычислять
Зачем? Давно все получаю запросами.Как и в (24) отметил верно.Одним запросом все ссылки да еще и на разные типы)
134 Maniac
 
21.07.21
20:58
Кстати спасибо за подскахку о том, что в 1С появились методы сохранения книги в Эксель из 1С.

Я допилил своб разработку, теперь у меня мультипрайс умеет создавать в 1С многолистовой прайс-лист на форме и сохранять его в эксель.

https://subsystems.ru/news/mnogostranichnyy-prays-list-iz-1s-sozdanie/
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший