Сложные отчеты для управляемых форм с использованием СКД: просто. На примере отчета ABC анализ номенклатуры, клиентов для УТ11

30.10.13

Разработка - СКД

Не очень часто, но все же, иногда приходится сталкиваться с необходимостью создания отчета, который очень сложно скомпоновать на "чистом" СКД, в этом случае альтернативой может являться следующая последовательность действий для получения итогового отчета: 1. при помощи одной схемы компоновки данных получить необходимую выборку данных; 2. запрограммировать (на языке 1С) некое преобразование этих данных; 3. при помощи другой схемы компоновки данных - произвести вывод необходимой информации в табличный документ. Как оказалось эта процедура не слишком сложная, хотя и немного запутанная.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
ABCАнализНоменклатурыИлиКлиентов.erf
.erf 20,68Kb ver:1.007
198 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Когда запрос в СКД перестает "помещаться в голове" становится слишком громоздким (ЗиУП конечно не в счетSmile) и ситуацию не получается исправить различными фичами самой СКД, то можно использовать данный метод.

Сразу оговорюсь: иногда представленную методику можно использовать даже для простых случаев, с целью ускорения выполнения формирования отчета (это касается, например, случаев многкратного соединения больших объемов данных в запросе).

Общая идея:

1. Получаем необходимые данные при помощи первой схемы компоновки данных (можно конечно получить данные обычным запросом, но тогда нам самим придется описывать все поля условий, ресурсы и т.д., а также организовывать ввод пользовательских данных). В качестве данной СКД можно использовать основную схему компоновки данных отчета.

2. Обрабатываем полученную на первом этапе выборку используя язык программирования 1С (это обычно нагляднее чем сделать тоже самое, например, в запросе, к тому же в этом случае можно снабдить текст комментариями, не боясь того что их "проглотит" конструктор запросов).

3. Полученные на втором этапе данные - выводим при помощи другой схемы компоновки данных, используя всю (почти всю) мощь СКД в части вывода в табличный документ.

Проиллюстрируем на примере содания отчета ABC анализ номенклатуры, клиентов, уже построенного по этой методике:

1. Данные получаем при помощи СКД запросом к регистру Выручка и себестоимость продаж, будем использовать два варианта настройки (группировка по Номенклатуре и группировка по Клиентам)

2. Производим ABC анализ по методу, реализованонму в ТиС 7.7, и классическому методу ABC анализа

3. Выводим результаты используя другую СКД. 

Начнем пример:

1. Создаем новый внешний отчет, открываем основную схему комноновки данных, и формируем СКД для первоначальной выборки данных:

Здесь намеренно используется простой (неоптимизированный) запрос:

ВЫБРАТЬ РАЗРЕШЕННЫЕ

ВИСПОбороты.КоличествоОборот КАК Количество,
ВИСПОбороты.СуммаВыручкиОборот КАК Выручка,  
ВИСПОбороты.СебестоимостьОборот + ВИСПОбороты.СуммаДополнительныхРасходовОборот КАК СебестоимостьСДР,
ВИСПОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,  
ВИСПОбороты.АналитикаУчетаНоменклатуры.Склад КАК Склад,  ВИСПОбороты.СуммаВыручкиОборот - ВИСПОбороты.СебестоимостьОборот -    ВИСПОбороты.СуммаДополнительныхРасходовОборот КАК Прибыль,  
ВЫБОР       
    КОГДА ВИСПОбороты.СебестоимостьОборот + ВИСПОбороты.СуммаДополнительныхРасходовОборот = 0 
    ТОГДА 0
    ИНАЧЕ 100 * (ВИСПОбороты.СуммаВыручкиОборот - ВИСПОбороты.СебестоимостьОборот - ВИСПОбороты.СуммаДополнительныхРасходовОборот)
    / (ВИСПОбороты.СебестоимостьОборот + 
ВИСПОбороты.СуммаДополнительныхРасходовОборот) 
    КОНЕЦ КАК Прибыльность,   ВИСПОбороты.АналитикаУчетаПоПартнерам.Партнер КАК Партнер,  
ВИСПОбороты.АналитикаУчетаПоПартнерам.Организация КАК Организация,  
ВИСПОбороты.АналитикаУчетаПоПартнерам.Контрагент КАК Контрагент

ИЗ  РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачалоПериода, &КонецПериода, Авто,
  
    НЕ АналитикаУчетаПоПартнерам.Партнер = ЗНАЧЕНИЕ(Справочник.Партнеры.НашеПредприятие)) КАК ВИСПОбороты

Ресурсы:

Параметры:

Настройки:

