Версия для печати темы (http://pro1c.org.ua/index.php?s=e6fda464b06f82859da0efd9ae5be445&showtopic=39975)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Система компоновки данных _ Новое итоговое поле в группировке

Автор: salton 05.09.17, 8:05

Добрый день.

Есть проблемка. Существует отчет который необходимо было дополнить данными. Кой чего я уже вывел. Но остался не решенным один вопрос:



Необходимо создать в строке группировки новое поле "% виходу". По сути это поле будет вычисляемым - Сума(Количествосырья)\КоличествоПродукции.
Я пробовал создать новое вычисляемое поле и лепить его к строке группировок "Продукция, Количество продукции, цена продукции" итд.
Но естественно получал ошибку:



сам отчет прилагается - http://pro1c.org.ua/redirect.php?https://drive.google.com/open?id=0ByFm6OhNMKUGWF9TMmFRUkdrOVk
платформа - 8.3.8.2322
релиз - "Управление торговым предприятием для Украины", редакция 1.2. (1.2.43.1)

Безусловно я не блещу знаниями в СКД, потому прошу ткнуть носом в решение вопроса.
Заранее благодарен!

зы. по другому - Поле "% виходу" для Строки "Продукция...." - это сумма "5 виходу" по строкам "сырье"

Автор: sava1 05.09.17, 8:13

В ресурсах - Вычислить("Сумма(КолСырья)/Сумма(КолПродукции)")

Автор: Vofka 05.09.17, 8:13

ВычислитьВыражениеСГруппировкойМассив (EvalExpressionWithGroupArray)
Синтаксис:

ВычислитьВыражениеСГруппировкойМассив (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)

Параметры:

Выражение - выражение, которое нужно вычислить. Тип Строка. Например, "Сумма(СуммаОборот)";
ВыраженияПолейГруппировки - выражения полей группировки, перечисленные через запятую. Например, "Контрагент, Партия";
ОтборЗаписей - выражение, применяемое к детальным записям. Например, "ПометкаУдаления = Ложь". Если в данном параметре используется агрегатная функция, то при выполнении компоновки данных возникнет ошибка;
ОтборГруппировок - отбор, применяемый к групповым записям. Например: "Сумма(СуммаОборот) > &Параметр1".
Функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.

Пример:

Максимум(ВычислитьВыражениеСГруппировкойМассив ("Сумма(СуммаОборот)", "Контрагент"));

Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет конвертировано в НаборДанных.Контрагент.

Компоновщик макета при генерации выражений для вывода пользовательского поля, в выражении которого присутствует только функция ВычислитьМассивСГруппировкой генерирует выводимое выражение таким образом, чтобы данные выводить представления и данные были упорядочены.

Например, для пользовательского поля с выражением:

ВычислитьВыражениеСГруппировкойМассив("Сумма(СуммаОборот)", "Контрагент")

компоновщик макета сгенерирует для вывода следующее выражение:

СоединитьСтроки(Массив(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Представление(Сумма(НаборДанных.СуммаОборот)), Сумма(НаборДанных.СуммаОборот)", "НаборДанных.Контрагент"), "2")))

Автор: salton 05.09.17, 9:14

Как вычислить необходимое мне выражение я понял.
Вопрос в том - как разместить его именно в нужной мне строке?

Тоесть я хочу вывести результат в строку с четвертой группировкой "Продукция ..." или с третьей "Виробництво..."



вот как на рисунке


зы... уже хочется плюнуть и сделать обычным внешним отчетом....

Автор: Vofka 05.09.17, 10:56

На вкладке Ресурсы можно указывать в каких группировках им быть.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
http://pro1c.org.ua