Вход | Регистрация

  1  2  3  4  5   

Загрузить в 1С файл 15 000 000 товаров CSV

Загрузить в 1С файл 15 000 000 товаров CSV
Я
   Maniac
 
13.11.18 - 20:12
Как думаете возможно?
Размер файла 1 гигабайт.
Клиенту очень нужно.....
 
 
   palsergeich
 
201 - 13.11.18 - 23:26
   palsergeich
 
202 - 13.11.18 - 23:27
Я изза копипаста из другой обработки 40 минут убил, в букве опечатался и не мог понять что не так)
   palsergeich
 
203 - 13.11.18 - 23:29
Диск не ССД специально тестировал на самом медленном своем диске)
   palsergeich
 
204 - 13.11.18 - 23:38
https://drive.google.com/open?id=1gDv_64nHAwgpFYbGJzrfy0SR7BqmPT-l Поправил форматирование и убрал лишний код
   Maniac
 
205 - 13.11.18 - 23:38
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(11)}: Ошибка при вызове конструктора (ФайловыйПоток)
    ФайловыйПотокЗапись = Новый ФайловыйПоток(ИмяФайлаЗаписи,РежимОткрытияФайла.ОткрытьИлиСоздать);
по причине:
Ошибка при работе с файлом: C:\Users\User\Downloads\ПРАЙС 15 000 000\price22.csv
по причине:
Ошибка совместного доступа к файлу 'C:\Users\User\Downloads\ПРАЙС 15 000 000\price22.csv'. 32(0x00000020): Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
   palsergeich
 
206 - 13.11.18 - 23:38
Дада
   palsergeich
 
207 - 13.11.18 - 23:38
Скачай 2ю версию
   palsergeich
 
208 - 13.11.18 - 23:39
(204) Вот эту
   Злопчинский
 
209 - 13.11.18 - 23:39
(205) Продолжайте наблюдение, галактеко опасносте
   palsergeich
 
210 - 13.11.18 - 23:44
https://drive.google.com/open?id=1gDv_64nHAwgpFYbGJzrfy0SR7BqmPT-l Поправил опечатку в нейминге 1го файла разрезанного.
Что устал сегодня такие тупые опечатки(
 
 Рекламное место пустует
   Maniac
 
211 - 13.11.18 - 23:44
Ок. Молодец. Запустил. пару минут все делало 15 000 000 по 100 000.

В скайп напиши телефон и сумму.
   palsergeich
 
212 - 13.11.18 - 23:45
Если бы я еще скайп знал)
   Maniac
 
213 - 13.11.18 - 23:46
С кодировкой только какие то проблемы.
   Maniac
 
214 - 13.11.18 - 23:46
Skype: shekineugeniy
   Maniac
 
215 - 13.11.18 - 23:47
Да вот другое дело. Моя обработка хавает файлы по 100 000 строк за 8 секунд.
   palsergeich
 
216 - 13.11.18 - 23:48
(213) Там при чтении и записи можно поменять кодировочку
   Maniac
 
217 - 13.11.18 - 23:49
120 файлов по 8 секунд. плюс синхронизация и запись.
Ну ок пусть будет на каждый 2 минуты.

240 минут... ептить как ни крутись клиенту 4 часа ждать)))))
   Maniac
 
218 - 13.11.18 - 23:50
При этом естественно исключительно ему нужны серваки нормальные.
   palsergeich
 
219 - 13.11.18 - 23:53
(217) ну просто создание такого количества ссылочных сущностей само по себе затратно по времени. Можно пустить паралельно в фоне например
   Maniac
 
220 - 13.11.18 - 23:55
А вот такой вопрос. на стадии чтения я ж могу обращаться к каким то данным?
ну например тупо мне не нужны 15 лямов все.
А только скажем так некоторые производители.

Хотя риторический вопрос. конечно же могу!

Добавиишь еще этой обработке опции - чтобы можно было разложить и наложить фильтр! ЦЕны не будет!

Я бы такое на продажу выложил!
   Maniac
 
221 - 13.11.18 - 23:56
Те мало того что мы делим. еще сразу и фильтруем!
и на выходе получаем только то что хотим!!!
   Maniac
 
222 - 13.11.18 - 23:56
Ну это я могу если чо и сам сделать. Но ты если хоч, в плане творчества - можешь взятся. Если конечно хочешь чтобы все авторство было исключительно твое.
   palsergeich
 
