Есть Таблица Значений в которой есть строки "партии товаров" и колонки одна с которых тоже Таблица Значений в которой есть колонка Сумма ...
Пытаюсь Циклом перебрать значения "сумма" что бы сформировать проводки, а в проводки записывает только последнее значение с Колонки "Сумма"
Например в Колонке "Сумма" в Таблице Значений есть такие показатели
СуммаСписания
1. 350
2. 280
3. 310
А проводку мне делает в регистр только последней суммой дле всех...
Помогите правильно оформить Цикл. Спасибо)
Пытаюсь Циклом перебрать значения "сумма" что бы сформировать проводки, а в проводки записывает только последнее значение с Колонки "Сумма"
Например в Колонке "Сумма" в Таблице Значений есть такие показатели
СуммаСписания
1. 350
2. 280
3. 310
А проводку мне делает в регистр только последней суммой дле всех...
Движения.Запчасти.Записывать = Истина;
Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
Движение = Движения.Запчасти.Добавить();
Движение.Организация = Организация;
Движение.Водитель = Водитель;
Движение.Номенклатура = ТекСтрокаМатериалы.Номенклатура;
Движение.Автомобиль = Автомобиль;
Движение.Количество = ТекСтрокаМатериалы.Количество;
Движение.Документ = ЭтотОбъект.Ссылка;
Для Каждого СтрМатериалы Из ТаблицаМатериалов Цикл
Для каждого Стр Из СтрМатериалы.СписанныеПартииБУ Цикл
СуммаП = Стр.СуммаСписания;
Движение.Цена = СуммаП;
КонецЦикла;
КонецЦикла;
КонецЦикла;
ПоказатьПомогите правильно оформить Цикл. Спасибо)
Прикрепленные файлы:
По теме из базы знаний
- Объединение двух таблиц значений запросом, циклом
- Смотрим запросы 1С через Microsoft SQL Profiler по следам ошибок разработчиков, приводящих к проблемам производительности
- Исправляем проблемы производительности в конфигурации ERP - 7 примеров
- Как передать Таблицу Значений в Динамический Список?
- Консоль кода с поддержкой объявления процедур и функций, с дополнительными функциями отслеживания и вывода значений
Найденные решения
Вопрос решил таким способом) Всем спасибо)
Для Каждого СтрМатериалы Из ТаблицаМатериалов Цикл
СуммаП = СтрМатериалы.СписанныеПартииБУ.Итог("СуммаСписания");
Движения.ЗапчастиПриход.Записывать = Истина;
Движение = Движения.ЗапчастиПриход.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Организация = Организация;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТребованиеНакладнаяМатериалы.Количество КАК КоличествоЗапчастей
|ИЗ
| Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
|ГДЕ
| ТребованиеНакладнаяМатериалы.Номенклатура = &Запчасть";
Запрос.УстановитьПараметр("Запчасть", СтрМатериалы.Номенклатура);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КолВоМатериалов = ВыборкаДетальныеЗаписи.КоличествоЗапчастей;
КонецЦикла;
Движение.Номенклатура = СтрМатериалы.Номенклатура;
Движение.Количество = КолВоМатериалов;
Движение.МОЛ = ЭтотОбъект.Водитель;
Движение.Ссылка = ЭтотОбъект.Ссылка;
Движение.Цена = СуммаП;
Движение.Сумма = СуммаП*КолВоМатериалов;
КонецЦикла;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Если я правильно понял задачу, то код будет таким:
А если неправильно понял, то надо СуммаП = 0; и Движение.Цена = СуммаП; выносить еще из одного цикла.
А проводку мне делает в регистр только последней суммой дле всех...
"Компьютер выполняет ту программу, которую вы написали, а не ту, которую хотели написать" (с) не мой
Если я правильно понял задачу, то код будет таким:
Для Каждого СтрМатериалы Из ТаблицаМатериалов Цикл
СуммаП = 0;
Для каждого Стр Из СтрМатериалы.СписанныеПартииБУ Цикл
СуммаП = СуммаП + Стр.СуммаСписания;
КонецЦикла;
Движение.Цена = СуммаП;
КонецЦикла;
ПоказатьА если неправильно понял, то надо СуммаП = 0; и Движение.Цена = СуммаП; выносить еще из одного цикла.
Когда проверил Цикл через Сообщить(); получил все значения перебора Циклом
;
А проводку мне дает последнее число
Для Каждого СтрМатериалы Из ТаблицаМатериалов Цикл
СуммаП = 0;
Для каждого Партия Из СтрМатериалы.СписанныеПартииБУ Цикл
СуммаП = СуммаП + Партия.СуммаСписания;
сообщить(СуммаП);
КонецЦикла
А проводку мне дает последнее число
(5)Я уже вставлял Цикл для СуммаП в Цикл Проводки...так же и выводил Циклы отдельно...все то же последнее значение...
Для Каждого СтрМатериалы Из ТаблицаМатериалов Цикл
СуммаП = СтрМатериалы.СписанныеПартииБУ.Итог("СуммаСписания");
сообщить(СуммаП);
КонецЦикла;
Движения.ЗапчастиПриход.Записывать = Истина;
Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
Движение = Движения.ЗапчастиПриход.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Организация = Организация;
Движение.Номенклатура = ТекСтрокаМатериалы.Номенклатура;
Движение.Количество = ТекСтрокаМатериалы.Количество;
Движение.МОЛ = ЭтотОбъект.Водитель;
Движение.Ссылка = ЭтотОбъект.Ссылка;
Движение.Цена = СуммаП; //
КонецЦикла;
Показать
Вопрос решил таким способом) Всем спасибо)
Для Каждого СтрМатериалы Из ТаблицаМатериалов Цикл
СуммаП = СтрМатериалы.СписанныеПартииБУ.Итог("СуммаСписания");
Движения.ЗапчастиПриход.Записывать = Истина;
Движение = Движения.ЗапчастиПриход.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Организация = Организация;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТребованиеНакладнаяМатериалы.Количество КАК КоличествоЗапчастей
|ИЗ
| Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
|ГДЕ
| ТребованиеНакладнаяМатериалы.Номенклатура = &Запчасть";
Запрос.УстановитьПараметр("Запчасть", СтрМатериалы.Номенклатура);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КолВоМатериалов = ВыборкаДетальныеЗаписи.КоличествоЗапчастей;
КонецЦикла;
Движение.Номенклатура = СтрМатериалы.Номенклатура;
Движение.Количество = КолВоМатериалов;
Движение.МОЛ = ЭтотОбъект.Водитель;
Движение.Ссылка = ЭтотОбъект.Ссылка;
Движение.Цена = СуммаП;
Движение.Сумма = СуммаП*КолВоМатериалов;
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот