|
Как суммиривать строки в табличном поле? | ☑ | ||
---|---|---|---|---|
0
VadimBahteev
12.05.13
✎
14:56
|
Добрый день всем! Возникла такая проблема, при заполнении табличного поля из результатов запроса, добавляются все строки. Как сделать так что бы строки с одинаковым наименование ингредиента суммировались по количеству.
Процедура КоманднаяПанельПродукцияРассчитатьПроизводство(Кнопка) // Проверим на возможность этого действия Если НЕ Ссылка.Пустая() Тогда ИначеЕсли РаботаСДиалогами.ПроверитьМодифицированность(ЭтотОбъект) = Ложь Тогда Возврат КонецЕсли; ВыпускПродукции = ЭтотОбъект; ЗапросПродукция = Новый Запрос; //ЗапросПродукция.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; ЗапросПродукция.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка); ЗапросПродукция.Текст = "ВЫБРАТЬ | КР_ВыпускПродукцииПродукция.Номенклатура , | КР_ВыпускПродукцииПродукция.ЕдиницаИзмерения , | КР_ВыпускПродукцииПродукция.Коэффициент , | КР_ВыпускПродукцииПродукция.Количество , | КР_ВыпускПродукцииПродукция.Спецификация |ИЗ | Документ.КР_ВыпускПродукции.Продукция КАК КР_ВыпускПродукцииПродукция |ГДЕ | КР_ВыпускПродукцииПродукция.Ссылка = &Ссылка"; ТаблицаПродукция = ЗапросПродукция.Выполнить().Выгрузить(); //ТаблицаПродукция[0].НоменклатураПродукции.Ссылка Для каждого СтрокаПродукция из ТаблицаПродукция Цикл СтрокаТаблицыЗначений = ВыпущеннаяПродукция.Добавить(); СтрокаТаблицыЗначений.Продукция = СтрокаПродукция[0].Ссылка; СтрокаТаблицыЗначений.ЕдиницаИзмерения = СтрокаПродукция[1].Ссылка; СтрокаТаблицыЗначений.Количество = СтрокаПродукция.Количество; СтрокаТаблицыЗначений.Коэффициент = СтрокаПродукция.Коэффициент; СтрокаТаблицыЗначений.Спецификация = СтрокаПродукция[4].Ссылка; //ВыпускПродукции.Производство.Загрузить(ТаблицаПродукция); ЗапросИнгредиенты = Новый Запрос; ЗапросИнгредиенты.Текст = "ВЫБРАТЬ | КР_СпецификацияТовары.Номенклатура Как Компонент, | КР_СпецификацияТовары.ЕдиницаИзмерения КАК ЕдиницаИзмеренияКомпонента, | КР_СпецификацияТовары.Коэффициент КАК КоэффициентКомпонента, | КР_СпецификацияТовары.Количество КАК КоличествоКомпонентаНорма |ИЗ | Документ.КР_Спецификация.Товары КАК КР_СпецификацияТовары |ГДЕ | КР_СпецификацияТовары.Ссылка = &Ссылка"; ЗапросИнгредиенты.УстановитьПараметр("Ссылка", СтрокаПродукция.Спецификация); ТаблицаИнгредиент = ЗапросИнгредиенты.Выполнить().Выгрузить(); Для каждого Ингредиент из ТаблицаИнгредиент Цикл НоваяСтрока = ВыпускПродукции.Производство.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Ингредиент); КонецЦикла; КонецЦикла; // //ТаблицаСостава = ВыпускПродукции.Производство.Выгрузить(); // //ВыпускПродукции.Производство.Загрузить(результат); КонецПроцедуры |
|||
1
kosts
12.05.13
✎
15:06
|
Группировку в запрос добавь и сумму по количеству.
|
|||
2
VadimBahteev
12.05.13
✎
15:12
|
в результате запроса нет одинаковых компонентов, тут два запроса в первом выбирается номенклатура (которая делается по спецификации), во втором Ингредиент (тоесть список продуктов в спецификации). Дак может быть так что для приготовлении используются разные спецификации (но в них есть одинаковые ингредиенты). Блин совсем запутал наверно. Короче хочется сделать что то подобное Рарусу. у них есть выпуск продукции документ
|
|||
3
unregistered
12.05.13
✎
15:24
|
В (0) ужасный хавнокод.
Все данные можно получить одним запросом. Либо двумя запросами - один для табличной части ВыпущеннаяПродукция, а другой - для той, где ингридиенты. Вот это что вообще за ересь?: СтрокаПродукция[0].Ссылка Если уж ты такой извращенец, что любишь обращаться к полям по индексам, то нафига еще и Ссылку через точку дёргать? У тебя в поле уже ссылка лежит. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |