Создание кнопки, которая делает выгрузку данных в Excel
Мне дали задачу создать кнопку, создал расширение, там создал кнопку на форме, но не выгружает в excel пишет, что " Не удается открыть файл так как формат или расширение этого файла являются недопустимыми". Возможно проблема где-то в коде, оставил ниже. Спасибо за ответ.
&НаСервере
Функция Расш1_ВыгрузкаВПСБПослеНаСервере()
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Макет = Документы.ВедомостьНаВыплатуЗарплатыВБанк.ПолучитьМакет("ВыгрузкаВПСБ");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| БанковскиеСчета.НомерСчета КАК Счет,
| Валюты.ОсновнаяВалюта.Наименование КАК Валюта,
| ВедомостьНаВыплатуЗарплатыЗарплата.Сумма КАК СуммаКПеречислению,
| ФизическиеЛицаПрисоединенныеФайлы.Автор.ФизическоеЛицо.Фамилия КАК Фамилия,
| ФизическиеЛицаПрисоединенныеФайлы.Автор.ФизическоеЛицо.Имя КАК Имя,
| ФизическиеЛицаПрисоединенныеФайлы.Автор.ФизическоеЛицо.Отчество КАК Отчество,
| СогласиеНаОбработкуПерсональныхДанных.ПаспортныеДанные КАК ПаспортныеДанные,
| ЗаявкаНаОткрытиеЛицевыхСчетовСотрудниковСотрудники.ТабельныйНомер КАК ТабельныйНомерСотрудника
|ИЗ
| Документ.ВедомостьНаВыплатуЗарплаты.Зарплата КАК ВедомостьНаВыплатуЗарплатыЗарплата
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчета КАК БанковскиеСчета
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Валюты
| ПРАВОЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаОткрытиеЛицевыхСчетовСотрудников.Сотрудники КАК ЗаявкаНаОткрытиеЛицевыхСчетовСотрудниковСотрудники
| ПО ЗаявкаНаОткрытиеЛицевыхСчетовСотрудниковСотрудники.ВалютаВклада = Валюты.Ссылка
| ПО БанковскиеСчета.ВалютаДенежныхСредств = Валюты.Ссылка
| ПО ВедомостьНаВыплатуЗарплатыЗарплата.БанковскийСчет = БанковскиеСчета.Ссылка,
| Справочник.ФизическиеЛицаПрисоединенныеФайлы КАК ФизическиеЛицаПрисоединенныеФайлы,
| Документ.СогласиеНаОбработкуПерсональныхДанных КАК СогласиеНаОбработкуПерсональныхДанных";
РезультатЗапроса = Запрос.Выполнить();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
ТабДок=Новый ТабличныйДокумент;
ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
Возврат ТабДок;
КонецФункции
&НаКлиенте
Процедура Расш1_ВыгрузкаВПСБПосле(Команда)
//Расш1_ВыгрузкаВПСБПослеНаСервере();
ТабДок1 = Новый ТабличныйДокумент;
ТабДок1=Расш1_ВыгрузкаВПСБПослеНаСервере();
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогВыбораФайла.МножественныйВыбор = Ложь;
ДиалогВыбораФайла.Заголовок = "Ведомость №_ от_";
ДиалогВыбораФайла.Фильтр = "Файл Excel (*.xlsx)|*.xlsx";
Если ДиалогВыбораФайла.Выбрать() Тогда
ПолноеИмяФайла=ДиалогВыбораФайла.ПолноеИмяФайла;
ТабДок1=ПолноеИмяФайла;
КонецЕсли;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2/3.0
- Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы
- Excel Studio for 1C V2.11
- Загрузка данных из ОФД в 1С:Бухгалтерию 3.0, 1С:КА 2.4, 2.5, УНФ 1.6/3.0 о денежных поступлениях (чеках)
- Универсальная загрузка данных формата Excel
Найденные решения
Можно так
&НаКлиенте
Процедура Команда1(Команда)
ТабДок = Новый ТабличныйДокумент();
ТабДок.Область(1,1,1,1).Текст = "Привет";
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Фильтр = НСтр("ru = 'Файл Excel |*.XLSX'");
Оповещение = Новый ОписаниеОповещения("ДиалогСохранениеФайлаЗавершение", ЭтотОбъект, Новый Структура("ТабДок", ТабДок));
Диалог.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ДиалогСохранениеФайлаЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
Если ТипЗнч(ВыбранныеФайлы) = Тип("Массив") Тогда
Если ВыбранныеФайлы.Количество() > 0 Тогда
ПутьКФайлу = ВыбранныеФайлы[0];
СохранитьФайл(ПутьКФайлу, ДополнительныеПараметры.ТабДок);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьФайл(ПутьКФайлу, ТабДок)
ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Можно так
&НаКлиенте
Процедура Команда1(Команда)
ТабДок = Новый ТабличныйДокумент();
ТабДок.Область(1,1,1,1).Текст = "Привет";
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Фильтр = НСтр("ru = 'Файл Excel |*.XLSX'");
Оповещение = Новый ОписаниеОповещения("ДиалогСохранениеФайлаЗавершение", ЭтотОбъект, Новый Структура("ТабДок", ТабДок));
Диалог.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ДиалогСохранениеФайлаЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
Если ТипЗнч(ВыбранныеФайлы) = Тип("Массив") Тогда
Если ВыбранныеФайлы.Количество() > 0 Тогда
ПутьКФайлу = ВыбранныеФайлы[0];
СохранитьФайл(ПутьКФайлу, ДополнительныеПараметры.ТабДок);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьФайл(ПутьКФайлу, ТабДок)
ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);
КонецПроцедуры
Показать
(5) Ты так сделал?
&НаКлиенте
+процедурки выше
&НаКлиенте
Процедура Расш1_ВыгрузкаВПСБПосле(Команда)
//Расш1_ВыгрузкаВПСБПослеНаСервере();
//ТабДок1 = Новый ТабличныйДокумент;
ТабДок1 = Расш1_ВыгрузкаВПСБПослеНаСервере();
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Фильтр = НСтр("ru = 'Файл Excel |*.XLSX'");
Оповещение = Новый ОписаниеОповещения("ДиалогСохранениеФайлаЗавершение", ЭтотОбъект, Новый Структура("ТабДок", ТабДок));
Диалог.Показать(Оповещение);
КонецПроцедуры
Показать+процедурки выше
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот