Добрый день.
Редко сталкиваюсь с отчетами на СКД, поэтому опыта мало.
Возникла задача: сделать отчет на СКД, но с доп.функционалом "Выгрузить данные в файл".
Сам отчет сложностей не вызывает.
Не понимаю как реализовать вывод данных (выводимые данные собираются на основе результата запроса) во внешний файл, чтобы это было реализовано в типовом отчете на СКД.
Подскажите возможные варианты решений, и где можно подсмотреть.
(1) уточнение: данные результата запроса и данные выгружаемые в файл отличаются, т.е. данные запроса - это основа для формируемого файла, но только частично
Если есть возможность запилить команду на форму тогда так :
&НаКлиенте
Процедура ОткрытьВЭксель(Команда)
СчетчикПопыток = 0;
УспешноЗаписанТемп = Ложь;
ИмяФайла = "1C_XPORT.XLS";
Пока не УспешноЗаписанТемп И СчетчикПопыток < 50 Цикл
подсматривай:
Это фрагмент процедуры в модуле отчета которая вызывается по специальной кнопке из формы отчета
//Получаем текущие настройки отчета
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
//очищаем выбранные поля, т.к. для файла нужны свои поля
Настройки.Выбор.Элементы.Очистить();
//устанавливаем поля для файла
Поле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
Поле.Поле = Новый ПолеКомпоновкиДанных("Ссылка");
Поле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
Поле.Поле = Новый ПолеКомпоновкиДанных("НомерВходящегоДокумента");
//компонуем результат в ТЗ
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
Процессор = Новый ПроцессорКомпоновкиДанных;
Процессор.Инициализировать(Макет);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТЗ = ПроцессорВывода.Вывести(Процессор);
//на основе ТЗ строим файл любого формата
Для каждого СтрокаВыгрузки из ТЗ Цикл
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший