|
v7: Формула в столбце табличной части документа | ☑ | ||
---|---|---|---|---|
0
AL CAPONE
23.12.11
✎
15:58
|
Есть процедура автоматического заполнения строк документа, она довольно длительная. В табличной части документа есть колонка "Пиктограмма", с формулой ВернутьНомерПиктограммы().
Когда табличная часть уже заполнена, любое следующее действие по ручному удалению или добавлению строки приводит к пересчёту формулы ВернутьНомерПиктограммы() по всей таблице, а это страшно долго. Как можно выкрутиться, чтобы для новых или удалённых строк эта формула уже не вызывалась, а отрабатывала лишь 1 раз при первичном заполнении ? Ну или как вариант чтобы она отрабатывала, но только для текущей изменяемой строки, а не для всей табличной части ? |
|||
1
Эльниньо
23.12.11
✎
16:01
|
Что там за комп? 386-SX с 16 Мб ОЗУ?
|
|||
2
AL CAPONE
23.12.11
✎
16:02
|
(1)
комп нормальный, но в документе десятки тысяч строк, и каждая строка проверяет пиктограмму по ТЗ с ещё одним десяткой тысяч строк и 4-м условиям. |
|||
3
GLazNik
23.12.11
✎
16:03
|
(2) Может тогда имеет смысл не расчитывать номер пиктограммы постоянно, а расчитать раз, а затем хранить
|
|||
4
Джордж1
23.12.11
✎
16:04
|
НомерПиктограммы хранить в ТЧ, и рассчитывать только при необходимости
|
|||
5
viktor_vv
23.12.11
✎
16:04
|
(1) Каждый раз рисуют картинку через вызов фотошопа :).
А так добавь реквизит в табличную часть и заполняй при заполнении ТЧ. |
|||
6
AL CAPONE
23.12.11
✎
16:05
|
(5)
реквизитом выкрутиться было бы проще всего, но не хочу лишнего мусора в базе ) документ вводится довольно редко (4) а можно его хранить без реквизита ТЧ ? |
|||
7
viktor_vv
23.12.11
✎
16:05
|
(2) Насчет десяткОВ тысяч строк ты загнул, максимум штатно 1 десяток.
|
|||
8
viktor_vv
23.12.11
✎
16:06
|
Если религия не запрещает ВК, то вместо ТЗ индексированная таблица с индексом.
|
|||
9
Джордж1
23.12.11
✎
16:07
|
(6)Вам шашечки или ехать?
|
|||
10
GLazNik
23.12.11
✎
16:07
|
(6) если документ вводится достаточно редко, то "мусора" не будет. Всего лишь дополнительная колонка в таблице, которая редко используется. причем минимальной размерности
|
|||
11
Ёпрст
23.12.11
✎
16:10
|
(0) убери идентификатор у текстовой колонки
|
|||
12
AL CAPONE
23.12.11
✎
16:11
|
(8)
никогда с ними не работал ( (9) о_О ? (10) хотелось бы выкрутиться только правкой модуля документа без того, чтобы выгонять всех юзверей |
|||
13
AL CAPONE
23.12.11
✎
16:12
|
(11)
тоже не могу, я по идентификатору управляю её видимостью на форме ) |
|||
14
GLazNik
23.12.11
✎
16:19
|
(13) а может тогда ну её, эту пиктограмму? :)
|
|||
15
Ёпрст
23.12.11
✎
16:20
|
(12) turbomd.dll и выгонять никого не надо
|
|||
16
Джордж1
23.12.11
✎
16:21
|
(12)а юзвери тут причем?
// Вам надо выбирать или допреквизит или тормоза // Можно еще вспомогательную ТЗ использовать |
|||
17
Ёпрст
23.12.11
✎
16:21
|
а формула не для всех строк работает, а только для активной.
И лишь при открытии для всех, ежели назначен идентификатор колонки |
|||
18
AL CAPONE
23.12.11
✎
16:25
|
(14)
нельзя, юзер просит ) (15) да, пора бы уже поставить, а то подзадолбало всех просить выйти каждый раз (17) судя по времени тормозов отрабатывает для каждой строки дока, а не для активной |
|||
19
viktor_vv
23.12.11
✎
16:27
|
(17) Для всех видимых или для всех вообще которые есть в ТЧ ? Это я для себя уяснить.
|
|||
20
AL CAPONE
23.12.11
✎
16:27
|
(16)
эх, ладно, на этот раз добавлю реквизит ТЧ. Спасибо всем за помощь ! |
|||
21
Ёпрст
23.12.11
✎
16:32
|
(18) ошибаешься, вставь Сообщить(НомерСтроки) в формулу функции.
Если ты только принудительно форму не обновляешь каждый раз. |
|||
22
AL CAPONE
23.12.11
✎
16:40
|
(21)
попробовал, бегут с первой до последней строки все, принудительно форма нигде не обновляется ) |
|||
23
TeddySlaf
23.12.11
✎
16:42
|
ну, как вариант, оставить пересчет колонки пиктограммой в ПриОткрытии(), но в ТЧ завести еще одну колонку (пусть невидимую) с заполнением ее дублями из пиктограммы.
Затем в функцию вставить проверку на активность строки и на заполненность колонки-дубля: если уже заполнена, то дальше неперерасчитывать. как-то так. |
|||
24
viktor_vv
23.12.11
✎
16:45
|
(22) Это если есть идентификатор. Если идентификатора нет, то первый раз только для всех видимых строк. Потом только для текущей.
|
|||
25
AL CAPONE
23.12.11
✎
16:46
|
(24)
ответ в (13), к сожалению ... |
|||
26
AL CAPONE
23.12.11
✎
17:00
|
(24)
хотя попробую как вариант, обработка формулы для текущей было бы наилучшим выходом, ну а видимость стобца тогда фиг с ней ) пусть бедут видимым всегда ) |
|||
27
AL CAPONE
23.12.11
✎
18:07
|
Ёпрст3, viktor_vv, без идентификатора отрабатывает только для текущей строки и относительно недолго. Ещё раз спасибо за помощь !
|
|||
28
Tatitutu
23.12.11
✎
18:18
|
не подойдет ?
ВыполнятьФормулуТолькоПриИзменении(<?>); Синтаксис: ВыполнятьФормулуТолькоПриИзменении(<Режим>) Назначение: Установка режима выполнения формулы выбранного поля табличной части документа. Параметры: <Режим> - число: 1 - формула вызывается только при изменении значения поля, 0 - вызывается и при переходе между полями. Замечание: Доступ к методу возможен только в контексте Модуля формы через атрибут Форма. Подробнее см. в документации, глава 'Атрибуты и методы контекста Модуля формы' |
|||
29
Ёпрст
23.12.11
✎
18:20
|
(28) для текстовой колонки то ? :)
не катит |
|||
30
Tatitutu
23.12.11
✎
18:26
|
(29) про текстовую колонку это я понял
я имел ввиду другое (28) в колонку тч в нее формулу а текстовая колонка = .... |
|||
31
Torquader
23.12.11
✎
21:39
|
А если сделать таблицу значений, где каждой строке сопоставить номер пиктограммы и заглядывать в неё вместо того, чтобы что-то перерасчитывать.
А перерасчёт делать в ПриУдалении,ПриДобавление,ПриИзмененииПорядкаСтрок и т.п. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |