Создание кнопки, которая делает выгрузку данных в Excel

1. Reflection0504 10.09.24 20:56 Сейчас в теме
Мне дали задачу создать кнопку, создал расширение, там создал кнопку на форме, но не выгружает в excel пишет, что " Не удается открыть файл так как формат или расширение этого файла являются недопустимыми". Возможно проблема где-то в коде, оставил ниже. Спасибо за ответ.

 &НаСервере
 Функция Расш1_ВыгрузкаВПСБПослеНаСервере()   
    
	
	//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	
	Макет = Документы.ВедомостьНаВыплатуЗарплатыВБанк.ПолучитьМакет("ВыгрузкаВПСБ");
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	БанковскиеСчета.НомерСчета КАК Счет,
		|	Валюты.ОсновнаяВалюта.Наименование КАК Валюта,
		|	ВедомостьНаВыплатуЗарплатыЗарплата.Сумма КАК СуммаКПеречислению,
		|	ФизическиеЛицаПрисоединенныеФайлы.Автор.ФизическоеЛицо.Фамилия КАК Фамилия,
		|	ФизическиеЛицаПрисоединенныеФайлы.Автор.ФизическоеЛицо.Имя КАК Имя,
		|	ФизическиеЛицаПрисоединенныеФайлы.Автор.ФизическоеЛицо.Отчество КАК Отчество,
		|	СогласиеНаОбработкуПерсональныхДанных.ПаспортныеДанные КАК ПаспортныеДанные,
		|	ЗаявкаНаОткрытиеЛицевыхСчетовСотрудниковСотрудники.ТабельныйНомер КАК ТабельныйНомерСотрудника
		|ИЗ
		|	Документ.ВедомостьНаВыплатуЗарплаты.Зарплата КАК ВедомостьНаВыплатуЗарплатыЗарплата
		|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчета КАК БанковскиеСчета
		|			ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Валюты
		|				ПРАВОЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаОткрытиеЛицевыхСчетовСотрудников.Сотрудники КАК ЗаявкаНаОткрытиеЛицевыхСчетовСотрудниковСотрудники
		|				ПО ЗаявкаНаОткрытиеЛицевыхСчетовСотрудниковСотрудники.ВалютаВклада = Валюты.Ссылка
		|			ПО БанковскиеСчета.ВалютаДенежныхСредств = Валюты.Ссылка
		|		ПО ВедомостьНаВыплатуЗарплатыЗарплата.БанковскийСчет = БанковскиеСчета.Ссылка,
		|	Справочник.ФизическиеЛицаПрисоединенныеФайлы КАК ФизическиеЛицаПрисоединенныеФайлы,
		|	Документ.СогласиеНаОбработкуПерсональныхДанных КАК СогласиеНаОбработкуПерсональныхДанных";
	
	РезультатЗапроса = Запрос.Выполнить(); 
	
	
	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
	ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
	ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
	ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

	ТабДок=Новый ТабличныйДокумент;
	ТабДок.Очистить();
	ТабДок.Вывести(ОбластьЗаголовок);
	ТабДок.Вывести(ОбластьШапкаТаблицы);
	ТабДок.НачатьАвтогруппировкуСтрок();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
		ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
	КонецЦикла;
	
	ТабДок.ЗакончитьАвтогруппировкуСтрок();
	ТабДок.Вывести(ОбластьПодвалТаблицы);
	ТабДок.Вывести(ОбластьПодвал);            
	
	
	//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА   
	
	Возврат ТабДок; 

	 КонецФункции
	
&НаКлиенте
Процедура Расш1_ВыгрузкаВПСБПосле(Команда) 
//Расш1_ВыгрузкаВПСБПослеНаСервере();  
    ТабДок1 = Новый ТабличныйДокумент;
	ТабДок1=Расш1_ВыгрузкаВПСБПослеНаСервере();  
	
	
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);   
ДиалогВыбораФайла.МножественныйВыбор = Ложь;   
ДиалогВыбораФайла.Заголовок = "Ведомость №_ от_";  
ДиалогВыбораФайла.Фильтр = "Файл Excel (*.xlsx)|*.xlsx";
Если ДиалогВыбораФайла.Выбрать() Тогда  
ПолноеИмяФайла=ДиалогВыбораФайла.ПолноеИмяФайла;   
ТабДок1=ПолноеИмяФайла;
КонецЕсли;
	КонецПроцедуры
