СКД и выгрузка в excel

1. M_A_D 196 17.03.21 12:34 Сейчас в теме
Всем привет!

По причине моей неопытности возникают вопросы, которые, наверняка, решаются очень просто, но я не представляю как.

И так. Ситуация:
Есть внешний отчет на СКД. Мне нужно, каким-то образом его сформировать с заполнением параметров и отборов, а результат выгрузить в excel...

все что я осилил на текущий момент:

Схема = Отчеты._ЗадолженностьПоИнтерваламФИФО_42.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	
	КомпоновщикНастроекНастройки = Новый КомпоновщикНастроекКомпоновкиДанных;
	КомпоновщикНастроекНастройки.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
	КомпоновщикНастроекНастройки.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию);
	
	КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Дата", НачалоДня(ТекущаяДата()));
	
	НовыйЭлементОтбора = КомпоновщикНастроекНастройки.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	НовыйЭлементОтбора.ЛевоеЗначение = КомпоновщикНастроекНастройки.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Организация")).Поле;
	НовыйЭлементОтбора.ПравоеЗначение = "Андромеда Сервис";
	НовыйЭлементОтбора = КомпоновщикНастроекНастройки.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	НовыйЭлементОтбора.ЛевоеЗначение = КомпоновщикНастроекНастройки.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Партнер")).Поле;
	НовыйЭлементОтбора.ПравоеЗначение = "Электро";
		
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроекНастройки.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанных"));
Показать
По теме из базы знаний
Найденные решения
11. starik-2005 3160 17.03.21 13:30 Сейчас в теме
Отчет = Отчеты.МойОтчет.Создать();
Отчет.КомпоновщикНастроек.УстановитьЧто-то-тамПараметры("Параметр", Значение);
// ...
Таблица = Отчет.Сформировать();
Таблица.Записать("моййоксель.xlsx", что-то-тамТипДанныхТабличногоДокумента.XLSX);

Как-то так. Если заюзать синтаксис-помощник, то за минуты три делается.

ЗЫ: Нахрена народ для простых вещей все эти "парагенераторы" процессоров компоновки, вывода и прочую шелуху юзают? Статью что-ли написать, как отчет сформировать программно без всего этого г-на...
user1619761; M_A_D; +2 Ответить
17. M_A_D 196 17.03.21 15:29 Сейчас в теме
(16) метода объекта Сформировать нет)))
поэтому немного переписал все это вот в такое:

Отчет = Отчеты._ЗадолженностьПоИнтерваламФИФО_42.Создать();
	Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Дата", НачалоДня(ТекущаяДата()));
	
	НовыйЭлементОтбора = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	НовыйЭлементОтбора.ЛевоеЗначение = Отчет.КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Организация")).Поле;
	НовыйЭлементОтбора.ПравоеЗначение = "Андромеда Сервис";
	НовыйЭлементОтбора = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	НовыйЭлементОтбора.ЛевоеЗначение = Отчет.КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Партнер")).Поле;
	НовыйЭлементОтбора.ПравоеЗначение = "Электро";
	Таб1 = Новый ТабличныйДокумент;
	Отчет.СкомпоноватьРезультат(Таб1);
	Таб1.Записать("C:\Users\Morogov\Desktop\Обработки и отчеты\ERP\Отчет3.xls",ТипФайлаТабличногоДокумента.XLS);
Показать


однако же... получил ровно тоже самое... файл с пустой формой отчета... без данных....
baracuda; starik-2005; +2 Ответить
18. M_A_D 196 17.03.21 15:31 Сейчас в теме
(16) прошу прощения, сам туплю... какого-то фига я решил, что "Название компании" будет работать без конструкии Справочник.найтиПоНаименованию

Огромное спасибо!
все работает!
baracuda; starik-2005; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Nubsdale 17.03.21 12:42 Сейчас в теме
(1)
все что я осилил на текущий момент:

Так а какой вопрос?
4. M_A_D 196 17.03.21 12:46 Сейчас в теме
(2)
Есть внешний отчет на СКД. Мне нужно, каким-то образом его сформировать с заполнением параметров и отборов, а результат выгрузить в excel...
3. biimmap 2040 17.03.21 12:42 Сейчас в теме
Вам обязательно, чтоб результат был автоматом в виде файла?
Или может достаточно стандартной функции платформы Файл-Сохранить как?
5. M_A_D 196 17.03.21 12:47 Сейчас в теме
(3)нужно именно автоматом, т.к. после сохранения в эксель, полученный файлик еще будет отправляться в телеграмм в чат.
6. biimmap 2040 17.03.21 12:54 Сейчас в теме
ТабличныйДокумент.Записать(). параметры в синтаксис помощнике посмотрите.
Если платформа из последних, нужен асинхронный вызов НачатьЗапись. пример использования там же.
7. M_A_D 196 17.03.21 12:57 Сейчас в теме
(6)Тут проблема начинается на этапе получения данных для записи в табличный документ....
В моем коде нужно ведь что-то дописать, прежде чем я получу данные для записи в файл?
8. biimmap 2040 17.03.21 12:58 Сейчас в теме
(7) ТабличныйДокумент это поле которое есть в любом отчете. Оно по моему Результат называется. смотреть надо. Так что проблему Вы придумали.
9. M_A_D 196 17.03.21 13:09 Сейчас в теме
(8) РАЗОБРАЛСЯ!
Ваши сообщения натолкнули меня на решение:

	Схема = Отчеты._ЗадолженностьПоИнтерваламФИФО_42.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	
	КомпоновщикНастроекНастройки = Новый КомпоновщикНастроекКомпоновкиДанных;
	КомпоновщикНастроекНастройки.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
	КомпоновщикНастроекНастройки.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию);
	
	КомпоновщикНастроекНастройки.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Дата", НачалоДня(ТекущаяДата()));
	
	НовыйЭлементОтбора = КомпоновщикНастроекНастройки.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	НовыйЭлементОтбора.ЛевоеЗначение = КомпоновщикНастроекНастройки.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Организация")).Поле;
	НовыйЭлементОтбора.ПравоеЗначение = "Андромеда Сервис";
	НовыйЭлементОтбора = КомпоновщикНастроекНастройки.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	НовыйЭлементОтбора.ЛевоеЗначение = КомпоновщикНастроекНастройки.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Партнер")).Поле;
	НовыйЭлементОтбора.ПравоеЗначение = "Электро";
		
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроекНастройки.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанных"));
	ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; 
	ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
		
	ДанныеТЗ = Новый ТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДанныеТЗ);
	ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
	ДанныеТЗ.Записать("C:\Users\Morogov\Desktop\Обработки и отчеты\ERP\Отчет.xls",ТипФайлаТабличногоДокумента.XLS);
Показать
10. M_A_D 196 17.03.21 13:19 Сейчас в теме
(8)единственное, сейчас заметил, что по какой-то причине отчет сохранился пустой, т.к. есть все шапки, но содержимого нет....
Где-то я ошибся....
Прикрепленные файлы:
11. starik-2005 3160 17.03.21 13:30 Сейчас в теме
Отчет = Отчеты.МойОтчет.Создать();
Отчет.КомпоновщикНастроек.УстановитьЧто-то-тамПараметры("Параметр", Значение);
// ...
Таблица = Отчет.Сформировать();
Таблица.Записать("моййоксель.xlsx", что-то-тамТипДанныхТабличногоДокумента.XLSX);

Как-то так. Если заюзать синтаксис-помощник, то за минуты три делается.

ЗЫ: Нахрена народ для простых вещей все эти "парагенераторы" процессоров компоновки, вывода и прочую шелуху юзают? Статью что-ли написать, как отчет сформировать программно без всего этого г-на...
user1619761; M_A_D; +2 Ответить
12. user633533_encantado 12 17.03.21 13:42 Сейчас в теме
(11) Потому что так в примерах везде написано.

(9)
По факту все это надо если нужно таблицу значений или дерево из отчета получить, а не табличный документ.
13. M_A_D 196 17.03.21 14:05 Сейчас в теме
(12) тогда было бы не плохо понять в чем же я не прав....
14. starik-2005 3160 17.03.21 15:14 Сейчас в теме
(13)
в чем же я не прав....
Не парься -в интернете каждый в чем-то неправ )))
15. M_A_D 196 17.03.21 15:16 Сейчас в теме
(14) так мне бы разобраться как все же сделать так что бы мой код отрабатывал полностью, что бы выгружалось все а не только форма отчета....
16. starik-2005 3160 17.03.21 15:17 Сейчас в теме
(15) отрефлексируй месседж из (11)
17. M_A_D 196 17.03.21 15:29 Сейчас в теме
(16) метода объекта Сформировать нет)))
поэтому немного переписал все это вот в такое:

Отчет = Отчеты._ЗадолженностьПоИнтерваламФИФО_42.Создать();
	Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Дата", НачалоДня(ТекущаяДата()));
	
	НовыйЭлементОтбора = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	НовыйЭлементОтбора.ЛевоеЗначение = Отчет.КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Организация")).Поле;
	НовыйЭлементОтбора.ПравоеЗначение = "Андромеда Сервис";
	НовыйЭлементОтбора = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	НовыйЭлементОтбора.ЛевоеЗначение = Отчет.КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Партнер")).Поле;
	НовыйЭлементОтбора.ПравоеЗначение = "Электро";
	Таб1 = Новый ТабличныйДокумент;
	Отчет.СкомпоноватьРезультат(Таб1);
	Таб1.Записать("C:\Users\Morogov\Desktop\Обработки и отчеты\ERP\Отчет3.xls",ТипФайлаТабличногоДокумента.XLS);
Показать


однако же... получил ровно тоже самое... файл с пустой формой отчета... без данных....
baracuda; starik-2005; +2 Ответить
20. baracuda 2 15.01.25 09:30 Сейчас в теме
(17) спасибо ваш вариант сработал)
18. M_A_D 196 17.03.21 15:31 Сейчас в теме
(16) прошу прощения, сам туплю... какого-то фига я решил, что "Название компании" будет работать без конструкии Справочник.найтиПоНаименованию

Огромное спасибо!
все работает!
baracuda; starik-2005; +2 Ответить
19. starik-2005 3160 17.03.21 15:36 Сейчас в теме
(18) для совсем ленивых:
	Отчет = отчеты._МойСуперПуперОтчет.Создать();
	
	Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Параметр1", Значение1);
	
	Макет = Отчет.КомпоновщикНастроек.Настройки.ПараметрыВывода.Элементы.Найти("МакетОформления");
	Макет.Использование = Истина;
	Макет.Значение = "Арктика";
	
	Отчет.СкомпоноватьРезультат( Результат );
	Результат.Записать("Файло.xlsx", ТипФайлаТабличногоДокумента.XLSX);
Показать
(17) Ну вот, можешь ведь! )))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот