|   |   | 
| 
 | 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 | 
        А если сделать таблицу значений, где каждой строке сопоставить номер пиктограммы и заглядывать в неё вместо того, чтобы что-то перерасчитывать.
  А перерасчёт делать в ПриУдалении,ПриДобавление,ПриИзмененииПорядкаСтрок и т.п. | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |