v7: Формула в столбце табличной части документа #586974


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

В этой группе 1С