Добрый день всем!
8.2 ОФ

Есть табличная часть. В ней реквизит "Способ".

Задача следующая:
1) При открытии если заполнены значения Номенклатура и Серия, то обращаюсь к регистру где проставляются "Способ". Дело в том, что "Способ" может меняться постоянно в течении дня. Соответственно каждый раз надо считывать и подставлять текущие значение из регистра.

Пытался делать "при выводе строки" и "при получении данных"
Но! Когда данных в документе много, то начинает дико тормозить из-за постоянного прохождения цикла по тч и формирования запроса с последующим проставлением в строках.

Собственно, как можно оптимизировать ?
---
Прекрасно. Обновили серию в строке - сразу же обновили способ в строке (есть такой обработчик события "ПриИзменении", ага). Провели подбор для ТЧ - обновили один раз ТЧ после подбора (как и при открытии).
Изменения необходимо производить тогда, когда изменились условия для их определения, а не когда пользователь пошевелил мышкой.
---
Я бы все таки остановился на "при получении данных" – для ТЧ это не накладно.
(1) начинает дико тормозить из-за постоянного прохождения цикла по тч
Сам по себе цикл тормоза вызывать не может – скорее всего что-то не так делаете. Покажите код, который у вас есть.
---
Да там дело в запросе думаю и сделано было при выводе строки. А это я так понял происходит часто и даже попал на ошибку с SQL.
Возможно при полученни данных меньше раз отрабатывает.

А механизм простой:

Если значзаполнено номенклатура и серия, то
запрос, туда передаю номенклатуру серию и получаю "Способ".
Далее проверка если Стр.Способ <> Выборка.Способ то подставляем и этотобъект.Записать.
Собственно всё.
---
ЗАПИСАТЬ()???
---
Да, спалился ) В нем дело
---
Да дело уже не в "тормозит", дело в "зачем?"...
---
Обновить один раз при открытии и успокоиться.
---
Дело в том, что пользователю необходимо видеть "Способ" например после того как он добавил позиции из типового "Подбора". Или изменил серию номенклатуры и должен подставиться соответствующий "Способ".
---
Прекрасно. Обновили серию в строке - сразу же обновили способ в строке (есть такой обработчик события "ПриИзменении", ага). Провели подбор для ТЧ - обновили один раз ТЧ после подбора (как и при открытии).
Изменения необходимо производить тогда, когда изменились условия для их определения, а не когда пользователь пошевелил мышкой.
---
А как же при открытии ?
И как обработать после подбора ?
---
обработать после подбора ?
есть событие "Обработка выбора" или "ОбработкаОповещения"
там добавляется строки из подбора. вот там и заполните свою колонку
---
При открытии у вас есть обработчик ПриСозданииНаСервере().
---
А если предыдущий документ откроют и там необходимо увидеть способ ?
---
То есть вы на голубом глазу готовы перезаписывать старые документы при их открытии? Только для того чтобы "узнать" предполагаемый способ?
---
Считаете это лишним ?
---
Считаю это профессиональным преступлением и абсолютной профессиональной некомпетентностью. Автор не понимает смысла понятия "Документ 1С"...
---
А какой смысл тогда добавить "ПриСозданииНаСервере" показ "Спосообов", если тч будет пустая ?
---
После того как вы сказали о том, что автоматически записываете документ при выводе строки - уже никакого.
В нормальной ситуации обновление данных при открытии документа имеет смысл например при заполнении ТЧ на основании другого документа, или при его загрузке из внешнего источника и т.д.
---
Это ошибка,а не панацея. Сделано было так, чтобы у прошлых документов проставился статус и не более. Просто забыл убрать.
---
Возможно в "ПриОткрытии" добавить следующий код:

Если это Не Новый Тогда
ПоказатьСпособы();
Конецесли

?
---
Возможно все. И даже это.
---
т.е. Способ хранится во внешнем регистре и меняется независимо от документа? И хочется чтобы все это было видно оперативно в т.ч. документа?
---
Дичь, как она есть, чо.
---
Мне кажется, тут изначально задача не оптимально решена.
Что за способ то? Какой его смысл?) На что он влияет? А если постоянно меняется, то как быть с прошлыми документами? Может этот способ надо было сохранять прям в документе, а не каждый раз при открытии, когда документ уже проведен?

По теме уже сказали, что читать заполнять все способы в момент открытия формы, ну и при только изменении строки Номенклатуры, серии). Уж точно не при выводе.
---
Более того, если способ не совпадает с сохраненным ранее, то документ ещё и записывается. Сразу.
Прикинь? Клёвая закидушка при открытии, да?
---
Круто. То есть если документ не открывать, то он так и будет болтаться без статуса как гуано в проруби...

Спорит ещё...
---
Так и выходит исходя из ваших советов
---
Исходя из моих советов выходит то, что не стоит заниматься херней, например актуализацией статусов при открытии документа. А стоит подобрать другой инструмент для поддержания актуальности информации, чтобы "не болталось гуано в проруби".
Я вам указываю на дыру - что если не открывать документ, то актуальность не изменится.
Нормальный спец из этого сделает вывод, что если у вас там где-то что-то в регистре изменится, то вам придется ВРУЧНУЮ открывать ВСЕ документы, для их актуализации (даже трехлетней давности). Вместо того, чтобы реализовать другой инструмент актуализации, не требующий вот этой вот херни с открыванием.
Это я ще не говорил про закрытые периоды и влияние данных документа на его движения...

Аргументы против есть?