8.х Программное обновление значений ТабличногоПоля, которые не являются данными

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Айболит77, 13 янв 2010.

  1. TopicStarter Overlay
    Айболит77
    Offline

    Айболит77

    Регистрация:
    13 янв 2010
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    В табличное поле добавлена колонка, в которую для каждой строки нужно рассчитать и поставить значение. (Колонка не является колонкой табличной части документа, т.е. данными.)
    Для этого в событие ПриВыводеСтроки этого ТабличногоПоля вписан расчет нужного значения по текущей строке и запись в нужную ячейку через ОформлениеСтроки:

    Процедура ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    РасчетноеЗначение=ФункцияРасчетаЗначения(ДанныеСтроки.Товар);
    ОформлениеСтроки.Ячейки.<НазваниеКолонки>.УстановитьТекст(СокрЛП(РасчетноеЗначение));
    КонецПроцедуры

    Делать нужную колонку данными нет смысла, т.к. данные хранятся в регистре, хранить их ещё и в документе как-то некрасиво.

    "Неудобство" в том, что расчетные значения достаются из регистра и перед подстановкой их в ТабличноеПоле уже имется ТаблицаЗначений, в которой столько же строк что и в табличной части. Не говоря уже о том, что я значения для всех строк получаю столько раз сколько у меня строк. Мне это не нравится.

    Проще было бы перебрать все строки и поставить значения в ячейки, но для НЕ данных не знаю как это сделать, кроме как способ выше.
    Подскажите, пожалуйста, кто знает, как это сделать правильно.
  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    1.
    Не совсем понял концепцию Вашей разработки, и удостовертесь что создаваемая Вами база соответствует трём нормальным формам, иначе все Ваши труды будут напрасны.
    2. Не используйте процедуры ПриВыводеСтроки, зацикливание Вас вряд ли устроит.
    3. Напишите процедуры перерасчета строоки табличного поля, вызывайте её при открытии формы документа в цикле для каждой строки.
    4. При изменении строки проверяйте, какие колонки изменились (по имени колонок), если изменились ключевые колонки вызывайте процедуру (ранее написанную) для перерасчета значения строки и передавайте в эту процедуру саму строку.
    Как результат, у Вас добавляется одна процедура, небольшое изменение в двух предопределённых процедурах, и ни одной лишней итерации.
  3. TopicStarter Overlay
    Айболит77
    Offline

    Айболит77

    Регистрация:
    13 янв 2010
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Добрый вечер !
    Спасибо за Ваш ответ
    проблема у меня именно с перебором строк табличного поля:
    В тек. строке не имею доступа к моему значению в колонке, так как это значение не является данными, я просто добавил колонку в ТабличноеПоле
    я ищу и не могу найти как пройти все строки ТабличногоПоля и обратиться к нужным мне ячейкам, если они не являются данными
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Или ПриВыводеСтроки или ПриПолученииДанных - других путей у Вас нет.
  5. TopicStarter Overlay
    Айболит77
    Offline

    Айболит77

    Регистрация:
    13 янв 2010
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Спасибо !
    Хотя ПриПолученииДанных обрабатываются те строки, что будут выводиться на экран, это мне подходит больше чем ПриВВодеСтроки

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