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

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

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
Сейчас в теме

Так у вас наверное номенклатура это элемент справочника, а сравниваете со строкой. Попробуйте

Если СтрокаТоваров.Номенклатура.Наименование = “Булка 3” Тогда

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
Сейчас в теме

Вопросы с вознаграждением

Источник