Имя: Пароль:
1C
1С v8
не видит поле
,
0 Dmitry017
 
30.03.13
19:35
Хочу обработать событие при изменении табличной части.
&НаКлиенте
Процедура ТоварыПриИзменении(Элемент)
   // Вставить содержимое обработчика.   ,
       // Вставить содержимое обработчика.
   СуммаДокумента = 0;
   Для каждого СтрокаСумма Из Элементы.Товары.Сумма Цикл
       СуммаДокумента = СуммаДокумента + СтрокаСумма;
   КонецЦикла;

КонецПроцедуры





Ругается и пишет, что нет поля Сумма

{Документ.ПоступлениеТоваров.Форма.ФормаДокумента.Форма(69)}: Поле объекта не обнаружено (Сумма)
   Для каждого СтрокаСумма Из Элементы.Товары.Сумма Цикл

а оно на самом деле есть! Вот скрин
http://i48.fastpic.ru/big/2013/0330/86/2866004004de689f98ed2dd3325fd686.png
1 unkairosed
 
30.03.13
20:06
СуммаДокумента = Объект.Товары.Итог("Сумма")
2 Dmitry017
 
30.03.13
20:24
Я понял. Спасибо. Ваш способ более рациональный. Но всё-таки интересно, почему в данном случае были ошибки, можете подсказать?
3 shlyahtich
 
30.03.13
20:26
В реквизиты добавь
4 vicof
 
30.03.13
20:26
СуммаДокумента = 0;
   Для каждого СтрокаСумма Из Элементы.Товары Цикл
       СуммаДокумента = СуммаДокумента + СтрокаСумма.Сумма ;
   КонецЦикла;
5 Dmitry017
 
30.03.13
20:28
(4) правильно ли я понимаю, что из табличной части невозможно взять одну колонку со всеми строками и дальше их обрабатьывать (как я хотел). Ваш алгоритм я понял.
6 shlyahtich
 
30.03.13
20:28
(2) не на форму реквизит добавь СуммаДокумента который для Элементы.СуммаДокумента будет данными
7 vicof
 
30.03.13
20:32
Собственно, взять одну колонку или несколько - разницы особой нет. Одна колонка со всеми строками - это список значений.
8 Dmitry017
 
30.03.13
20:38
(7) Ну вот, я хотел взять одну колонку Элементы.Товары.Сумма, а выскочила ошибка во время выполнения
9 shlyahtich
 
30.03.13
20:41
(8) понимаешь... есть коллекция данных, есть массив, а есть трока входящая в эти дела... ну упрощенно - и если так непонятно то открываешь отладчик и в табло смотришь значение переменной и сразу станет понятней.
10 vicof
 
30.03.13
20:41
(8) О реляционных базах данных имеешь представление?
О циклах в 1с имеешь представление?
Элементы.Товары.Сумма - никак не коллекция значений, а хз что, на что система и ругнулась.
11 shlyahtich
 
30.03.13
20:42
если занимался раньше программированием разберешься, если ж балуешься - бросай и займись другим делом.
12 shlyahtich
 
30.03.13
20:45
(---) в принципе в 39 лет я сменил область деятельности и из инженера по авиационному радиоэлектронному оборудованию и разработчика алгоритмов боевых локаторов превратился сначала в программиста итрерфейса баз данных  потом... вобщем нормально вырос) Учитесь товарищь! 39 лет тож хороший возраст но понятно это в 50

Для учебы отсылаю вас на spec8.ru купите базовый курс вы их клиент
13 Dmitry017
 
30.03.13
20:52
(9) я разберусь с этими моментами. Спасибо
14 Dmitry017
 
30.03.13
20:55
Хотел ещё спросить. У Табличной части (это ведь таблица значений по сути) есть метод Итог()
Так вот. Почему он доступен через Объект.Товары и недоступен через Элементы.Товары. По сути что Объект.Товары, что Элементы.Товары - табличная часть.

Или же он недоступен, потому что Элементы нельзя редактировать? То есть можно выполнить Объект.СуммаДокумента = 1;
Но нельзя выполнить Элементы.СуммаДокумента = 1;
15 unkairosed
 
30.03.13
21:02
(14) Наводка: свойство "ПутьКДанным" элемента формы. Элемент формы <> объект, содержащий прикладные данные.
16 vicof
 
30.03.13
21:02
Элементы формы - это всего лишь представление данных. Именно поэтому.
17 Dmitry017
 
30.03.13
21:06
Спасибо!
18 Dmitry017
 
30.03.13
22:19
А почему не происходи запись в рекквизит формы??
&НаКлиенте
Процедура ТоварыПриИзменении(Элемент)
   // Вставить содержимое обработчика.   ,
       // Вставить содержимое обработчика.
       
   СуммаДокумента = Объект.Товары.Итог("Сумма");
       
       
КонецПроцедуры


При отладке видно что изменяется СуммаДокумента, а на форме как был нуль так и остался
19 Dmitry017
 
30.03.13
22:21
Но почему-то заработало через Объект.СуммаДокумента, а через ЭтотОбъект.СуммаДокумента не работало (можете подсказать почему)?
20 unkairosed
 
30.03.13
23:36
Ctrl+F1 -> набрать "ЭтотОбъект"
21 vicof
 
31.03.13
05:30
(19) Сравни ТипЗнч(Объект.СуммаДокумента) и ТипЗнч(ЭтотОбъект.СуммаДокумента)
22 Мимохожий Однако
 
31.03.13
07:19
(19)ЭтотОбъект - форма документа, картинка на экране. Объект - документ в базе.