|
Очистка временной таблицы хранимой в переменной | ☑ | ||
---|---|---|---|---|
0
Eugeneer
23.08.22
✎
16:24
|
Есть процедурка с запросом.
В этом запросе используется передаваемая ТЗ. ТЗ передается параметром. Сама ТЗ временная - в нее в свою очередь выгружается ТЧ объекта, так как в запрос ТЧ обработки передать невозможно без выгрузки. ТЧ может быть огромной - десятки тысяч строк. Процедурка делает некий запрос, потом там выборка идет и прочее... Есть смысл очищать ТЗ после выполнения запроса. Дальше она нафиг не нужна. А как я понимаю пока переменная с ТЧ есть в процедуре, то это данные в памяти которые бесполезно висят. |
|||
1
Волшебник
23.08.22
✎
16:27
|
Не просто в памяти. Ещё на сервере место на диске занимают.
|
|||
2
Eugeneer
23.08.22
✎
16:30
|
а как ее лучше очистить. так ТЗ.
или сделать типа ДанныеПоиска = Неопределено; |
|||
3
Конструктор1С
23.08.22
✎
16:34
|
Перестань йухнёй страдать. Тупо обходи ТЧ в цикле и ищи что надо
|
|||
4
H A D G E H O G s
23.08.22
✎
16:35
|
(3) А вот и спецы программирования подтянулись.
|
|||
5
bolobol
23.08.22
✎
16:35
|
Надёжнее так:
Масс= новый Массив; Для каждого СтрТЗ из ТЗ Цикл Масс.Добавить(СтрТЗ); КонецЦикла; Для каждого ЭлМасс из Масс Цикл ТЗ.Удалить(ЭлМасс); КонецЦикла; |
|||
6
СеменовСемен
23.08.22
✎
16:36
|
пока процедура не закончится сборщик все равно не запустится
|
|||
7
bolobol
23.08.22
✎
16:37
|
Можно ещё добавить, для надёжности: ЗначениеВстрокуВнутр или ХМЛ, а затем - всё удалённое в ЗаписьЖурналаРегистрации
|
|||
8
Kassern
23.08.22
✎
16:37
|
(0) В запросе можно (а иногда и нужно) уничтожать временные таблицы
|
|||
9
bolobol
23.08.22
✎
16:38
|
(8) ...УНИЧТОЖИТЬ &ТЗ
|
|||
10
Fynjy
23.08.22
✎
16:39
|
Евгений! Пора на завод! Слесаря сейчас в цене!
|
|||
11
Kassern
23.08.22
✎
16:39
|
(0) "так как в запрос ТЧ обработки передать невозможно без выгрузки" - кто вам такое сказал? ТЧ отлично передается во временную таблицу запрос, а вот коллекция формы нет)
|
|||
12
Конструктор1С
23.08.22
✎
16:40
|
(4) что, тоже любитель понапрягать сервер и БД без надобности?
|
|||
13
polosov
23.08.22
✎
16:49
|
(0) Бред какой-то.
|
|||
14
Eugeneer
23.08.22
✎
16:49
|
(8) это не запрос. а таблица для запроса. Я уже писал.
ТЗ в которую выгружается ТЧ для передачи в сам запрос. |
|||
15
Конструктор1С
23.08.22
✎
16:50
|
(14) запросом-то чего делаешь?
|
|||
16
Eugeneer
23.08.22
✎
16:50
|
(11) " ТЧ отлично передается во временную таблицу запрос"
да нунах. И как ты ее передашь? типа Объект.ТабличнаяЧасть?)) |
|||
17
Eugeneer
23.08.22
✎
16:51
|
(15) а там еще все сложнее. потом с этой ТЗ еще происходят всякие соединения и прочее. которое уже в результат запроса идет.
|
|||
18
Garykom
гуру
23.08.22
✎
16:59
|
(16) Ты совсем?
Ссылку на объект передай и в запросе используй прямое обращение к ТЧ объекта |
|||
19
СеменовСемен
23.08.22
✎
17:00
|
(12) а как еще можно по реквизиту ссылки найти например?
|
|||
20
Garykom
гуру
23.08.22
✎
17:00
|
(17) Маня у тебя просто запросы кривые...
|
|||
21
СеменовСемен
23.08.22
✎
17:01
|
(18) там же загрузка из ексель, какие ссылки? это же наверняка тч обработки
|
|||
22
Kassern
23.08.22
✎
17:01
|
(16) "И как ты ее передашь?" - Легко и просто передам.
типа Объект.ТабличнаяЧасть?)) - смешно тут только то, что вы не зашли в отладку и не посмотрели какой тип у данной конструкции. А я ведь явно указал, что коллекции форм нельзя передавать в запрос. Вот пример для ТЧ. РеквизитФормыВЗначение("Объект").ТЧ - В этом случае тип будет табличная часть. |
|||
23
Eugeneer
23.08.22
✎
17:02
|
(18) обьект - обработка)))))
|
|||
24
СеменовСемен
23.08.22
✎
17:02
|
(22) а сколько памяти съест этот объект?
|
|||
25
Kassern
23.08.22
✎
17:04
|
(18) Это ТЧ обработки, судя по (0) Данные в ней не хранятся в базе. Поэтому обращение по ссылке тут не в тему.
|
|||
26
Kassern
23.08.22
✎
17:05
|
(24) здесь вопрос не в памяти, а в утверждении "ТЧ обработки передать невозможно без выгрузки"
|
|||
27
СеменовСемен
23.08.22
✎
17:06
|
(26) можно то можно, но будет ли выигрыш перед ТЧ.Выгрузить()
|
|||
28
Конструктор1С
23.08.22
✎
17:07
|
(24) сколько? Мегабайт наберется?
|
|||
29
Garykom
гуру
23.08.22
✎
17:08
|
(23) Используй СКД
|
|||
30
Garykom
гуру
23.08.22
✎
17:08
|
(27) Не будет.
|
|||
31
СеменовСемен
23.08.22
✎
17:08
|
(28) и гигабайт вполне может быть
|
|||
32
Конструктор1С
23.08.22
✎
17:10
|
(31) чего в объекте обработки может быть на гигабайт?
|
|||
33
Garykom
гуру
23.08.22
✎
17:10
|
Но ТС изначально пошел по неправильному пути.
Ибо: 1. Запросы в 1С тормозные, особенно передача больших данных снаружи в них 2. Есть другие СУБД (sqlite) в которых запросы быстрые 3. Получить данные из 1С и выкинуть во внешнюю СУБД достаточно быстро |
|||
34
СеменовСемен
23.08.22
✎
17:10
|
(332) прайс на несколько сот тысяч позиций
|
|||
35
Garykom
гуру
23.08.22
✎
17:11
|
(33)+ Поэтому надо переписать на внешнее решение эту МегаХрень
|
|||
36
Kassern
23.08.22
✎
17:11
|
Блин вопрос о "ТЧ может быть огромной - десятки тысяч строк. " - это ерунда для 1с. Хоть как ты ее пихай.
|
|||
37
Garykom
гуру
23.08.22
✎
17:12
|
(36) Десятки тысяч фигня
Проблемы когда сотни тысяч и миллионы |
|||
38
Kassern
23.08.22
✎
17:12
|
(37) я про тоже, обсуждает сферических коней в вакууме, а у ТС какие-то жалкие десятки тысяч)
|
|||
39
Kassern
23.08.22
✎
17:13
|
*обсуждаем
|
|||
40
Eugeneer
23.08.22
✎
17:28
|
(38) да жалки то жалкие)) и обработка то летает даже со скоростью звука)))
На нормальном железе, но есть особо бедные клиенты))) У которых память забивается))) А глянешь что за сервак - так там железо 10-15 летней давности. Им каждая копейка памяти ценна. |
|||
41
Eugeneer
23.08.22
✎
17:30
|
Но как минимум лишняя чистка ТЧ точно не помешает внутри процедуры. Чем ждать конца ее окончания.
Кстати ТЧ всякие и прочее - забивают прилично память. Я даже не понимаю почему 1С так сильно жрет памяти на таблицах в 100к и более. |
|||
42
Eugeneer
23.08.22
✎
17:31
|
у меня там как раз после запроса выборка результата запроса идет. И таблица нафиг не нужна которая в запрос шла.
Поставил короче назначение переменной = Неопределено; После выполнения запроса. |
|||
43
Eugeneer
23.08.22
✎
17:55
|
Хм.....
Короче что сделал. Перенес процедуры в глобальник. В качестве параметра передаю ТЧ (не путать с ТЗ). И в процедуре глобальника сделал в передачу запроса напрямую переменную параметра. (убрал временную ТЗ в которую выгружалась ТЧ)..... И нифига не заругалось. Т.е работает без этой лишней таблицы, в которую ранее выгружал. СТРАННО то - что когда процедура была в модуле обработки - не давало передавать в запрос ТЧ обработки. тупо ругалось. |
|||
44
Конструктор1С
23.08.22
✎
18:31
|
(34) у ТЧ ограничение 100 тыщ строк. Но даже сто тыщ это далеко не гигабайт. И полагаешь, те же данные, запакованые в данные формы, будут принципиально меньше весить?
|
|||
45
Eugeneer
23.08.22
✎
18:48
|
(44) ограничение там на колонку НомерСтроки. не дает больше 99 999.
Но фактически можно пихать сколько угодно. Просто у всех чт о больше будет номер строки 99 999.... 1С не понять. 2022 год а они там хурней страдают, не могут нормально сделать. |
|||
46
Конструктор1С
23.08.22
✎
19:15
|
(45) тебе точно надо объединится с Г1Сом
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |