8.х Групповая обработка строк табличной части накладной

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем atm779, 17 сен 2009.

  1. TopicStarter Overlay
    atm779
    Offline

    atm779 Опытный в 1С

    Регистрация:
    19 авг 2009
    Сообщения:
    133
    Симпатии:
    0
    Баллы:
    26
    "Управление торговлей", редакция 10.3 (10.3.8.9)
    Пытаюсь написать метод, который пробежится по всем строкам табличной части накладной (ЭлементыФормы.Товары) и в каждой строке пропишет ручную скидку = 11 %

    Код:
    		выборк = ЭлементыФормы.Товары;	
    Для Каждого стр из выборк Цикл 
    стр.РучнаяСкидка = 11;
    КонецЦикла;
    
    Как правильно описать этот код?
  2. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!

    Код:
    Процедура ЗаполнитьРСкидкуТЧТовары(СсылкаНаДокумент, Скидка)
    
    ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект();
    
    // Проверка значения скидки
    Если ТипЗнч(Скидка) <> Тип("Число") Тогда
    Возврат;
    КонецЕсли;
    
    // Проверка на то что объект существует
    Если ДокументОбъект = Неопределено Тогда
    Возврат;
    КонецЕсли;
    
    Товары = ДокументОбъект.Метаданные().ТабличныеЧасти.Найти("Товары");
    
    // Проверка на наличие таблицы
    Если Товары = Неопределено Тогда
    Возврат;
    КонецЕсли;
    
    // Проверка на наличие реквизита
    Реквизит = Товары.Реквизиты.Найти("ПроцентСкидкиНаценки")
    Если Реквизит = Неопределено Тогда
    Возврат;
    КонецЕсли;
    
    // Если таблица существует тогда
    
    Для каждого СтрокаТабличнойЧасти ИЗ ДокументСсылка.Товары Цикл
    
    СтрокаТабличнойЧасти.ПроцентСкидкиНаценки = Скидка;
    
    // Рассчитать реквизиты табличной части.
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект);
    ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект);
    
    конецЦикла;
    
    КонецПроцедуры
    
    
    После определения метода можете в него передавать любые значения объектов, если у объекта определены ТЧ и реквизит тогда реквизит будет перезаписан. Удачи!
  3. TopicStarter Overlay
    atm779
    Offline

    atm779 Опытный в 1С

    Регистрация:
    19 авг 2009
    Сообщения:
    133
    Симпатии:
    0
    Баллы:
    26
    все хорошо, только когда компилятор доходит до строки
    Код:
     
    Для каждого СтрокаТабличнойЧасти ИЗ ДокументСсылка.Товары Цикл
    СтрокаТабличнойЧасти.ПроцентСкидкиНаценки = Скидка;
    
    
    выдает ошибку
    Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента(3784)}: Итератор для значения не определен

    правда в моем контексте этот код выглядит как
    Код:
     
    выборка = ЭлементыФормы.Товары;
    Для каждого СтрокаТабличнойЧасти ИЗ выборка Цикл
    СтрокаТабличнойЧасти.ПроцентСкидкиНаценки = Скидка;
    
    
  4. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Воспользуйтесь отладчиком и проверте действительно ли Вы пытаетесь пройтись в цикле по табличной части "Товары"
    Код:
    выборка = Товары; - не ЭлементыФормы.Товары так как это уже не табличная часть, а табличное поле.
    Для каждого СтрокаТабличнойЧасти ИЗ выборка Цикл - цикл по коллекции табличной части
    СтрокаТабличнойЧасти.ПроцентСкидкиНаценки = Скидка;
    КонецЦикла;
    
    

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