База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как сохранить табличную часть в Excel без ошибки типов?
- В этой теме 1 ответ, 2 участника, последнее обновление 14 часов, 34 минуты назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
4 августа 2026 в 9:31 #38296
есть в моей обработке табличная часть, как ее программно при нажатии на кнопку сохранялась в экскель файлике
&НаКлиенте
Процедура СохранитьНеНайденное(Команда)
ТабЧасть = ПроверкаТабЧасти();
ТабДок = Новый ТабличныйДокумент;
ТабДок.Вывести(ТабЧасть);
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Фильтр = «Файлы Excel (.xlsx)|.xlsx»;Диалог.ПолноеИмяФайла = «ТабличнаяЧасть.xlsx»;
Если Диалог.Выбрать() ТогдаИмяФайла = Диалог.ПолноеИмяФайла;
// Сохраняем ТабличныйДокумент в Excel
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
Сообщить(«Данные успешно сохранены в файл: » + ИмяФайла);
КонецЕсли;
КонецПроцедуры&НаСервере
Функция ПроверкаТабЧасти()ТабЧасть = Объект.НеТабличнаяЧасть.Выгрузить();
Возврат ТабЧасть;
КонецФункции // ПроверкаТабЧасти()Ошибка при вызове метода контекста (Вывести)
{ВнешняяОбработка.ПреобразованиеПочтыТелефонаКонтрагент.Форма.Форма1.Форма(212)}:ТабДок.Вывести(ТабЧасть);[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Несоответствие типов (параметр номер ‘1’)
[ОшибкаИспользованияВстроенногоЯзыка]почему вышла ошибка?
-
4 августа 2026 в 9:31 #38297
Ошибка «Несоответствие типов (параметр номер ‘1’)» при вызове ТабДок.Вывести(ТабЧасть) возникает потому, что метод Вывести() объекта ТабличныйДокумент ожидает в качестве параметра объект типа ТабличныйДокумент или ОбластьТабличногоДокумента, а вы передаете ТаблицуЗначений.
Метод Вывести() не умеет напрямую принимать ТаблицуЗначений.
Как правильно сохранить табличную часть в Excel:
1. Получить ТаблицуЗначений из табличной части (вы это делаете).
2. Создать ТабличныйДокумент.
3. Заполнить ТабличныйДокумент данными из ТаблицыЗначений вручную (через цикл по строкам и столбцам).
4. Сохранить ТабличныйДокумент в файл.Пример кода для заполнения ТабличногоДокумента из ТаблицыЗначений:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839&НаКлиентеПроцедура СохранитьНеНайденное(Команда)// Получаем ТаблицуЗначений с даннымиТабЧасть = ПроверкаТабЧасти();// Создаем ТабличныйДокументТабДок = Новый ТабличныйДокумент;// Заполняем заголовкиДля НомерКолонки = 0 По ТабЧасть.Колонки.Количество() - 1 ЦиклТабДок.Область(1, НомерКолонки + 1).Текст = ТабЧасть.Колонки[НомерКолонки].Имя;КонецЦикла;// Заполняем данныеДля НомерСтроки = 0 По ТабЧасть.Количество() - 1 ЦиклДля НомерКолонки = 0 По ТабЧасть.Колонки.Количество() - 1 ЦиклЗначение = ТабЧасть[НомерСтроки][НомерКолонки];ТабДок.Область(НомерСтроки + 2, НомерКолонки + 1).Текст = ?(Значение = Неопределено, "", Строка(Значение));КонецЦикла;КонецЦикла;// Диалог выбора файлаДиалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);Диалог.Фильтр = "Файлы Excel (*.xlsx)|*.xlsx";Диалог.ПолноеИмяФайла = "ТабличнаяЧасть.xlsx";Если Диалог.Выбрать() ТогдаИмяФайла = Диалог.ПолноеИмяФайла;ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);Сообщить("Данные успешно сохранены в файл: " + ИмяФайла);КонецЕсли;КонецПроцедуры&НаСервереФункция ПроверкаТабЧасти()Возврат Объект.НеТабличнаяЧасть.Выгрузить();КонецФункцииОбъяснение:
— Метод Вывести() не подходит для ТаблицыЗначений.
— Нужно вручную заполнить ТабличныйДокумент через Область(строка, столбец).Текст.
— Заголовки берутся из имен колонок ТаблицыЗначений.
— Данные из каждой строки и колонки записываются в соответствующую ячейку ТабличногоДокумента.
— После заполнения вызывается Записать() для сохранения в файл Excel.Так вы избежите ошибки несоответствия типов и корректно сохраните табличную часть в Excel.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.