Т.е. построена обычная СКД для выборки данных.

2. Добавляем основную форму отчета (удаляем с нее все элементы (это важно!)), и заново добавляем на нее Пользователские настройки компоновщика настроек отчета:

(если не отображаются названия колонок этой таблицы - включаем их отображение).

Наполняем содержимым форму (блок ABC):

Добавляем команду Сформировать и формируем соотвествующую кнопку.

3. Создаем СКД для вывода информации в табличный документ (добавляем соответствующий макет), описание полей:

 

Вычисляемые поля:

Ресурсы:

Вариант настроек БезГрупп:

Вариант настроек Классы:

 

Т.е. это тоже вполне обычная СКД, которая "заточена" под конкретные колонки таблицы значений, которую мы будем в нее передавать.

3. Наполняем содержимым команду Сформировать:

&НаКлиенте
Процедура Сформировать(Команда)  
    СформироватьНаСервере();
КонецПроцедуры

&НаСервере
Процедура СформироватьНаСервере()
   ОтчетОбъект = ДанныеФормыВЗначение(Отчет, Тип("ОтчетОбъект"));

   //Первый этап: получаем данные при помощи СКД

   СКД = ОтчетОбъект.СхемаКомпоновкиДанных;                      
   ПользовательскиеНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки; //Используем пользовательские настройки с формы отчета;
   Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(СКД.ВариантыНастроек[ОбъектАнализа].Настройки); //Используем нужный вариант
   Настройки = Отчет.КомпоновщикНастроек.Настройки;// Тут уже готовый вариант настроек
   //При необходимости корректируем поле группировки в соответствии с настройками
   //Это нужно когда выбрано значение СвойстоОбъектаАнализа
   //и анализ производится на основании значения реквизита соответствующего справочника
   Если ЗначениеЗаполнено(СвойствоОбъектаАнализа) Тогда
       ЭлементыПолейГруппировки = Настройки.Структура[0].ПоляГруппировки.Элементы;
       ЭлементыПолейГруппировки.Очистить();
       НовыйЭлементГруппировки = ЭлементыПолейГруппировки.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
       НовыйЭлементГруппировки.Поле = Новый ПолеКомпоновкиДанных(?(ОбъектАнализа = "Клиенты", "Партнер", ОбъектАнализа) + "." + СвойствоОбъектаАнализа);
       НовыйЭлементГруппировки.Использование = Истина;
  КонецЕсли;    
  //Копируем пользовательские настройки в основные настройки отчета
  Для Каждого ЭлементПользовательскихНастроек Из ПользовательскиеНастройки.Элементы Цикл
      Если ТипЗнч(ЭлементПользовательскихНастроек) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
         ЭлементНастройки = Настройки.ПараметрыДанных.Элементы.Найти(ЭлементПользовательскихНастроек.Параметр);
         ЗаполнитьЗначенияСвойств(ЭлементНастройки, ЭлементПользовательскихНастроек);
      ИначеЕсли ТипЗнч(ЭлементПользовательскихНастроек) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
         ЗаполнитьЭлементОтбораПоИД(Настройки.Отбор.Элементы, ЭлементПользовательскихНастроек); //Процедура определена в модуле формы
      КонецЕсли;
  КонецЦикла;
  //^^^^^^ все готово, чтобы получить исходную выборку
  //Следующие 8 строк - получение выборки в ТаблицуЗначений ТЗ:
  КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
  МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
  ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
  ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , );
  ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;  
  ТЗ = Новый ТаблицаЗначений;  
  ПроцессорВывода.УстановитьОбъект(ТЗ);  
  ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Ложь);
  //Конец Первого этапа: Выборка уже есть в ТЗ

  //Второй этап: Необходимые преобразования, для последующего вывода на экран
  //Тут реализуется алгоритм расчета для ABC анализа, взятый из ТиС 7.7, и классический ABC анализ
  //Здесь: Последняя сторка ТЗ - строка итогов, запомним числовые значения итогов в Структуре  
  Итоги = Новый Структура();  
  Для Каждого КолонкаТЗ Из ТЗ.Колонки Цикл
     ЗначениеЭлементаТЗ = ТЗ[ТЗ.Количество() - 1][КолонкаТЗ.Имя];
     Если Не ТипЗнч(ЗначениеЭлементаТЗ) = Тип("Число") Тогда Продолжить; КонецЕсли;
     Итоги.Вставить(КолонкаТЗ.Имя, ЗначениеЭлементаТЗ);
  КонецЦикла;
  ТЗ.Удалить(ТЗ.Количество() - 1); //Удалим строку итогов из ТЗ
  ТЗ.Колонки.Добавить("ПроцентОтОбщего"); //Добавим новые колонки в ТЗ
 
