7.7 Вычисляемая колонка в табчасти формы документа

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем nata0303, 20 мар 2013.

  1. Vlan
    Offline

    Vlan Гость Гость

    СоздатьОбъект в теле функции или один раз создаете?
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    и это, и лишние присвоения, и лишние сравнения (лучше сравнивать объекты). Но это капля в море. Даст прирост в скорости только на больших объемах. А здесь только штук 10 строк. Т.е. 10 вызовов.
    Итого - все вышесказанное не даст существенного прироста
  3. Vlan
    Offline

    Vlan Гость Гость

    Я тоже не вижу ничего, что бы могло так тормозить скорость выполнения функции. Сколько же элементов перебирается в процессе? Пробовали на базе в сети или локально так же тормозит?
    Ну, как временную меру до выяснения, я бы попробовал такой вариант, если не хочется прописывать много ненужных элементов: добавил бы колонку Флаг. В ней по-умолчанию пишем 0. "Нужный" реквизит меняет Флаг на 1, а функция проверяет его значение перед выполнением. При добавлении новых незначащих реквизитов на Флаг это не повлияет, у каждой строки собственная переменная, все довольны. :)
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Менять документ НЕЛЬЗЯ. Пост №7. Раз сильные тормоза - работают по сетке. На терминале такое может быть только на дохлой машине. Единственный вариант спасения - ТЗ
  5. TopicStarter Overlay
    nata0303
    Offline

    nata0303

    Регистрация:
    20 мар 2013
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Именно на этом варианте и остановились. Функция выполняется по флагу, сама изменяет его на 0 при отработке последней строки. Это в момент открытия. Кроме того в процедуре ПриНачалеРедактированияСтроки во временную переменную передаем товар из редактируемой строки (при вводе новой строки значение будет пустым), затем в процедуре ПриОкончанииРедактированияСтроки проверяем на равенство этой переменной введенному в строке товару и задаем Флаг=1 только если товар изменился (для новой строки просто "появился"). Таким образом пересчет колонки выполняется только при открытии, при вводе новой строки и редактировании имеющейся. Что и требовалось доказать. :yahoo:

    Спасибо всем. Успехов, новых открытий и побед!!!!

Поделиться этой страницей