Имя: Пароль:
1C
1C 7.7
v7: Реально ли распараллелить процессы 1С 7.7?
, ,
0 Karambol
 
04.03.14
09:25
Добрый день! Есть база на семерке, в которой запускается тяжелая обработка. Когда процесс 1С занимает больше 1.5 Гб памяти, происходит вылет с ошибкой "Out of memory". Насколько я знаю, 32х разрядные процессы не могут занимать больше 2Гб оперативной памяти. Подскажите, существует ли способ решения данной проблемы (без перехода на 8 :))?
1 Андрюха
 
04.03.14
09:28
Можно для начала оптимизировать "тяжелую обработку"
2 ДенисЧ
 
04.03.14
09:29
Переделать тяжёлую обработку - не предлагать?
3 Толич
 
04.03.14
09:30
Сделать легкую обработку вместо тяжелой.
4 Mikeware
 
04.03.14
09:32
(1)(2)(3) вы на г.р. ТС посмотрите, и вопросы отпадут....
5 jsmith82
 
04.03.14
09:33
(4) +1!
6 ДенисЧ
 
04.03.14
09:34
(4) Не все 86 одинаково бесполезны. Я знаю как минимум 2х, которые мне (!!!) дадут фору во многом... Причём одна из них - женщина
7 jsmith82
 
04.03.14
09:35
(6) я был о тебе более высокого мнения
8 ДенисЧ
 
04.03.14
09:36
(7) Ну извини, что разочаровал... Пойду убъю себя...
9 jsmith82
 
04.03.14
09:36
(8) стой! не убивай! я пошутил
10 Fedor-1971
 
04.03.14
09:42
(0) что делает "тяжелая обработка"? Попробуй вариант разделения на несколько.
Сверни базу, если позволяет религия заказчика.
(4) на очень хорошая шутка, можно подумать, что некоторые сразу родились гениями от программирования
11 jsmith82
 
04.03.14
09:43
(10) конечно
12 Андрюха
 
04.03.14
09:45
(10) >> можно подумать, что некоторые сразу родились гениями от программирования

Увы, это так...
13 Мигало
 
04.03.14
09:46
"Пригласите специалиста" было ?
14 dk
 
04.03.14
10:01
(0)
1. чисти неиспользуемые переменные (особливо крупные ТЗ)
2. не тащи на клиента сто тыщ мульонов строк - сворачивай в запросе
3. если работаешь с xml - либо дроби наборы данныз на более мелкие, либо переходи на ole (если КД)
15 vlandev
 
04.03.14
10:08
(14) Как нетащить на клиента мульоны строк , в семерке все тащится в клиента.
16 ДенисЧ
 
04.03.14
10:09
(15) не звезди
17 Bigbro
 
04.03.14
10:11
(0) да.
18 ikea
 
04.03.14
10:40
(4) При чем тут год рождения, может у человека задача такая, что действительно памяти не хватает. У меня тоже была подобная задача: нужно было автоматически создавать документ и заполнять его, падал на ~6000 строк с такой же проблемой. Пришлось автоматом разбивать на 3 дока, чтобы все влезло.
P.S. Сам тоже 86 года.
19 ikea
 
04.03.14
10:41
(17) Если не трудно, кинь ссылку куда копать.
20 Chum
 
04.03.14
10:45
(18) >падал на ~6000 строк

бггг. Вот когда падает на over 180 тыс строк, тогда нужно задумываться над бренностью бытия.

(0) тяжелая обработка тяжело обрабатывает тяжелые данные? Там поди и создание объектов в цикле есть, и переливка ТЗ в ТЗ?
21 Karambol
 
04.03.14
11:23
Обработка грузит из Excel данные и заполняет ТЗ. Потом их обрабатывает. Все это время ТЗ нужно держать в памяти. Вопрос стоял не в том, как оптимизировать обработку. А в том, есть ли средство от ограничения в 1.5Гб под процесс 1С.
22 Mikeware
 