223 - 14.11.18 - 00:00
(222) К сожалению завтра тяжелый день и надо уже закруглятся.
А вот именно функции работы со строками (СтрНайти и прочее) уже являются узким местом на таких больших выборках, здесь уже пришлось питонировать(
   Maniac
 
224 - 14.11.18 - 00:01
Да и это самое интересное. чтобы фильтры были!!!!
Это сразу эту обработку делает бесценной.
   palsergeich
 
225 - 14.11.18 - 00:01
Но так как за код 1с мне не стыдно, его я могу выкладывать, то в Питоне я любитель и увы, Home Use Only
   Maniac
 
226 - 14.11.18 - 00:01
Ок я уже завтра сам начну эксперементировать с этим.
Спасибо! спишемся в скайпе!
   palsergeich
 
227 - 14.11.18 - 00:02
(224) Если известен формат, то приделать можно.
   Maniac
 
228 - 14.11.18 - 00:02
(225) отлично и это что ты питон любишь. Буду знать если что к кому обратится!
   Maniac
 
229 - 14.11.18 - 00:02
Короче я тебе телефон пополню. а то сбер не находит
   Maniac
 
230 - 14.11.18 - 00:03
в три раза больше сумму чем ты запросил
   palsergeich
 
231 - 14.11.18 - 00:04
Но увы именно 1с разочаровал - там идет на таких выборках дичайшая нагрузка на проц.
Не то что люблю, это инструмент, который я только своими клешнями начал трогать.
(229) Да ладно, я так мозг размял, это не обязательно
   Maniac
 
232 - 14.11.18 - 00:05
Файл можешь удалять! А то нахяляву накачают! пусть тоже платят!
   palsergeich
 
233 - 14.11.18 - 00:08
(232) Удалил, проверь
 
 
   Злопчинский
 
234 - 14.11.18 - 00:13
Жлобы.
   Maniac
 
235 - 14.11.18 - 00:13
Так и сообщи сразу мне по скайпу о твоих условиях авторства на данный модуль)))) из 15 строк.
Так как я человек сугубо принципиально работающий. то не могу себе позволить авторство причислять или использовать.
В обработку или добавь себя как автора, а также опиши условия данного продукта.
Как я его могу использовать и для каких целей.
   Злопчинский
 
236 - 14.11.18 - 00:14
Блин, я челу 500 руб забыл отбашлять за деление эксельного файла... нехорошо, надо будет найти и исправиться.
   Злопчинский
 
237 - 14.11.18 - 00:15
(233) не ведись на Маню.
Требуй ренту со всех продаж.
   Maniac
 
238 - 14.11.18 - 00:15
(236) вот вот! заплати человеку пятихатку!
   Злопчинский
 
239 - 14.11.18 - 00:18
(238) Не ссы, забашляю... Хоть обработка VB и кривоватая - гуй виндявывй падает после нее ;-)
   Злопчинский
 
240 - 14.11.18 - 00:20
   Fram
 
241 - 14.11.18 - 00:22
(179) > ЧтениеТекста = новый ЧтениеТекста(ФайловыйПоток);

а что ЧтениеТекста уже разучилось напрямую файлы читать, обязательно поток нужен?
   palsergeich
 
242 - 14.11.18 - 00:25
(241) Я этот кусочек кода в рамках другой задачи использовал. Сравнений по скорости не делал. Работает и работает быстро и хорошо
   Maniac
 
243 - 14.11.18 - 00:25
(241) пусть будет. это интересная тема!

"Но они не позволяли каким-либо простым способом проанализировать внутреннее содержимое или модифицировать его. Все действия выполнялись над всеми данными целиком. Единственная операция, которая была возможна над частью данных это разделение файла на части и склейка обратно."
   Maniac
 
244 - 14.11.18 - 00:26
Вот как раз то что там еще и можно чего то анализировать или менять - мне это тоже очень актуально!
Я не знал о Потоках. я тупой 1Сник
   Fram
 
245 - 14.11.18 - 00:27
(242) думаю, не будет разницы, но кода меньше. особенно, для неокрепших умов, которые будут читать твой код
   Maniac
 
246 - 14.11.18 - 00:28
Начну завтра изучать. так как у меня как раз задача теперь еще фильтровать содержимое. а это анализировать.
И сделать универсальный инструмент. которому пихаешь. он дает анализ, в обработке накликиваем чего нужно.
получаем только то что нужно.
   Maniac
 