ТЗ.Колонки.Добавить("Объект");    
  ПоказательСтрокой = ?(Показатель = "Выручка по отгрузке", "Выручка", ?(Показатель = "Прибыль по отгрузке", "Прибыль", "Прибыльность"));
  ОбъектАнализаСтрокой = ?(ОбъектАнализа = "Клиенты", "Партнер", ОбъектАнализа) + СокрЛП(СвойствоОбъектаАнализа);
  Для Каждого СтрокаТЗ Из ТЗ Цикл
     СтрокаТЗ.ПроцентОтОбщего = 100 * СтрокаТЗ[ПоказательСтрокой] / Итоги[ПоказательСтрокой];
     СтрокаТЗ.Объект = СтрокаТЗ[ОбъектАнализаСтрокой];  
  КонецЦикла;    
  //Обработка  
  Если СпособАнализа = 0 Тогда
     ПорядокСтрокой = ?(Порядок = "убывания", "Убыв", "Возр");
     ТЗ.Сортировать(ПоказательСтрокой + " " + ПорядокСтрокой);
     КоличествоНужных = Окр(ТЗ.Количество() * Мин(ПроцентОбъектов, 100) / 100);
     Для Индекс = КоличествоНужных + 1 По ТЗ.Количество() - 1 Цикл
        ТЗ[Индекс].Объект = "";
     КонецЦикла;  
  ИначеЕсли СпособАнализа = 1 Тогда
     ПорядокСтрокой = "Убыв";
     ТЗ.Сортировать(ПоказательСтрокой + " " + ПорядокСтрокой);
     ОставитьСумму = Итоги[ПоказательСтрокой] * Мин(ПроцентСумм, 100) / 100;
     НакопленоСумма = 0;
     Для Каждого СтрокаТЗ Из ТЗ Цикл
       Если НакопленоСумма > ОставитьСумму Тогда
         СтрокаТЗ.Объект = "";
       КонецЕсли;
       НакопленоСумма = НакопленоСумма + СтрокаТЗ[ПоказательСтрокой];
     КонецЦикла;
  Иначе
     ПорядокСтрокой = "Убыв";
     ТЗ.Сортировать(ПоказательСтрокой + " " + ПорядокСтрокой);
     ТЗ.Колонки.Добавить("Класс");
     НакопленоСумма = 0;
     СуммаA = Итоги[ПоказательСтрокой] * ПроцентA / 100;
     СуммаAB = СуммаA + Итоги[ПоказательСтрокой] * ПроцентB / 100;
     СуммаABC = СуммаAB + Итоги[ПоказательСтрокой] * ПроцентC / 100;   //Все остальное D
     ТекущийКласс = "A";
     Для Каждого СтрокаТЗ Из ТЗ Цикл
       СтрокаТЗ.Класс = ТекущийКласс;
       НакопленоСумма = НакопленоСумма + СтрокаТЗ[ПоказательСтрокой];
       Если ТекущийКласс = "A" И НакопленоСумма > СуммаA Тогда ТекущийКласс = "B";
       ИначеЕсли ТекущийКласс = "B" И НакопленоСумма > СуммаAB Тогда ТекущийКласс = "C";
       ИначеЕсли ТекущийКласс = "C" И НакопленоСумма > СуммаABC Тогда ТекущийКласс = "D";
       КонецЕсли;
     КонецЦикла;
  КонецЕсли;
  //Конец Второго этапа: ТЗ преобразована и готова к выводу на экран.

  //Третий этап: Вывод через СКД в табличный документ, расположенный на форме 
  Результат.Очистить(); //Чистим Табличный документ от старых данных   
  ВнешниеНаборыДанных = Новый Структура("ТЗ", ТЗ); //Готовим внешний набор который передадим СКД
  СКДВ = ОтчетОбъект.ПолучитьМакет("СКДДляВывода"); //Получаем СКД Для Вывода из макетов Отчета;
  //Выбор нужного варианта настроек:
  НастройкиВ = СКДВ.ВариантыНастроек[?(СпособАнализа = 2, "Классы", "БезГрупп")].Настройки; 
  //Настройка варианта графического отображения:
  НастройкиВ.Структура[1].Использование = (Диаграмма = "Гистограмма");
  НастройкиВ.Структура[1].Выбор.Элементы[0].Поле = Новый ПолеКомпоновкиДанных(ПоказательСтрокой);
  НастройкиВ.Структура[2].Использование = (Диаграмма = "Круговая");
  НастройкиВ.Структура[2].Выбор.Элементы[0].Поле = Новый ПолеКомпоновкиДанных(ПоказательСтрокой);    
  //Настройка сортировки:  
  ЭлементыСортировки = НастройкиВ.Порядок.Элементы;
  ЭлементыСортировки.Очистить();
  ЭлементСортировки = ЭлементыСортировки.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
  ЭлементСортировки.Поле = Новый ПолеКомпоновкиДанных(ПоказательСтрокой);
  ЭлементСортировки.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных[ПорядокСтрокой];
  ЭлементСортировки.Использование = Истина;
  //Чтобы в итоговом отчете была Расшифровка, придется предпринять ряд шагов:

  ДанныеРасшифровкиКомпоновкиДанныхВ = Новый ДанныеРасшифровкиКомпоновкиДанных; //Сюда будут складываться данные для расшифровки
  КомпоновщикМакетаВ = Новый КомпоновщикМакетаКомпоновкиДанных;
  МакетКомпоновкиВ = КомпоновщикМакетаВ.Выполнить(СКДВ, НастройкиВ, ДанныеРасшифровкиКомпоновкиДанныхВ); //не забываем: данные для расшифровки
  ПроцессорКомпоновкиДанныхВ = Новый ПроцессорКомпоновкиДанных;
  ПроцессорКомпоновкиДанныхВ.Инициализировать(МакетКомпоновкиВ, ВнешниеНаборыДанных, ДанныеРасшифровкиКомпоновкиДанныхВ, Истина); 
  //^^^^ Предпоследний параметр: данные для расшифровки
  //^^^^Последний параметр - возможность использования внешних функций в компоновке, хотя они и не используются
  //Следующие 4 строки - вывод ТЗ в табличный документ:
  ПроцессорВыводаВ = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
  ПроцессорВыводаВ.УстановитьДокумент(Результат);
  ПроцессорВыводаВ.ОтображатьПроцентВывода = Истина;
  ПроцессорВыводаВ.Вывести(ПроцессорКомпоновкиДанныхВ);  
  //Передача через элемент формы, т.е. запоминаем адрес хранилища в параметре формы ДанныеРасшифровки
  ДанныеРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиКомпоновкиДанныхВ, ЭтаФорма.УникальныйИдентификатор);
  //Избавление от надписи... скорее всего можно побороть как-то еще.
  ОтображениеСостояния = ЭтаФорма.Элементы.Результат.ОтображениеСостояния;
 
 ОтображениеСостояния.Видимость = Ложь;
  ОтображениеСостояния.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.НеИспользовать;
  //Установка текущей страницы
  Элементы.Страницы.ТекущаяСтраница = Элементы.Результаты;
  //Конец третьего этапа, Табличный документ заполнен результатами расчета

