Для каждого строка из номенклатура цикл

3.
beldieff
12.02.13 11:51
Сейчас в теме
(1) Rayrat7,
Итератор для значения не определен
Для каждого СтрокаТаблицы Из Элементы.Состав
В отладчике у Элементы.Состав какой тип? И да, код бредовый, что надо сделать?
6.
Rayrat7
12.02.13 11:59
Сейчас в теме
(3) beldieff, ток начинаю изучать 1с
Надо чтобы по каждой строке табличной части проработал код расчета суммы
7.
beldieff
12.02.13 12:01
Сейчас в теме
(6) Rayrat7,
Надо чтобы по каждой строке табличной части проработал код расчета суммы
В отладчике у Элементы.Состав какой тип?
10.
Rayrat7
12.02.13 12:32
Сейчас в теме
(7) beldieff, Состав это таблица формы
12.
beldieff
12.02.13 12:44
Сейчас в теме
(10) Rayrat7,
Состав это таблица формы
В отладчике у Элементы.Состав какой тип?
Неужели не понятно пишу?
13.
Rayrat7
12.02.13 12:51
Сейчас в теме
Прикрепленные файлы:
16.
beldieff
12.02.13 12:58
Сейчас в теме
(13) Rayrat7,
Да уж… Все дружно затупили.
Для Каждого Стр Из Объект.Состав Цикл
Стр.Сумма = Стр.Колличество * Стр.Цена;
КонецЦикла
Работать надо с объектом, а не с элементами формы
17.
Rayrat7
12.02.13 13:21
Сейчас в теме
(16)Вродибы как заработало) НО)
Цена у меня прописана в справочнике и я ее выхватывал на сервере
в общем код выгладит так:
Функция ПолучитьЦену(Наименование)
Возврат Наименование.Цена;
КонецФункции // ПолучитьЦену()
&НаКлиенте
Процедура СоставКоличествоПриИзменении(Элемент)
Сумма();//Расчет суммы
КонецПроцедуры
&НаКлиенте
Процедура Сумма()//Расчет суммы
Цена = ПолучитьЦену(Элементы.Состав.ТекущиеДанные.Наименование);
Стр = Элементы.Состав.ТекущиеДанные;
Стр.Сумма = Стр.Колличество * Цена;
КонецПроцедуры
&НаКлиенте
Процедура Перерасчет(Команда)
Для Каждого Стр Из Объект.Состав Цикл
Цена = ПолучитьЦену(Элементы.Состав.ТекущиеДанные.Наименование);
//Стр = Элементы.Состав.ТекущиеДанные;
Стр.Сумма = Стр.Колличество * Цена;
КонецЦикла;
КонецПроцедуры
Показать
иначе я цену в отладчике не видел..
И теперь у меня цену с выбранной строки умножает на все строки количества)а не каждую цену на свое количество)
2.
Akuji
15
12.02.13 11:47
Сейчас в теме
а зачем в цикле текущие данные?
и почему “стр” если у тебя “СтрокаТаблицы”
4.
Азбука Морзе
92
12.02.13 11:54
Сейчас в теме
Вот так надо:
Для каждого СтрокаТаблицы Из Элементы.Состав Цикл
СтрокаТаблицы .Сумма = СтрокаТаблицы .Колличество * СтрокаТаблицы .Цена;
КонецЦикла;
5.
beldieff
12.02.13 11:55
Сейчас в теме
(4) Азбука Морзе,
Вот так надо:
А то что Элементы.Состав не коллекция вас не смущает?
9.
Азбука Морзе
92
12.02.13 12:28
Сейчас в теме
(5)
Только что заметил что “Итератор для значения не определен”.
Но если Элементы.Состав не коллекция, то весь код не имеет смысла.
11.
Rayrat7
12.02.13 12:38
Сейчас в теме
(9)код:
Стр.Сумма = Стр.Колличество * Стр.Цена;
рассчитывал сумму при изменении цены или количества
Хотел сделать цикл который пробегал бы по всем строкам табличной части документа и просчитывал сумму
Как я понял таким образом как я пытался сделать у меня не получится?
Как сделать тогда можно? в каком направлении двигаться?
8.
chmv
12.02.13 12:08
Сейчас в теме
14.
Rayrat7
12.02.13 12:53
Сейчас в теме
или я опять неправильно понял что у меня спрашивают?
15.
Diose
12.02.13 12:56
Сейчас в теме
Попробуй так
Для каждого СтрокаТаблицы Из Объект.Состав Цикл
СтрокаТаблицы .Сумма = СтрокаТаблицы .Колличество * СтрокаТаблицы .Цена;
КонецЦикла;
18.
beldieff
12.02.13 14:13
Сейчас в теме
Процедура СоставКоличествоПриИзменении(Элемент)
Для Каждого Стр Из Объект.Состав Цикл
Стр.Сумма = Стр.Колличество * ПолучитьЦену(Стр.Наименование);
КонецЦикла
КонецПроцедуры
&НаСервере
Функция ПолучитьЦену(Наименование)
Возврат Наименование.Цена;
КонецФункции // ПолучитьЦену()
Показать
19.
beldieff
12.02.13 14:15
Сейчас в теме
(18) beldieff, Только если Стр.Наименование это ссылка на объект, а не его наименование.
20.
Rayrat7
12.02.13 14:34
Сейчас в теме
(18) beldieff,
Спс сработало!
даже вродибы понял)
Источник
1.
walterwest
20.01.12 19:31
Сейчас в теме
В Отчете о розничных продажах УТ11, нужно перебрать товары, чтобы узнать количество проданного по определенной номенклатуре, пробую так;
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Для каждого СтрокаТоваров из Элементы.Товары.ТекущиеДанные Цикл
КонецЦикла;
КонецПроцедуры
Получаю ошибку – {Документ.ОтчетОРозничныхПродажах.Форма.ФормаДокумента.Форма(618)}: Итератор для значения не определен
Для каждого СтрокаТоваров из Элементы.Товары. ТекущиеДанные Цикл
Подскажите пожалуйста что не так.
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
- Дата
- Дата
- Рейтинг всех уровней
- Рейтинг 1-го уровня
- Древо развёрнутое
- Древо свернутое
Свернуть все
2.
Alex_E
2169
20.01.12 19:36
Сейчас в теме
(1) walterwest, Элементы.Товары.ТекущиеДанные – не может быть итератором для цикла – им должна быть табличная часть документа:
ля каждого СтрокаТоваров из Товары Цикл
3.
walterwest
20.01.12 19:39
Сейчас в теме
Для каждого СтрокаТоваров из Элементы.Товары возвращает такую же ошибку.
4.
maker
20.01.12 19:53
Сейчас в теме
Обходить нужно коллекцию данных формы.
Объект.Товары
5.
walterwest
20.01.12 20:17
Сейчас в теме
Подскажите пожалуйста еще с условием, не срабатывает условие Если, хотя если посмотреть значение в табло в
отладчике для СтрокаТоваров.Номенклатура оно равно “Булка 3”.
Если СтрокаТоваров.Номенклатура= “Булка 3” Тогда
ПоказатьОповещениеПользователя( “ура”);
КонецЕсли;
КонецЦикла;
8.
maker
20.01.12 20:31
Сейчас в теме
(5) walterwest, очень меня рассмешили)))
Вы вообще новичок в программировании?
Если в отладчике смотрите, то обращайте внимание на тип того значение, которое вы смотрите. В одном случае у вас будет справочник ссылка, а в другом строка. Понятное дело, что это условие не будет никогда истинно.
Если работаете в толстом клиенте, то код juntatalor вам поможет. В тонком клиенте надо будет дополнительно на сервере считывать наименование.
Хотя мне кажется принципиально не совсем верно сравнивать так наименования. Лучше ссылки сравнивайте.
10.
walterwest
20.01.12 20:47
Сейчас в теме
(8) maker, да, новичок в 1с, после php непривычно =)
А как сравнивать ссылки?
12.
Uncore
1336
20.01.12 20:59
Сейчас в теме
(10) walterwest,
Поиск = ПолучитьСсылку(“Булка 3”);
Если НЕ Поиск.Пустая() Тогда
Если СтрокаТоваров.Номенклатура= Поиск Тогда
ПоказатьОповещениеПользователя( “ура”);
КонецЕсли;
КонецЕсли;
&НаСервере
Функция ПолучитьСсылку(Строка)
Поиск = Справочники.Номенклатура.НайтиПоНаименованию(Строка, Истина);
Возврат Поиск.Ссылка;
КонецФункции
Показать
6.
juntatalor
62
20.01.12 20:26
Сейчас в теме
Так у вас наверное номенклатура это элемент справочника, а сравниваете со строкой. Попробуйте
7.
Uncore
1336
20.01.12 20:31
Сейчас в теме
а так не пройдет?
КонецЦикла;
9.
maker
20.01.12 20:32
Сейчас в теме
(7) Uncore, я так понимаю, что речь идёт об управляемом приложении.
11.
maker
20.01.12 20:53
Сейчас в теме
Так же на равенство. Только вам ссылку надо как-то получить. Например, вызвать серверную функцию с кодом Возврат Справочники.Номенклатура.НайтиПоКоду(“Булка 3”);
Я предлагаю один из вариантов. Уточнее и модификация уже зависят от конкретной вашей задачи.
13.
profibalans
21.01.12 00:10
Сейчас в теме
Вопросы с вознаграждением
Источник