247 - 14.11.18 - 00:29
Вот тут типа об этом пошире

http://v8.1c.ru/o7/201602bin/index.htm
   Fram
 
248 - 14.11.18 - 00:30
(246) тогда точно ВИД нужно использовать
   Maniac
 
249 - 14.11.18 - 00:31
(248) а это что такое?
 
 Рекламное место пустует
   Fram
 
250 - 14.11.18 - 00:31
внешние источники данных
   Maniac
 
251 - 14.11.18 - 00:33
Сначала с простых путей. 2 минуты для 15млн фигня.
Попробую ручным способ анализа в цикле. сделаю замеры.

Если будет все в районе 5 минут. то нах заморачиваться.

Если проблемы. тогда только искать более сложный инструмент.
   Черный маклер
 
252 - 14.11.18 - 00:33
я так понимаю ростовские 1С-ки принципиально используют только файловые версии 1С ? :)
   Maniac
 
253 - 14.11.18 - 00:34
5 точно не будет. но посмотрим. люблю говорить когда есть факты.
   Maniac
 
254 - 14.11.18 - 00:35
(252) не ростовские а конкрето пока я. И да именно так. потому что когда ты делаешь что то на массу клиентов, то нужно понимать что и у 20 процентов не будет СКЛ.
   Fram
 
255 - 14.11.18 - 00:36
(251) анализировать такой объем данных лучше средствами БД. 1ска загнется на построчном анализе
   Maniac
 
256 - 14.11.18 - 00:38
(255) не спорю. но нужно просто сделать тесты.
При удовлетворительных результатах не вижу смысла усложнять трудозатраты свои а также требования к клиентам.
   Maniac
 
257 - 14.11.18 - 00:39
Я думаю тема еще будет жива. так что поболтаем. пошаманю. посмотрим чо да как на конкретных результатах.
   palsergeich
 
258 - 14.11.18 - 00:40
(251) Если не будет псевдо регулярных выражений - то должно уложиться
   Fram
 
259 - 14.11.18 - 00:40
(256) ну вон в (158) что пишет:
"Один Эс на строковых функциях осилило 5 потоков и после пары часов я просто погасил. "
   palsergeich
 
260 - 14.11.18 - 00:41
(259) Там объем был 30+ гб + достаточно тяжелые соспоставления - не просто банальный фильтр
   Maniac
 
261 - 14.11.18 - 00:44
в данном случае все просто. Я уже даже догадываюсь как.

В этом конкретно файле автозапчасти. Специфика автозапчастей всегда одна - производители.

Скорее всего (я уверен) речь идет о том чтобы из этой всей хрени получить определенных производителей.

В этом CSV это конкретный порядок колонок с разделителем, в части которых и есть производитель.

Все достаточно просто.
Но конечно нужно делать универсальный инструмент по всем колонкам и возможности всех фильтраций - точное РАВНО или нечеткий поиск и тп.

Но это все опции, от которых зависит скорость и то что хотим получить.
   Fram
 
262 - 14.11.18 - 00:45
(260) для такого у скуля есть штука под названием Integration Services - классный инструмент ETL
   Fram
 
263 - 14.11.18 - 00:46
и он вроде как бесплатно идет со скулем стандартным
   Maniac
 
264 - 14.11.18 - 00:48
Причем самое важное тут речь идет даже не о том насколько огромен файл, а просто даже если будет и 10 000 строк. инструмент такой нужен, который файл может брать - перелопачивать и выдавать другой файл.

Я почему так загорелся. повторю видос (буквально за 1 час сделал то что годами не делал)

https://www.youtube.com/watch?v=IxBhmTTky3g

меня даже от этого прет! а тут стечение обстоятельств. И я теерь думаю как на уровне файла нааучится сразу все фильтровать!! вот ГДЕ ТЕМА!
   Maniac
 
265 - 14.11.18 - 00:50
Если я научусь и сделаю нечто универсальное. мне поух этот конкретно клиент с его 15 лямами строк.
Мне тут важен сам принцип работы.
Так такие вещаги очень нужны в моей специфике, хотя не против того чтобы 1С когда то летала со скоростью звука....
   zak555
 
266 - 14.11.18 - 01:27
(229) зачем 15000р на телефон класть?
   Aleksey
 
267 - 14.11.18 - 02:04
(266) Потому что в файлики 15 000 000 товаров, поэтому и на телефон 15 000р Логично?
   Злопчинский
 
268 - 14.11.18 - 03:02
(267) нищебродство какое-то.. хотя бы по 5 копеек за товар, ну на крайняк за 1 коп за товар...
   Йохохо
 
269 - 14.11.18 - 03:20
(268) я файлики умею делать по 45кк строк, нет Ростовской симки?
   Злопчинский
 
270 - 14.11.18 - 04:17
(269) Нафейхоя мне ростовская симка?
   zva
 
271 - 14.11.18 - 06:03
(261) А нах это все в 1С нужно в таких объемах? Прайсы должны грузить прайс-аггрегаторы, вроде http://веб-прайс.рф/
Там же настраивать ценообразование. 1С взаимодействует через api
   Мелифаро
 
272 - 14.11.18 - 06:16
(271) Це ж Маня :)

Ультрапрограммист чужими руками, бхехе.
   Maniac
 
273 - 14.11.18 - 17:43
Короче ВСЕ!

закрыл я задачу! реализовал потоковую загрузку прайсов в 1С.
С делением на файлы и даже могу накладывать фильтры сразу.

Можно теперь грузить ваще ЧТО УГОДНО. Со всеми финтиплюхами от начала до конца. с любой сложностью данных.
   Кирпич
 
274 - 14.11.18 - 18:23
Врешь небось
   Maniac
 
275 - 14.11.18 - 18:25
Зуб даю. Уже пошел клиентов обновлять
   Базис
 
276 - 14.11.18 - 18:29
(261) Не хотел бы тебя расстраивать, но в запчастях немножко больше сложностей. Смотри:

1. на твой логан пойдёт кронштейн от твоего мерса, но не наоборот.
2. ШРУС в Логан можно ставить с PN1488 в диапазоне vin от 1 до 15000 и PN8814 c 150001 до 29 февраля 2004 года.

Пока хватит?
   Вафель
 
277 - 14.11.18 - 18:30
(276) кто в здравом уме будет ставить на логан кронштейн от мерса.
он наверно раз в 10 дороже
   Кирпич
 
278 - 14.11.18 - 18:31
(276) значит денег больше заплатят
   Maniac
 
279 - 14.11.18 - 18:39
грузить кросы и аналоги это отдельны таблицы в автозапячатях. дело техники..
повторюсь для меня был важен принцип.
даже для тех у кого 10 или 50 тысяч товаров это функционал дает большую скорость.
так как теперь запросами можно быстро синхронизировать даже битьем по 5 тысяч.

прирост скорости огромен.
   Garykom
 
280 - 14.11.18 - 18:47
(279) Сделай следующий шаг, откажись в своих "прайсах" от 1С по максимуму.

Из базы 1С берутся только остатки и потребность в номенклатуре, далее грузится куда то во вне и там все подбирается по поставщикам.
Назад в 1С готовые заказы поставщикам.
   Сияющий в темноте
 
281 - 14.11.18 - 18:49
файл построчный,при желании,режем на части и грузим в несколько потоков
опять же,например,по десять элементов в транзакции должно грузить и не жрать память.
   Maniac
 
282 - 14.11.18 - 18:49
(280) это все равно что себе в коленку стрельнуть ты предлагаешь? у меня есть клиенты у которых и 1000 товаров всего и совершенно разные бизнесы. Вообще не обязательно даже интернет магазин.
   Garykom
 
283 - 14.11.18 - 18:51
(282) Нет предлагаю тебе расширить аудиторию на конторы без 1С (основной учетной не бухии).

И готовиться к будущему в облаках, когда нельзя будет твою поделку во фреше запускать.
   Maniac
 
284 - 14.11.18 - 18:52
(283) без 1С уже есть решения. сервисов полно и прочее.
загрузка у меня не главное.
я в 1С всей автоматизацией занимаюсь
   RomanYS
 
285 - 14.11.18 - 18:53
(281) Проблема в том, что Евгений подсел на синхронизацию через запрос (передавая туда входящие данные через параметры в ТЗ). Если на каждые 10 делать запрос - долго, очень долго будет. Придется Мане учиться пользоваться соответствиями.
   Maniac
 
286 - 14.11.18 - 18:55
сейчас синхронизация занимает на 100 к строк - 4 секунды.
Это как ты говоришь с ТЗ и обратной
   Maniac
 
