Технология построения кросс-отчетов по версиям 1. Создаем обычный шаблон отчета по слою. 2. С помощью кнопки «Выбрать из стандартных» выбираем три вида колонок: a. Колонки для ключевых полей, по которым будут сгруппированы данные b. Колонку для поля «UpdateGroupIndex» c. Колонку суммы 3. Если нужно, создаем дополнительные вычислимые колонки. 4. Упорядочиваем колонки: сначала идут ключевые поля и вычислимые, потом UpdateGroupIndex, потом поле суммы. 5. Настраиваем колонку UpdateGroupIndex: 6. Добавляем вычислимое поле «UpdateGroupName» для разыменовки поправки (имя поля обязательно такое). Помещаем колонку для этого поля сразу после колонки «UpdateGroupIndex». Настраиваем колонку: 7. Настраиваем колонку суммы: 8. Добавляем вычислимую колонку для вывода исходной суммы из сборки (имя поля может быть любое). Размещаем колонку непосредственно перед колонкой «UpdateGroupIndex». Настраиваем колонку: 9. Добавляем вычислимую колонку для расчета разницы суммы между поправками (имя поля и колонки может быть любое). Помещаем колонку непосредственно перед колонкой суммы. Настраиваем колонку: 10. В настройках шаблона устанавливаем значение параметра «Настройки таблицы / Количество строк над таблицей, которые нужно сдвигать»: нужно поставить 3 или более (количество строк, содержащих шапку отчета). Под кросс-колонки требуется как минимум 3 строки: одна с общим заголовком (заголовок колонки UpdateGroupName), вторая – под названия поправок (значения поля UpdateGroupName), третья – заголовки сумм. 11. Рисуем шаблон: кнопкой «Задать ячейку таблицы» задаем ячейку, с которой начнется вывод массива данных, а кнопкой «Установить бордюры и названия столбцов» рисуем саму таблицу. 12. Открываем колонки с разницей и суммой, и переносим текст заголовков этих двух колонок из верхней строки заголовков в нижнюю. После этого опять скрываем. 13. Прописываем в таблице заголовок отчета и прочие атрибуты отчета. 14. В параметрах шаблона прописываем скрипт итогов. Задача скрипта – скрыть лишние колонки, которые добавит алгоритм построения кросс-отчета для вывода исходных сумм из сборки (суммы с пустым значением поля UpdateGroupIndex). Поскольку исходные суммы мы показали в отдельной колонке, которая не является кросс-результатом, то в кросс-результатах нам эти суммы показывать уже не имеет смысла. Колонки, которые необходимо скрыть, будут самыми первыми из автоматически созданных алгоритмом кросс-отчетов, поэтому их индексы легко вычислить исходя из индекса колонки исходной суммы: 15. На странице «Параметры-ограничения» редактора шаблона прописываем дополнительный параметр «Поправки.СохранятьПромежуточныеРезультаты», который указывает алгоритму применения поправок раскрыть промежуточные результаты расчетов в разрезе поправок: 16. Сохраняем шаблон. 17. Регистрируем отчет на интерфейсе «Администратор отчетов». В конфигурации отчета в поле «Параметры» вручную добавляем параметры с именами «$Modifications.Document» и «$Modifications.List». Эти параметры позволят выбрать документ, по которому будет определена исходная сборка данных слоя и перечень поправок, а также выбрать из списка нужные поправки для вывода в отчет. 18. Также в конфигурации отчета прописываем два расширения в поле «Дополнительная информация»: <РассчитатьРазницуПоправок ИмяПоляСуммы="Сумма" ИмяПоляРазницы="Разница"/> <РазыменоватьПоправкиВСлое Формат="[Номер] - [Название]"/> Первое расширение позволяет рассчитать разницу между суммами после применения каждой поправки (по сути, сумму самой поправки). Параметрами расширения указывается имя поля (не колонки!!!) в шаблоне отчета, в котором содержится сумма, и имя поля, в которое будет помещен результат: разница сумм по поправкам. Второе расширение позволяет разыменовать ссылки на поправки, чтобы вывести их в заголовки колонок. В параметре «Формат» указываем формат строки, которую нужно сформировать для заголовков колонок. Можно использовать значения полей «Номер» и «Название». При этом номер в формате должен обязательно присутствовать, и должен быть первым, чтобы данные были правильно упорядочены, и кросс-колонки вывелись в нужном порядке. 19. Выкладываем отчет на рабочее место, и убеждаемся, что основная часть работы сделана: