Имя: Пароль:
1C
1С v8
СКД - подскажите варианты реализации
0 ksergey
 
26.07.16
12:58
Добрый день.
Редко сталкиваюсь с отчетами на СКД, поэтому опыта мало.
Возникла задача: сделать отчет на СКД, но с доп.функционалом "Выгрузить данные в файл".

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

Подскажите возможные варианты решений, и где можно подсмотреть.

Спасибо
1 Nuobu
 
26.07.16
13:00
(0) кнопка сохранить и сохранить как.
2 Лодырь
 
26.07.16
13:01
Или как вариант
ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений
3 ksergey
 
26.07.16
13:02
(1) уточнение: данные результата запроса и данные выгружаемые в файл отличаются,  т.е. данные запроса - это основа для формируемого файла, но только частично
4 Очевидно
 
26.07.16
13:16
Если есть возможность запилить команду на форму тогда так :

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

//очищаем выбранные поля, т.к. для файла нужны свои поля
    Настройки.Выбор.Элементы.Очистить();

//устанавливаем поля для файла
    Поле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    Поле.Поле = Новый ПолеКомпоновкиДанных("Ссылка");
    Поле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    Поле.Поле = Новый ПолеКомпоновкиДанных("НомерВходящегоДокумента");

//компонуем результат в ТЗ
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    Процессор = Новый ПроцессорКомпоновкиДанных;
    Процессор.Инициализировать(Макет);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ТЗ = ПроцессорВывода.Вывести(Процессор);

//на основе ТЗ строим файл любого формата
    Для каждого СтрокаВыгрузки из ТЗ Цикл
7 ksergey
 
26.07.16
14:02
(6) спасибо