287 - 14.11.18 - 18:56
синхронизация самое быстрое что сейчас есть!!
Все тормоза главные всегда на записи.
   Maniac
 
288 - 14.11.18 - 18:57
запрос то единый. без циклов.
с ТЗ 1С замечаттельно работает. это самое быстрое что в 1С есть. гораздо хуже все это создавать, проводить документы и тп. даже без документов в регистр сведений.

Хотя к примеру создание 100к товаров занимает 7 минут.
   Maniac
 
289 - 14.11.18 - 19:00
у меня замеры впихнуты во все места с выводом логов.
1) Самое тормоз - запись чего либо в 1С
2) На втором месте Обработка тз - когда там всякие вспомогательные справочники типа единиц, валюты цены, производитель и прочее.
3) Первичное чтение
4) и только на последнем синхронизация. это самое быстрое.

Хотя замер максимальный у меня такой.
Загрузка 100к - обработка в ТЗ (где мы закладываем откуда какая колонка что значит).
Синхронизация с 1С всех элементов.
Запись цен.

37 секунд результат в фоновом задании.
   Maniac
 
290 - 14.11.18 - 19:01
37 секунд это если вcя номенклатура есть в базе.
Если нет - то еще 7 минут на ее создание.
   Maniac
 
291 - 14.11.18 - 19:03
В принципе у 99 процентов клиентов нет такой номенклатуры....

Я бы сказал так что 98 клиентов вообще до 10 тысяч и меньше.
Остальной 1 процент - 30-50-70к....

И вообще мизер - на пальцах считать кто 100 и выше.
   Maniac
 
292 - 14.11.18 - 19:04
Это таких 2 если в год приходит ко мне....

А есть клиент у которого вообще 100 товаров. Так он уже пятый год со мной работает.
   Bober
 
293 - 14.11.18 - 19:08
(2) что мешает сделать режим загрузки по 1000\10000 объектов за раз и потом продолжить чтение файла.
   Maniac
 
294 - 14.11.18 - 19:08
Вон прайс последний что на видео. Там вообще 150 строк, но характеристики колонками с ценами. В итоге 1500 строк.
Вот и вся номенклатура. Вообще чих и все готово.
А у чувака нервный тик от такого прайса был.
   Valerik0101
 
295 - 14.11.18 - 19:09
Как вариант проверенный: берем R или Пайтон - т.е. то, что справляется хорошо с бигдата, читаем из csv (в оперативу или файл) и "чистим" данные, т.е. приводим к удобоваримому структурированному виду.
Если нужно записывать в 1С - пишем на 1С http сервис по  записи данных, например из json строки. Причем с учетом распараллеливания в фоне - от 8 процессов (дальше увеличивать осторожно). И отправляем порциями из среды разработки в 1С через http сервис данные порциями.
   Maniac
 
296 - 14.11.18 - 19:10
(293) правильно - сразу разделять процессы.
Если бить файл - то сразу все разбить.
а потом массив перечитывать.

Это и красивый код и понятно все. И процессы не задеживаются.
Все верно тут подсказали - что нужно разбить файлы.
И это делать первым.
А уже все остальное.
   Maniac
 
297 - 14.11.18 - 19:11
К тому же если еще и фиильтрация - то тут надо все перечитать сразу.

Ибо например будет прайс на 50 000. а нужно 1000.
Но первые в начале, остальные в конце одного файла располагаются.
   Bober
 
298 - 14.11.18 - 19:11
(296) да, варианты оптимизации есть.
   Maniac
 
299 - 14.11.18 - 20:19
Короче я допилил отдельную обработку для разделки файла.
и сделал ее универсальной с универсаальными фильтрами причем множеством способов.

Это и вхождение строк во всю строку, и поиск подстроки из массива слов из строки.
И нечеткий поиск и тп.

Для теста у меня есть файл в 400 000 товаров.

В общем захотел получить все товары в строке которых естьт 4 циферки. Результат 8 секунд и файл на 120 килобайт на пару сотен строк.
   Maniac
 
300 - 14.11.18 - 20:22
Прямой поиск по строке 8 секунд....
Через разложение строк в массив и поиск значения в конкретном месте 120 секунд.

Конечно 8 супер! но и 120 в случааае каких то ну прямо очень сложных вычислений, а разложение в массив я считаю - самым жирным. 2 минут - ваще куета полная для файла в 400к строк.
  1  2  3  4  5   

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует