Имя: Пароль:
1C
1С v8
Как перебрать строки таблицы формы?
,
0 Elf56
 
25.12.14
13:42
Всем доброго времени суток.

Имеется 1С:Предприятие 8.3 (8.3.5.1186) "Управление торговлей и взаимоотношениями с клиентами (CRM)", редакция 2.0 (2.0.2.5).

Стоит такая задача что по галочке на форме происходит пересчет всей табличной части документа. В таблице есть реквизит Номенклатура и на форме таблицы есть такой же реквизит. Пересчет по одной строке происходит без проблем при смене номенклатуры вызывается процедура

Процедура ТоварыНоменклатураПриИзменении(Элемент)

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

&НаКлиенте
Процедура осиПересчетКомплектующихВвалютеПриИзменении(Элемент)
    Для каждого ТекущаяСтрока Из Элементы.Товары Цикл
          ТоварыНоменклатураПриИзменении(ТекущаяСтрока.ТоварыНоменклатура);
    КонецЦикла;
    
КонецПроцедуры

Но выдает ошибку

{Документ.ЗаказКлиента.Форма.ФормаДокумента.Форма(9777)}: Итератор для значения не определен
    Для каждого ТекущаяСтрока Из Элементы.Товары Цикл

Как перебрать таблицу формы?

Всем заранее за ответ.
1 Elf56
 
25.12.14
13:44
Нашел в инете что можно вот так

Процедура КакПеребратьВсеСтрокиВТаблицеДокумента()
    Для каждого СтрТовар Из ВыбДокумента.Товары Цикл
        Сообщить("Номенклатура: "+СтрТовар.Номенклатура);
    КонецЦикла;
КонецПроцедуры

ВыбДокумента- реквизит на форме. То есть конкрентный выбранный документ.
Товары – табличная часть выбранного документа.


но что такое ВыбДокумента не могу понять ?
2 Defender aka LINN
 
25.12.14
13:45
(0) Таблица на форме просто выводит данные, которые находятся в реквизитах. Дальше продолжать?
3 antoneus
 
25.12.14
13:45
Зачем пересчитывать таблицу на форме? Туда же реквизиты ТЧ выводятся или нет? Вот ТЧ и пересчитывай.
4 Elf56
 
25.12.14
13:51
Мне просто нужно получить Элемент табличной части Товары на форме колонки ТоварыНоменклатура как это можно сделать ?
5 vicof
 
25.12.14
13:53
(4) Прочитать книжку "1с для чайников за 21 день".
Элементы.Товары.ТекущиеДанные
6 Любопытная
 
25.12.14
13:53
(4) а можно в картинках? У тебя ТЧ в ТЧ что ли?
7 vicof
 
25.12.14
13:54
(6) нет, автор не знает, что такое запятая.
8 Elf56
 
25.12.14
13:55
ТоварыНоменклатура это поле элемента формы табличной части Объект.Товары.Номенклатура
9 Elf56
 
25.12.14
13:57
Делаю Для каждого ТекущаяСтрока Из Элементы.Товары.ТекущиеДанные Цикл


такая же ошибка
10 Любопытная
 
25.12.14
13:57
(8) Так. Ты хочешь, чтобы при установке определенной галочки пересчитывалась вся ТЧ? Ну и пересчитывай, в чем проблема?
11 Любопытная
 
25.12.14
13:58
(9) потому что ТекущиеДанные это уже строка. А надо Объект.Товары обходить, а не элементы на форме
12 Elf56
 
25.12.14
14:00
Хорошо если я сделаю

Для каждого ТекущаяСтрока Из Объект.Товары Цикл

Как мне отсюда получить Элемент? формы? реквизита Номенклатура?
13 Любопытная
 
25.12.14
14:00
(12) Зачем?
14 vicof
 
25.12.14
14:01
(12) Автор, зачем тебе "элемент? формы? реквизита Номенклатура?"
15 Любопытная
 
25.12.14
14:01
(12) ТоварыНоменклатураПриИзменении(ТекущаяСтрока.ТоварыНоменклатура) - вот сюда попадает уже Номенклатура. Прям ссылка. Никаких элементов
16 Elf56
 
25.12.14
14:01
17 Elf56
 
25.12.14
14:01
на картнику
18 vicof
 
25.12.14
14:01
А, ну щас все стало ясно
19 Любопытная
 
25.12.14
14:02
20 Elf56
 
25.12.14
14:03
если я вот так делаю

Для каждого ТекущаяСтрока Из Объект.Товары Цикл
        ТоварыНоменклатураПриИзменении(ТекущаяСтрока.ТоварыНоменклатура);
    КонецЦикла;

то как раз процедура ТоварыНоменклатураПриИзменении ругается что

{Документ.ЗаказКлиента.Форма.ФормаДокумента.Форма(9778)}: Поле объекта не обнаружено (ТоварыНоменклатура)
        ТоварыНоменклатураПриИзменении(ТекущаяСтрока.ТоварыНоменклатура);
21 vicof
 
25.12.14
14:07
(20) ТоварыНоменклатураПриИзменении(ТекущаяСтрока.Номенклатура);

Ты когда уже до 80 уровня дорастешь?
22 1976vas
 
25.12.14
14:11
(20) ТоварыНоменклатураПриИзменении() - это твой метод или такой в 1с есть?
23 1976vas
 
25.12.14
14:12
Общий модуль создавал?
24 vicof
 
25.12.14
14:13
(22) Предполагаю, что это событие модуля формы при изменении номенклатуры в ТЧ.
25 Elf56
 
25.12.14
14:13
все вот так заработало

Для каждого ТекущаяСтрока Из Объект.Товары Цикл
        ТоварыНоменклатураПриИзменении(ТекущаяСтрока.Номенклатура);
    КонецЦикла;
26 1976vas
 
25.12.14
14:13
(24) Я тоже
27 Elf56
 
25.12.14
14:14
только я не могу понять почему элемент формы который требует процедура ТоварыНоменклатураПриИзменении то же самое что и Объект.Товары.Номенклатура
28 Chameleon1980
 
25.12.14
14:15
(27) думаем и удивляемся
29 Elf56
 
25.12.14
14:17
так кто то советовал какую то книжку прочитать по этому поводу еще раз можно )))
30 vicof
 
25.12.14
14:18
(29) Ну ты охренел. Тему сложно посмотреть?
31 Chameleon1980
 
25.12.14
14:18
куча книг
Закон Брукера: Даже маленькая практика стоит большой теории.