04.03.14
11:30
(18) всегда чего-то не хватает: памяти, времени, денег...
нужно уметь рационально использовать доступные ресурсы...
а год рождения.... ну ЧАЭС взорвалась, и у многих этого года рождения возникли дефекты в ДНК. некоторые - с уклоном в гениальность, но бОльшая часть - с уклоном в дебилизм.
23 Мимохожий Однако
 
04.03.14
11:33
(21)" Все это время ТЗ нужно держать в памяти"
Как вариант - сделай служебный документ для этой обработки и держи информацию в ТЧ.
24 Мигало
 
04.03.14
11:36
(23) Справочник служебный
25 dk
 
04.03.14
11:37
типизация колонок тоже помогает сократить память
26 Fedor-1971
 
04.03.14
11:38
(21) перестраивай алгоритм обработки, напиши VBA скрипт для подготовки данных из Exel и просто грузи данные не анализируя.
В (23) то же хороший вариант.
27 Mikeware
 
04.03.14
11:39
(23)(24)  а также dbf-файл, таблица на сервере и т.п.
(25) и это тоже.
28 Мигало
 
04.03.14
11:40
(26) В 23 совет плохой с ТЧ документа
29 vlandev
 
04.03.14
11:41
(21) Средств снять ограничения по памяти на 32-битный процесс нету , разве что попросить фирму 1С специально для тебя скомпилировать 77 в 64 бита.
30 Fedor-1971
 
04.03.14
11:45
(28) если строк данных меньше 9999, то подойдёт. Реализация через справочник примерно на том-же уровне проблемности реализации.
31 Мигало
 
04.03.14
11:46
(30) Не в строках дело, а в том что при использовании документа лочится 1СЖурнал. Ляжет проведение других документов пока у него этот гипопотам ворочается.
32 Bigbro
 
04.03.14
11:51
(21) см 29.
33 Mikeware
 
04.03.14
11:55
(31) залочится он только на момент создания нового (ну или запись-проведение). но записывать или проводить этот документ совершенно нет необходимости.
34 Мигало
 
04.03.14
11:59
(33) Сожрет память тогда точно так же как таблица
35 floody
 
04.03.14
12:03
(0) на самом деле предел памяти не 2, а /3GB

конечно, переписывать обработку в первую очередь, больше чем уверен, что там гкод
36 КонецЦикла
 
04.03.14
12:05
(21) Собственную таблицу SQL (временную или постоянную) или что-то в это роде не предлагать?
37 КонецЦикла
 
04.03.14
12:07
Даже тупо записать все из ексель в таблицу займет ну 5-10 секунд при самом плохом раскладе если читать напрямую и писать.
Потом над этой таблицей издеваться апдейтами.
38 Bigbro
 
04.03.14
12:07
35 это вроде только для приложений которые умеют AWE. 1с к ним относится думаешь?
39 varelchik
 
04.03.14
12:13
(0) а код выложить слабо?
40 ADirks
 
04.03.14
12:19
(36) тут на инфостарте недавно обсуждали, как нагнуть сервер путём создания ВТ в N гигов :))
41 vova1122
 
04.03.14
12:25
(0) Кстати, а сколько примерно строк и колонок в екселевском файле?
42 ikea
 
04.03.14
12:29
(40)
Это же сколько строк и столбцов должно быть чтобы виртуальная таблица в гигах измерялась. Жесть в чистом виде.
43 DrZombi
 
гуру
04.03.14
12:32
(21) Оптимизируй, слушай Старших. Поверь, нет такого екселевского файла, который бы ложил бы систему :)

При загрузки из екселя, пиши все во временные файлы DBF
А после работай уже дальше :)
44 DGorgoN
 
04.03.14
12:36
(43) +1
45 Bigbro
 
04.03.14
12:37
43 да там в итоге окажется что какую нибудь элементарную сортировку / фильтрацию нужно сделать, которую вообще бы стоило выполнить в самом экселе открыв его по ОЛЕ.
46 ptiz
 
04.03.14
12:41
У меня в 8ке расчет прайса упирался в размер ОЗУ и не валился на 32х-разрядной системе. (но на х64 - всё хорошо, слава 1С 8 !)
(десятки клиентов, каждому - расчет по тысячам позиций и всё это - в один файл)

Потом нашел место для оптимизации и сейчас памяти кушается меньше. Но при увеличении числа позиций в несколько раз снова всё упрется в предел.
47 sda553
 
04.03.14
12:41
Функционал отчета переделать в Stored процедуру на sql. Результат в свою таблицу укладывать. А семерка пусть этот результат готовыми частями качает
48 ptiz
 
04.03.14
12:41
тьфу ты... "упирался в размер ОЗУ и Валился"
49 Chum
 
04.03.14
12:48
+(43) файл excel можно и сразу в дбф сохранить, прикрутить файл индексов и работать спокойно.
50 ADirks
 
04.03.14
13:21
(42) Это про восьмёрку было, там влёгкую.
Недавно попалась интересная статья Спешурика про составные типы в восьмёрке - вот где жесть так жесть.
http://infostart.ru/public/184361/
51 Karambol
 
04.03.14
13:56
(41) Около 500 000 строк. Колонок - 20
52 Ёпрст
 
04.03.14
14:56
(51) и версия эксела какая ?
:)
53 Михаил Козлов
 
04.03.14
15:09
(49)+
54 Irbis
 
04.03.14
15:10
(6) Исключения только подтверждают правила
55 hogik
 
04.03.14
17:39
(0)
4GB - легко. :-)
Тема: http://forum.infostart.ru/forum26/topic50264/message550872/#message550872
Сообщения: 12, 14.
Проверял на 1cv7.exe.
56 varelchik
 
04.03.14
18:01
(0) а код мы так и не увидели.
57 Z1
 
04.03.14
18:40
(56) а что там смотреть.
зачти 51
ясно но же что надо писать в таблицу sql
а может быть даже к ней применить нормализацию
и индексы грамотно расставить.
58 МихаилМ
 
04.03.14
18:55
(57)

создавал тестовую таблицу в 1 000 000 строк и 50 колонок простых типов строка(20)

в режиме /3GB


скорее всего автор не типизирует колонки
59 Z1
 
04.03.14
19:00
(58) на таких объемах индексированная ТЗ даже с простыми полями уже значительно хуже чем sql таблица.
ну и ключевое слово в 57 - нормалицация
60 Mikeware
 
05.03.14
07:15
(58)(59) Ребяты, вы ж предлагаете мозгами поработать... а у ТС их нет...
61 VladZ
 
05.03.14
07:35
(0) Код нужно смотреть. Есть большая вероятность, что можно решить проблему оптимизируя код. Либо оптимизируя алгоритм работы. Что опять же ведет к изменению кода.
62 DrZombi
 
гуру
05.03.14
07:57
(51) Ты лучше поведай, что ты через ексель перегоняешь?
Для информационного баланса это исчерпывающая информация :)
63 varelchik
 
05.03.14
09:39
(62)ВО!
Чел дело говорит!
И вообще что это за такой екселевский файл что аж на 500 000 строк?
Да и какой придурок мог его навоять.
Явно опять таки из какой-то базы.
64 varelchik
 
05.03.14
09:41
Не проще ли прямо из 1С в то место вломится и взять что надо?
65 FenderDMB
 
17.03.14
07:10
(55)Доброго времени суток. Извините что пишу Вам в этой теме. Хотелось бы узнать Ваше мнение. Моя конфигурация 1С 7.7 Бухгалтерский учет. Столкнулся с проблемой больших файлов DBF, а именно файл 1SBKTTL равен по размеру 1.09 Гб. Собираюсь использовать Kernel3x, но у меня возник вопрос, при таком большом файле 1SBKTTL, файл 1SENTRY.DBF весит всего 400 Мб. читал на форумах, что такое не нормально, вот мне и интересно, а можно ли уменьшить 1SBKTTL? и в чем может быть причина что он стал таким емиким? Буду признателен за ответ.
66 Salimbek
 
17.03.14
09:02
(51) Если вопрос из (0) еще актуален, то я бы порекомендовал работать через 1sqlite. Создаешь свою базочку, туда льешь данные из Экселя, индексируешь и потом крутишь, как тебе вздумается.