#0
by EuVod
Чего-то в поиске ничего путного не нашел. Итак имеем документ с большой таб.частью (порядка 2-3 тыс. строк). В нем два текстовых поля, которые соответственно как-то вычисляются. При любом изменении в этом документе происходит пересчет всех таких полей для каждой строки документа. Это тормозит работу. И я чего-то не соображу, каким образом можно организовать пересчет таких полей, например, по кнопке – без автообновления. Я так понимаю, что непосредственно указывать из программы значение текста в строке нельзя, а функция, вызываемая из формулы данной колонки, будет отрабатывать всегда. Есть какой-то выход, кроме как эмуляция ТЧ через ТЗ? Я делаю «лист инвентаризации» - типа сидят 4 оператора и забивают каждый в свой лист результаты разных пересчетчиков – надо, чтобы они видели суммарный результат своей работы (по факту записанных листов). Видимо придется «сводную ведомость» выносить в виде ТЗ на отдельную закладку. (две сводных колонки в ТЧ – конечно хорошо, но тормозит).
#2
by leosoft
Вряд ли им надо просматривать все 3000 расчетных колонок!Можно их убрать и сделать кнопку, по которой посчитаютсяитоги и будут показаны на экране.
#3
by VZ
"Я так понимаю, что непосредственно указывать из программы значение текста в строке нельзя" - неправильно понимешь."функция, вызываемая из формулы данной колонки, будет отрабатывать всегда" - некоторые включают опцию "только при изменении". Но это редкие экземпляры, читающие мануалы."При любом изменении в этом документе происходит пересчет всех таких полей для каждой строки документа" - молодец, что сумел добиться этого. Помедитируй над - возможно, получишь желаемое.
#4
by Vlad55
Я думаю что Вы лезете "через печь в двери"Вряд ли что из этого получится."Делай проще дурак"
#5
by EuVod
Свой текст всегда понятен – попробую разъяснить. (хотя я уже «переделал проще»).В ТЧ на форму документа добавляю реквизит типа «текст» (пусть с идентификаторм «Текст1»).под словами «нельзя непосредственно указывать из программы значение текста» я имел в виду, что не могу присвоить значение в стиле Текст1 = «1» при выбранной строке ТЧ, чтобы именно в этой строке проставилось нужное мне значение;Буду признателен уважаемым донам за разъяснение, как я могу отображать в ТЧ документа нужные мне значения (зависящие от номера строки) – не реквизиты. Я умею только через текстовое поле, в свойстве «формула» которого прописана функция возвращающая нужное мне значение. Я был бы вполне счастлив, если бы мог эта функция не вызывалась всякий раз (а формулы в текстовых поля пересчитываются на форме всегда, разве нет?).Метод ВыполнятьФормулуТолькоПриИзменении – не сильно поможет – ибо мне надо чтобы перевычисление вообще происходило по разовому нажатию кнопки, а ни при каждом изменении любого реквизита. Если я применяю этот метод к собственно вычисляемому текстовому полю – это ничего не дает.
#6
by КонецЦикла
Вызывает сомнение необходимость что-то долго вычислять для 3000 элементовИх кто-то видит одноврененно? Надо ли вообще что-то вычислять?Можно попробовать показывать информацию для текущей строки, внизу
#7
by Oops
2 В памяти ТЗ.При обращении проверятся "вычисляли уже для этого параметра/строки?" Да-берём из ТЗ (как из кэша), Нет-вычисляем и кладём в ТЗ
#8
by EuVod
мерси, но сама фукнция очень быстрая, но сам факт 3000*2 = 6000 вызов - ~0.8 сек. операторы набивают данные в стрки документа существенно быстре и не могут ждать. (буду ошибки). Я думал будет пересчитываться только то, что помещается в отображаемую область (как происходит с формами списков справочника) но вычисляеются значения текста для всех строк.В общем сводную ТЗ я вынес на отдельную закладку, текстовый колонки убрал.
#9
by Uho
все не осилил, но ты ж сам говоришь через кнопку сделать:в текстовых полях пишешь?(Автообновление=1, считаем, несчитаем);а в кнопке присваивай значение переменной Автообновление
#10
by Oops
2 Что-то ты ошибаешься. "пересчитываться только то, что помещается в отображаемую область" - так и есть.
#13
by EuVod
разершение к сожалению не такое... но отладчик показывает, что функция вызывалась именно то количество раз сколько есть строк в ТЧ.
#18
by EuVod
Было примерно так:ПолучитьСводнПодсчет("Ост") – в формуле текстовой колонки.КонецФункции // ПолучитьСводнПодсчетВ поле «формула» некоторых других реквизитов тоже есть свои вызовы процедур которые устанавливают значения реквизитов в той же строке. - шутки-шутками, но релиз 23.
#20
by Oops
2 попробуй: Кстати, как вариант - использовать общую (для модуля) переменную и считать только 1 раз на строку (как в ТиС). Ещё вопрос - что делаешь когда строки удаляют/меняют?
#21
by EuVod
строки закреплены жестко - это остатки по регистру, определенным образом упорядоченные; изменение порядка/добавление/удаление - не предусмотрены и заблокированы.
#22
by Uho
что-то я не пойму, ты не на один из вариантов не дал своего согласия/несогласия (желательно, аргументированного)
#23
by EuVod
Честно говоря перестал экспериментировать. Сейчас немного не до того.Из обсуждения я понял что1. не должна ф-ция из формулы текстового столбца вызываться больше чем надо (чем строк на экране), почему вызывается - не знаю.2. других способов заполнять текстовое поле ТЧ кроме как возвращать из прописанной ф-ции нужное значение нет (я так и думал – но мало ли).3. Вариант – не уловил, что имеется в виду, надо будет мне глянуть в ТиС (в какое место?). Расчет мне надо время от времени обновлять, чтобы подхватывались изменения внесенные другими пользователями в свои листы. Да ив любом случае – откуды бы я не заполнял текстовые столбцы, основное время уходит из-за непоняток с п.1.Выводить в подвал для текущей строки - очевидно быстро - но в данном случае не удобно: пользователь не согласится.Так что я вывел свод на отдельную закладку – соответсвенно в табличной части не осталось вычисляемых колонок, а свод пересчитывается при выборе его закладки. (в любом случае это разовая операция).Всем спасибо большое за участие и попытку разобраться.
#24
by EuVod
кстати попутный вопрос - почему если размещаем ТЗ в форме документа, то когда на ней сфокусированы, текстовый поиск (бинокль со строкой поиска и стрелки "вперед-назад") - недоступен. В форме обработки-отчета поиск по ТЗ нормально работает...
#26
by Oops
2(23.3) ТиС, Спр.Номенклатура, ФормыСписка-ДляПодбораСм. колонку "Остаток". Там вызывается "ПолучитьОстатокЗаполнитьЦену", а в след. колонках уже используется вычисленное в функции "ТекОстатокПоФирме" и "ЦенаТекНоменклатуры" и т.п.Т.е. на две (и более) вычисляемых колонки - один вызов функции.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Не отображается текстовое поле на форме...
- Как при нажатии на флажок добавлять текстовое поле в форме?
- СКД. Вычисляемое поле в вычисляемом поле
- 8.2 Текстовое поле ввода. Кнопка выбора.
- 82 Самописная. Как в поле построителя отчета поместить вычисляемое поле
- Заполнение ТЧ документа из ТЧ другого документа или заполнение тч и запроса
В этой группе 1С
- программно установить значение флажка на форме
- Облагается ли компенсация за использование автомобиля НДФЛ?
- v7: Как: Поиск документа в журнале запросом на 1с++
- Вылетает 1С SQL при групповом перепроведении/восстановлении границы
- Вставка символов например Диаметр ,Градус в наименованиях справочников???
- Перенос Тис в Бух проблема по контрагентам!!!
- как программно записать реквизит документа не записывая весь документ
- Камин 2_034. Компенсация отпуска в новом помощнике по среднему
- Как найти Hasp Divice Driver не ниже 4.98 и Hasp License Manager не ниже 8.30?
- Видеорегистратор Infinity DVARS 1642
- Дилерский договор с фирмой 1С.
- Как сделать так,чтобы в макете при печати новой страницы шапка повторялась ??
- ПУБ + продажа в розницу?
- Конвертация периодических реквизитов?
- Суммированный учет рабочего времени в ЗУП
- Один РКО и несколько оснований
- Нет доступа на редактирование конфигурации
- Помогите перенести справочник контрагентов из Торговли 7 в Торговлю 8
- Как средствами TSQL прочитать информацию о файле бэкапа?
- Тестирование базы