Показать
По теме из базы знаний
Найденные решения
3. lone_mayson 49 10.09.24 21:16 Сейчас в теме
Можно так

&НаКлиенте
Процедура Команда1(Команда)
	
	ТабДок = Новый ТабличныйДокумент();
	ТабДок.Область(1,1,1,1).Текст = "Привет";
	
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
	Диалог.Фильтр = НСтр("ru = 'Файл Excel |*.XLSX'");	
	Оповещение = Новый ОписаниеОповещения("ДиалогСохранениеФайлаЗавершение", ЭтотОбъект, Новый Структура("ТабДок", ТабДок));
	Диалог.Показать(Оповещение);
		
КонецПроцедуры

&НаКлиенте
Процедура ДиалогСохранениеФайлаЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт

	Если ТипЗнч(ВыбранныеФайлы) = Тип("Массив") Тогда
		Если ВыбранныеФайлы.Количество() > 0 Тогда
			ПутьКФайлу = ВыбранныеФайлы[0];
			СохранитьФайл(ПутьКФайлу, ДополнительныеПараметры.ТабДок);			
		КонецЕсли;
	КонецЕсли;	
	
КонецПроцедуры

&НаКлиенте
Процедура СохранитьФайл(ПутьКФайлу, ТабДок)
	
	ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);	
	
КонецПроцедуры
Показать
VyacheslavShilov; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user2033930 10.09.24 20:59 Сейчас в теме
Продолжай наблюдать, и делиться своими достижениями. Мы гордимся тобой!
3. lone_mayson 49 10.09.24 21:16 Сейчас в теме
Можно так

&НаКлиенте
Процедура Команда1(Команда)
	
	ТабДок = Новый ТабличныйДокумент();
	ТабДок.Область(1,1,1,1).Текст = "Привет";
	
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
	Диалог.Фильтр = НСтр("ru = 'Файл Excel |*.XLSX'");	
	Оповещение = Новый ОписаниеОповещения("ДиалогСохранениеФайлаЗавершение", ЭтотОбъект, Новый Структура("ТабДок", ТабДок));
	Диалог.Показать(Оповещение);
		
КонецПроцедуры

&НаКлиенте
Процедура ДиалогСохранениеФайлаЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт

	Если ТипЗнч(ВыбранныеФайлы) = Тип("Массив") Тогда
		Если ВыбранныеФайлы.Количество() > 0 Тогда
			ПутьКФайлу = ВыбранныеФайлы[0];
			СохранитьФайл(ПутьКФайлу, ДополнительныеПараметры.ТабДок);			
		КонецЕсли;
	КонецЕсли;	
	
КонецПроцедуры

&НаКлиенте
Процедура СохранитьФайл(ПутьКФайлу, ТабДок)
	
	ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);	
	
КонецПроцедуры
Показать
VyacheslavShilov; +1 Ответить
5. Reflection0504 10.09.24 21:28 Сейчас в теме
(3) К сожалению-неправильно, кнопка перестала срабатывать.
4. starjevschik 10.09.24 21:27 Сейчас в теме
Стажировка - это же после образования?
6. lone_mayson 49 10.09.24 21:39 Сейчас в теме
(5) Ты так сделал?
&НаКлиенте
Процедура Расш1_ВыгрузкаВПСБПосле(Команда)

	//Расш1_ВыгрузкаВПСБПослеНаСервере();
	
	//ТабДок1 = Новый ТабличныйДокумент;
	ТабДок1 = Расш1_ВыгрузкаВПСБПослеНаСервере();
	
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
	Диалог.Фильтр = НСтр("ru = 'Файл Excel |*.XLSX'");    
	Оповещение = Новый ОписаниеОповещения("ДиалогСохранениеФайлаЗавершение", ЭтотОбъект, Новый Структура("ТабДок", ТабДок));
	Диалог.Показать(Оповещение);

КонецПроцедуры
Показать


+процедурки выше
VyacheslavShilov; +1 Ответить
7. Reflection0504 10.09.24 21:47 Сейчас в теме
(6) Спасибо огромное, вы герой. На этот раз сработало, до этого создал отдельную процедуру, а не вставил вышеуказанный код.
Оставьте свое сообщение

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