КонецПроцедуры

Это все. Тут не описано некоторое количество вспомогательных функций, которые можно увидеть непосредствено в реализации. 

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    261758    1460    421    

1170

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    7170    373    shapa_pro    27    

68

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    20765    ovetgana    112    

115

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).

01.07.2025    11883    krasnoshchekovpavel    7    

68

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    11507    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Хорошая отчетная форма - сродни искусству. Есть какое-то невероятное эстетическое удовольствие в том, чтобы разобраться в логике учета и анализируемых показателях, спроектировать архитектуру хранения данных так, чтобы оптимально собрать эти показатели вместе с аналитическими разрезами в запросе, а затем настроить отображение так, чтобы, глядя на результат, сразу было понятно, что это за отчет и какие задачи он призван решать. Система компоновки данных - это моя первая, главная и, наверное, единственная "рабочая" любовь. Ее я использую везде, где только можно и где нельзя тоже. Хочу поделиться с вами некоторыми практическими приемами в работе с отчетами на СКД, которые, надеюсь, будут полезны.

27.02.2025    17084    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

СКД – инструмент, на базе которого в современных конфигурациях реализованы практически все отчеты. СКД используется в динамических списках, печатных формах и универсальных механизмах. Если построить простейший отчет может каждый разработчик, то с нюансами знакомы далеко не все. Расскажем о неочевидных на первый взгляд приемах, способных значительно повысить качество отчетов.

24.12.2024    14837    Akcium    17    

47

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    11958    AlexeyPROSTO_1C    1    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ivanov660 4972 12.08.13 10:18 Сейчас в теме
В некоторых случаях правильнее и проще будет использовать данные (ТЗ) не компоновки, а результата запроса. В этом случае также нет необходимости описывать поля как отметил автор, а достаточно использовать выгруженную таблицу как внешний набор данных для дальнейшей обработки. Хотя такой подход и применяется 1С-никами, к примеру, в УТ работа с источниками планирования.
2. mxm2 1285 12.08.13 10:35 Сейчас в теме
(1) ivanov660, Вы имеете ввиду первоначальную выборку данных? Если да, то в случае использования запроса, придется прописывать условия отборов (на форме располагать элементы), итоги и т.д. Что проще - спорный вопрос.
3. Yashazz 4922 13.08.13 14:24 Сейчас в теме
Я очень всяко делаю. Иногда СКД служит лишь для объявления компоновщика (отбор/сортировка на интерфейсе), иногда готовит полуфабрикат, выгоняя его в коллекцию нужного типа; иногда одна СКД вложена в другую.
Но в последнее время, с расширением возможностей языка выражений СКД, работы с коллекциями в вычисляемых полях и прочего, склоняюсь к мысли, что программная "прокладка" нужна всё реже. И вам советую.
Например, http://langslab.com/ebooks/skd/dcs-ch2/dcs-ex17 - покурите "ВычислитьВыражение" и его варианты.
Puk2; ViteG; ZanZiBar; Katik; zqzq; mxm2; +6 Ответить
4. mxm2 1285 13.08.13 14:51 Сейчас в теме
(3) Yashazz,
Например, http://langslab.com/ebooks/skd/dcs-ch2/dcs-ex17 - покурите "ВычислитьВыражение" и его варианты.

Спасибо за ссылку, весьма полезная инфа, раньше и не натыкался на такую, хотя и предполагал, что что-то подобное должно быть.
5. HEKPOH 76 13.08.13 19:47 Сейчас в теме
Тоже использую описанную автором методику :)
6. spaminfostart 2 09.09.13 13:24 Сейчас в теме
Понравилось оформление списка внизу формы. Реализовал у себя )
Прикрепленные файлы:
7. spaminfostart 2 11.09.13 10:45 Сейчас в теме
У меня ошибка:
{Отчет.ABCАнализНомИлиКлиентов.Форма.ФормаОтчета.Форма(136)}: Поле объекта не обнаружено (Поле)
НастройкиВ.Структура[1].Выбор.Элементы[0].Поле = Новый ПолеКомпоновкиДанных(ПоказательСтрокой);

Какие поля у Вас установлены в Диаграммах?
8. mxm2 1285 11.09.13 11:09 Сейчас в теме
(7) spaminfostart, Поле задается динамически, в зависимости от выбранного показателя, в настройках графического представления предварительно указан один из возможных показателей, кажется это Выручка.
9. spaminfostart 2 11.09.13 11:10 Сейчас в теме
Я так понял там нужно установить ЛЮБОЕ одно поле. А в коде мы всё равно его меняем.
10. mxm2 1285 11.09.13 12:25 Сейчас в теме
(9) spaminfostart, просто это гораздо проще чем его добавить в нулевую коллекцию...
11. spaminfostart 2 11.09.13 12:46 Сейчас в теме
(105) Gazza, предлагаю упомянуть об этом в описании ;)
12. spaminfostart 2 12.09.13 08:13 Сейчас в теме
(105) Gazza, если не затруднит, выложите пож модуль процедуры ЗаполнитьЭлементОтбораПоИД и другие, если есть связанные. А то я пока не могу скачать обработку.
13. spaminfostart 2 12.09.13 10:23 Сейчас в теме
(105) Gazza, или ещё лучше - вышлите пож обработку по почте:
14. spaminfostart 2 17.09.13 14:50 Сейчас в теме
15. пользователь 18.10.13 13:37
Сообщение было скрыто модератором.
...
16. sidka89 24.10.13 13:26 Сейчас в теме
спасибо за проделанную работу
17. AnKonAlm 29 16.02.14 14:21 Сейчас в теме
18. ZanZiBar 10.04.14 08:35 Сейчас в теме
Спасибо огромное. Очень помогли))
19. пользователь 30.06.14 22:12
Сообщение было скрыто модератором.
...
20. KVD77 17.09.14 17:13 Сейчас в теме
Тоже использую описанную автором методику, только в первом СКД поля описываю немного иначе, пример:

ВЫБРАТЬ
Значение(Справочник.<ИмяСправочника>.ПустаяСсылка) КАК Спр,
"" КАК СпрПолноеИмя,
Ложь КАК Выбран,
Значение(Документ.<ИмяСправочника>.ПустаяСсылка) КАК Док,
....
и т.д. по аналогии
21. c_andrey 01.04.16 13:15 Сейчас в теме
Скажите в обычном приложение этот отчет работать будет?
22. mxm2 1285 01.04.16 15:04 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация